新員工入職自動加入所在部門的郵件組。,所在郵件組
需求:公司每次有新員工入職的時候,都需要手動的把這些人加入相應的所在部門的郵件組,以方便他們能接收到部門領導發的最新指示。兩三個人還好說,但是人多了手動一個一個的添加就沒意思了。所以為了不想再做這些無用功,也為了自動化營運。所以編寫了下面的代碼。歡迎各位大神提出富貴的意見。
提示:跟據HR資料提取的人員資訊
1 #!/usr/bin/python 2 # coding:utf-8 3 4 import sys 5 sys.path.append('/sw/systems/shared/python') 6 from DB import DB 7 con,cur = DB().connect() 8 9 from Company import Company #匯入公司員工模組10 company = Company() 11 users = company.employees #擷取所有人員12 departments = company.departments #擷取所有人員所在的部門13 14 from AD import AD #匯入AD模組15 ad = AD()16 ad_users = ad.get_users() #擷取所有ad域使用者17 18 user_list = {}19 for key in users:20 city = users[key]['location_code'].lower()21 dep = users[key]['department'].lower()22 username = users[key]['username'].strip()23 24 if dep and city:25 user_list.setdefault(dep,[])26 user_list[dep].append(username)27 user_list.setdefault(dep+city,[]) #以部門+城市命令形成新的郵件組 hrbj28 user_list[dep+city].append(username)29 user_list.setdefault('base%s' %city,[])30 user_list['base%s' % city].append(username)31 if username not in ['cbremble','nkovalevich','nrich','isugarman']: #排除高管32 user_list.setdefault('attendance%s' % city,[])33 user_list['attendance%s'% city].append(username)34 35 36 user_list.setdefault('prod',[])37 user_list.setdefault('prod%s' % city,[])38 user_list['prod%s'% city].append(username)39 user_list['prod'].append(username)40
#擷取目前正在使用的郵箱組資訊41 def mail_forward():42 query = """ SELECT name,forward_name from mail.forward """ 43 cur.execute(query)44 results = cur.fetchall()45 forwards = {}46 for result in results:47 name = result['name']48 forward_name = result['forward_name'].lower().strip()49 forwards.setdefault(name,[])50 forwards[name].append(forward_name)51 return forwards52 53 forwards = mail_forward()54 55 try:56 for dep in user_list:57 if dep in forwards.keys():58 if dep:59 need_add_alias = set(user_list[dep]) - set(forwards[dep]) #用hr資料庫所有部門的人員和郵件資料庫所有以部門命名的郵件組做比較60 else:61 need_add_alias = user_list[dep]62 if need_add_alias:63 for user in need_add_alias:64 if user not in ad_users: #判斷使用者是否在AD裡65 pass 66 else:67 add_forward = """insert ignore into mail.forward(name,forward_name,status,description) values ('%s','%s','Enabled','script import') """ % (dep,user)68 cur.execute(add_forward)69 con.commit()70 except Exception,e:71 print type(e),e