Ejemplo n.º 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)
Ejemplo n.º 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