Beispiel #1
0
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)
Beispiel #2
0
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
Beispiel #3
0
    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