def update_user(emps): """ 更新服务器人员信息,使之与redis 同步 """ if emps: pin_dict = dict([(format_pin(e.get("PIN")), e) for e in emps]) emp_objs = Employee.all_objects.filter(PIN__in=pin_dict.keys()) db_emps_dict = emp_objs and dict([(e.PIN, e) for e in emp_objs]) or {} param_pins = pin_dict.keys() # redis 中存在的人员PIN db_pins = db_emps_dict.keys() # 数据库中存在的人员 insert_emps = set(param_pins) - set(db_pins) update_emps = set(db_pins) for e in insert_emps: if pin_dict.has_key(e): emp_dict = pin_dict.get(e) emp = Employee() emp = set_user(emp_dict, emp) emp.DeptID_id = 1 emp.from_dev = True try: super(Employee, emp).save() except IntegrityError: conn._rollback() conn.close() db_emps_dict[e] = Employee.all_objects.filter( PIN__exact=format_pin(emp_dict.get("PIN")))[0] update_emps.add(e) continue #保存卡 if emp_dict.has_key("Card"): if emp_dict.get("Card"): set_card(emp, emp_dict.get("Card")) '''保存区域''' save_area(emp.id, emp.PIN) for e in update_emps: if db_emps_dict.has_key(e) and pin_dict.has_key(e): emp_dict = pin_dict.get(e) emp = db_emps_dict.get(e) emp = set_user(emp_dict, emp) emp.from_dev = True super(Employee, emp).save() #保存卡 if emp_dict.has_key("Card"): if emp_dict.get("Card"): set_card(emp, emp_dict.get("Card")) '''更新''' save_area(emp.id, emp.PIN)
def save_addition_emp(pin): ''' 将人员新增到数据库 ''' from mysite.personnel.models import Employee pin = format_pin(pin) emp = Employee() emp.PIN = pin emp.EName = '' #str(pin) emp.DeptID_id = 1 emp.from_dev = True try: super(Employee, emp).save() eid = emp.id except IntegrityError: eid = get_uid_by_pin(pin) finally: # '''保存区域''' save_area(eid, pin) return eid
def process_row(self, row_data, calculate_dict): u''' 特殊情况给开发人员提供的接口 row_data 这一行的数据 calculate_dict 文档附加的列,如人员编号, 记录表是没有人员编号的,人员编号是用来初始化员工字段UserID的 ''' from mysite.personnel.models import Employee #print "calculate_dict:",calculate_dict,"\n" key = u"%s" % _(u"人员编号") emp_pin = u"%s" % calculate_dict[key] emp_pin = format_pin(emp_pin) try: obj_emp = Employee.all_objects.get(PIN=emp_pin) except: #判断是使用默认还是创建新的人员 obj_emp = Employee() obj_emp.PIN = emp_pin obj_emp.DeptID_id = 1 obj_emp.save() row_data["userid"] = u"%s" % obj_emp.pk #初始化人员 return row_data