Example #1
0
 def action(self):
     import datetime
     emp = self.object.UserID
     if emp.isblacklist == 1:
         raise Exception(_(u'黑名单不能处理离职恢复!'))
     emp.__class__.can_restore = True
     emp.isblacklist = None
     emp.status = STATUS_OK
     emp.Hiredday = datetime.datetime.now().strftime("%Y-%m-%d")
     emp.save()
     emp.__class__.can_restore = False
     #下载到设备
     newObj = self.object.UserID
     from mysite.iclock.models.dev_comm_operate import sync_set_userinfo, sync_set_user_privilege, sync_set_acc_user_fingerprint  #-----2012.02.02   xiaoxiaojun
     #sync_set_user(newObj.search_device_byuser(), [newObj])
     accdev = newObj.search_accdev_byuser()  #查询出人员对那些设备具有操作权限
     sync_set_userinfo(accdev, [newObj])  #同步人员基本信息到设备
     sync_set_acc_user_fingerprint(accdev, [newObj])  #同步人员指纹信息到设备
     sync_set_user_privilege(accdev, [newObj])  #下放人员权限到设备
     from base.sync_api import SYNC_MODEL
     if not SYNC_MODEL:
         # 离职恢复
         from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
         adj_user_cmmdata(newObj, [], newObj.attarea.all())
     self.object.delete()
Example #2
0
        def save(self, **args):
            try:
                try:
                   self.PIN = str(int(self.PIN))
                except:
                   raise Exception(_(u'人员编号只能为数字'))
                if int(self.PIN) == 0:
                    raise Exception(_(u'人员编号不能为0'))

                self.PIN = format_pin(self.PIN)

                tmp = Employee.all_objects.filter(PIN__exact=self.PIN)

                if len(tmp) > 0 and tmp[0].id != self.id:   #编辑状态
                    raise Exception(_(u'人员编号: %s 已存在') % self.PIN)
                
               
                if self.Card:#新增或编缉了卡号时
                    tmpcard = Employee.all_objects.filter(Card=self.Card)
                    if tmpcard and tmpcard[0].id != self.id:#此处主要用于批量发卡重复卡号的处理
                        tmpcard[0].Card = ''
                        tmpcard[0].save(force_update=True)#清空原有的,新的写入
                    
                    
                #emp = Employee.objects.filter(id=self.pk)
                #对密码进行加密
                if self.Password!="" or None:
                    if len(tmp) !=0:
                        if tmp[0].Password == self.Password:
                            pass
                        else:
                            self.Password = encrypt(self.Password)
                    else:
                        self.Password = encrypt(self.Password)
    
                super(Employee, self).save(**args)
                installed_apps = settings.INSTALLED_APPS
                if self.Card :#新增或编缉了卡号时
                    IssueCard = self.__class__.issuecard_set.related.model
                    tmp_issuecare = IssueCard.objects.filter(UserID=self, cardno=self.Card)
                    if not tmp_issuecare:
                        issuecard = IssueCard()
                        issuecard.UserID = self
                        issuecard.cardno = self.Card
                        issuecard.issuedate = datetime.datetime.now().strftime("%Y-%m-%d")
                        issuecard.save()

                    if "mysite.att" in installed_apps and (len(tmp)==0 or (tmp and tmp[0].Card!=self.Card)):#zkeco+zktime
                        from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
                        adj_user_cmmdata(self, [], self.attarea.all())
                            #sync_set_user(self.search_device_byuser(), [self])
            except Exception, e:
                    import traceback; traceback.print_exc();
                    raise e
Example #3
0
 def action(self):
     import datetime
     emp = self.object.UserID
     if emp.isblacklist == 1:
         raise Exception(_(u'黑名单不能处理离职恢复!'))
     emp.__class__.can_restore = True
     emp.isblacklist = None
     emp.status = STATUS_OK
     emp.Hiredday = datetime.datetime.now().strftime("%Y-%m-%d")
     emp.save()
     emp.__class__.can_restore = False
     #下载到设备
     newObj = self.object.UserID
     from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
     #sync_set_user(newObj.search_device_byuser(), [newObj])
     adj_user_cmmdata(newObj, [], newObj.attarea.all())
     self.object.delete()
Example #4
0
 def action(self):
     import datetime
     emp=self.object.UserID
     if emp.isblacklist==1:
         raise Exception(_(u'黑名单不能处理离职恢复!'))
     emp.__class__.can_restore=True
     emp.isblacklist=None
     emp.status=STATUS_OK
     emp.Hiredday=datetime.datetime.now().strftime("%Y-%m-%d")
     emp.save()
     emp.__class__.can_restore=False
     #下载到设备
     newObj=self.object.UserID
     from mysite.iclock.models.model_cmmdata import adj_user_cmmdata                      
     #sync_set_user(newObj.search_device_byuser(), [newObj])
     adj_user_cmmdata(newObj,[],newObj.attarea.all())
     self.object.delete()
Example #5
0
        def action(self):
            from mysite.personnel.models.model_emp import Employee
            #from mysite.iclock.models.dev_comm_operate import sync_delete_user,sync_set_user
            from base.sync_api import SYNC_MODEL
            if not SYNC_MODEL:
                from mysite.iclock.models.model_cmmdata import adj_user_cmmdata, save_userarea_together
            import copy
            import datetime
            emps = self.request.POST.getlist('mutiple_emp')
            area = self.request.POST.getlist('AreaSelect')
            deptflag = self.request.POST.get('mutiple_emp_dept_all')
            if deptflag:  #按部门选择
                deptIDs = self.request.POST.getlist('deptIDs')
                emps = Employee.objects.filter(DeptID__in=deptIDs)
            datalist = []
            print len(emps)  #注意不能屏蔽掉~ 处理sqlserver2005的时候 为区域分配人员 仅分配100个人
            if len(emps) > 200:
                raise Exception(_(u'人员选择过多!'))
            for i in emps:
                if deptflag:
                    emp = Employee.objects.get(pk=i.pk)
                else:
                    emp = Employee.objects.get(pk=i)


#                    if emp.check_accprivage():
#                        devs=emp.search_device_byuser()
#                        sync_delete_user(devs, [emp])
                oldarea = ["%s" % u.pk for u in emp.attarea.select_related()]

                empchange = emp.__class__.empchange_set.related.model()
                empchange.UserID = emp
                empchange.changepostion = 4
                empchange.oldvalue = ",".join([
                    "%s" % i
                    for i in emp.attarea.select_related().values_list('pk')
                ])
                empchange.newvalue = ",".join(area)
                empchange.newids = [int(i) for i in area if i]
                empchange.changedate = datetime.datetime.now()
                empchange.save()

                emp.attarea = tuple(area)
                emp.save()
                #新增下载人员信息

                #sync_set_user(emp.search_device_byuser(), [emp])
                if not SYNC_MODEL:
                    datalist.append(
                        adj_user_cmmdata(emp,
                                         Area.objects.filter(pk__in=oldarea),
                                         emp.attarea.all(), True))

            if not SYNC_MODEL:
                save_userarea_together(Employee.objects.filter(pk__in=emps),
                                       Area.objects.filter(pk__in=area),
                                       datalist)
Example #6
0
                def action(self, area):
                        from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
                        oldObj = self.object
                        import copy
                        oldarea = copy.deepcopy(oldObj.attarea.all())

                        empchange = self.object.__class__.empchange_set.related.model()
                        empchange.UserID = self.object
                        empchange.changepostion = 4
                        empchange.oldvalue = ",".join(["%s" % i.pk for i in  self.object.attarea.all()])
                        empchange.newvalue = ",".join(["%s" % i.pk for i in  area])
                        empchange.changedate = datetime.datetime.now()
                        empchange.save(log_msg=False, force_insert=True)

                        self.object.attarea = area
                        self.object.save(log_msg=False)
                        newObj = self.object

                        adj_user_cmmdata(self.object, Area.objects.filter(pk__in=oldarea), area)
Example #7
0
          def action(self):
               from  mysite.personnel.models.model_emp import Employee
               #from mysite.iclock.models.dev_comm_operate import sync_delete_user,sync_set_user
               from mysite.iclock.models.model_cmmdata import adj_user_cmmdata,save_userarea_together
               import copy
               import datetime
               emps = self.request.POST.getlist('mutiple_emp')
               area =self.request.POST.getlist('AreaSelect')
               deptflag=self.request.POST.get('dept_all')
               if deptflag: #按部门选择
                  deptIDs=self.request.POST.getlist('deptIDs')
                  emps =Employee.objects.filter(DeptID__in=deptIDs)
               datalist=[] 
               print len(emps) #注意不能屏蔽掉~ 处理sqlserver2005的时候 为区域分配人员 仅分配100个人
               for i in emps:
                    if deptflag:
                        emp=Employee.objects.get(pk=i.pk)
                    else:
                        emp=Employee.objects.get(pk=i)
#                    if emp.check_accprivage():
#                        devs=emp.search_device_byuser()
#                        sync_delete_user(devs, [emp]) 
                    oldarea=["%s"%u.pk for u in emp.attarea.select_related()]
                    
                    empchange=emp.__class__.empchange_set.related.model()
                    empchange.UserID=emp
                    empchange.changepostion=4
                    empchange.oldvalue=",".join(["%s"%i for i in  emp.attarea.select_related().values_list('pk')] )         
                    empchange.newvalue=",".join(area)
                    empchange.changedate=datetime.datetime.now()
                    empchange.save()
                    
                    emp.attarea=tuple(area)
                    emp.save()
                    #新增下载人员信息    
                      
                    #sync_set_user(emp.search_device_byuser(), [emp]) 
                    
                    datalist.append(adj_user_cmmdata(emp,Area.objects.filter(pk__in=oldarea),emp.attarea.all(),True))
                    
                    
               save_userarea_together(Employee.objects.filter(pk__in=emps),Area.objects.filter(pk__in=area),datalist)
Example #8
0
                def action_batch(self, area):
                        from mysite.iclock.models.model_cmmdata import adj_user_cmmdata, save_userarea_together
                        datalist = []
                        for oldObj in self.object:
                            empchange = oldObj.__class__.empchange_set.related.model()
                            empchange.changepostion = 4
                            empchange.newvalue = ",".join(["%s" % i.pk for i in  area])
                            empchange.changedate = datetime.datetime.now()
                            new_devs = None
                            import copy

                            old_attarea = copy.deepcopy(oldObj.attarea.select_related())
                            devs = set(list(Device.objects.filter(area__in=old_attarea).filter(device_type=DEVICE_TIME_RECORDER)))    #只管理考勤
                            empchange.oldvalue = ",".join(["%s" % i.pk for i in old_attarea])
                            empchange.UserID = oldObj
                            empchange.changeno = None
                            empchange.save()
                            oldObj.attarea = area
                            oldObj.save(log_msg=False)
                            if new_devs is None:
                                new_devs = set(list(oldObj.search_device_byuser()))
                            datalist.append(adj_user_cmmdata([oldObj], old_attarea, area, True))
                        save_userarea_together(self.object, area, datalist)
Example #9
0
def funIssueCardSave(request):
    from mysite.pos.models import CarCashSZ, CarCashType
    from base.cached_model import STATUS_INVALID, STATUS_LEAVE
    from mysite.personnel.models.model_issuecard import IssueCard, PRIVAGE_CARD, CARD_LOST, CARD_STOP, CARD_OVERDUE, CARD_VALID
    obj = request.POST
    request.session.save()
    card = int(obj['card'])
    operate_type = obj['operate_type']
    money = Decimal(obj['money'])
    sys_card_no = obj['sys_card_no']

    card_serial_no = int(obj['card_serial_no'])
    operate_type = obj['operate_type']
    if operate_type == '8':  #手工补消费
        name = obj['name']
        labor = obj['labor']
        meal = obj['meal']
        pos_device = obj['posdevice']
        date = obj['date']
        c_blance = Decimal(obj['blance'])
    if operate_type == '4':  #退卡
        card_serial_no += 1
        card_blance = Decimal(obj['card_blance'])
    if operate_type in ['1', '5']:  #充值、退款
        card_new_blance = obj['op_card_blance']
    objcard = IssueCard.objects.get(sys_card_no=sys_card_no)
    if objcard:
        #            blance_valid(objcard.type_id,newblance,objcard.UserID)#验证余额
        try:
            if operate_type == '4':  #退卡操作,改变状态为无效
                objcard.status = STATUS_INVALID
                objcard.cardstatus = STATUS_INVALID
                objcard.blance = 0
                objcard.save()
                from mysite.iclock.models.dev_comm_operate import delete_pos_device_info, update_pos_device_info, sync_delete_user, sync_delete_user_privilege, sync_delete_user, sync_report_user
                from mysite.iclock.models.model_device import Device, DEVICE_POS_SERVER
                from mysite.pos.models.model_loseunitecard import LoseUniteCard
                from mysite.personnel.models.model_leave import get_leave_user_info
                dev = Device.objects.filter(device_type=DEVICE_POS_SERVER)
                delete_pos_device_info(dev, [objcard], "USERINFO")  #删除黑白名单
                #                update_pos_device_info(dev,[objcard],"USERINFO")#添加黑名单
                #                LoseUniteCard.objects.all().filter(UserID = objcard.UserID_id).delete()#删除挂失解挂记录
                if get_option("ATT") and not get_leave_user_info(
                        objcard.UserID_id, "isClassAtt"):
                    from base.sync_api import SYNC_MODEL
                    if not SYNC_MODEL:
                        from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
                        adj_user_cmmdata(objcard.UserID, [],
                                         objcard.UserID.attarea.all())

                if get_option("IACCESS") and not get_leave_user_info(
                        objcard.UserID_id, "isClassAccess"):
                    from mysite.iclock.models.dev_comm_operate import sync_set_userinfo, sync_set_user_privilege
                    newObj = objcard.UserID
                    accdev = newObj.search_accdev_byuser()  #查询出人员对那些设备具有操作权限
                    sync_set_userinfo(accdev, [newObj])  #同步人员基本信息到设备

            else:
                if operate_type == '5' or operate_type == '1':  #退款,充值
                    card_serial_no += 1
                    newblance = card_new_blance
                else:  #手工补消费
                    card_serial_no += 1
                    newblance = c_blance - money
                objcard.blance = newblance
                objcard.card_serial_num = card_serial_no
                objcard.save()

            if operate_type == '8':  #手工补消费
                from mysite.pos.models.model_handconsume import HandConsume
                HandConsume(card=card,
                            sys_card_no=sys_card_no,
                            blance=objcard.blance,
                            name=name,
                            labor=labor,
                            meal_id=meal,
                            posdevice_id=pos_device,
                            money=money,
                            date=date,
                            card_serial_no=card_serial_no).save()
            if operate_type == '4' and card_blance > 0:
                CarCashSZ(
                    user=objcard.UserID,
                    card=card,
                    checktime=datetime.now(),
                    type_id=5,  #charge type
                    money=card_blance,
                    blance=0,
                    sys_card_no=sys_card_no,
                    cardserial=card_serial_no,
                    hide_column=5,
                    log_flag=2).save()
            if operate_type <> '8':
                CarCashSZ(
                    user=objcard.UserID,
                    card=card,
                    checktime=datetime.now(),
                    type_id=operate_type,  #charge type
                    money=money,
                    blance=objcard.blance,
                    sys_card_no=sys_card_no,
                    cardserial=card_serial_no,
                    hide_column=operate_type,
                    log_flag=2).save()
            return getJSResponse("result=OK")
        except:
            import traceback
            traceback.print_exc()
            return getJSResponse("result=FAIL")
Example #10
0
def DataPostCheck(sender, **kwargs):
    oldObj = kwargs['oldObj']
    newObj = kwargs['newObj']
    request = sender
    if isinstance(newObj, Employee):

        installed_apps = settings.INSTALLED_APPS
#        if saveUploadImage(request, newObj.PIN + ".jpg"):
#            photopath = settings.ADDITION_FILE_ROOT + "photo/"
#            newObj.photo = "/file/photo/" + newObj.PIN + ".jpg"
#            newObj.save()
        if "mysite.att" or "mysite.iaccess" in installed_apps:#zkeco+zktime
            #fingger=request.REQUEST.get("finnger","")
            #template=request.REQUEST.get("template","")

            save_finnger(request, newObj)            #保存指纹
            del_finnger(request, oldObj)             #删除指纹
            from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
            if oldObj is None:  #新增人员
                if len(newObj.attarea.all()) == 0:
                    newObj.attarea.add(Area.objects.get(pk=1))
                    newObj.save()

                adj_user_cmmdata(newObj, [], newObj.attarea.all())
                #sync_set_user(newObj.search_device_byuser(), [newObj])
            else:   #修改人员信息
                area = []
                if oldObj.attarea_set != newObj.attarea_set:
                    #devs=oldObj.search_device_byuser()
                    for attarea in oldObj.attarea_set:
                        area.append(attarea)
                    #print "area=", area
                    #devs=Device.objects.filter(area__in=area).filter(device_type=DEVICE_TIME_RECORDER)
                    #print "devs=", devs
                #    sync_delete_user(devs, [oldObj])
                #sync_set_user(newObj.search_device_byuser(), [newObj])
                adj_user_cmmdata(newObj, area, newObj.attarea.all())
                #print "upload fingerprint"

        if "mysite.iaccess" in installed_apps:#zkeco+iaccess
            from mysite.iaccess.models import AccLevelSet
            levels = request.POST.getlist("level")
            changed = request.POST.getlist("level_changed")
            #print "changed=", changed
            if changed:
                #删除人的旧权限
                emp_obj = newObj#当前要操作的对象(人)
                emp_levels = emp_obj.acclevelset_set.all()#和人关联的所有权限组
                devset = []
                for emp_level in emp_levels:
                    for door in emp_level.door_group.all():
                        devset.append(door.device)
                    emp_level.emp.remove(emp_obj.id)
                dev = set(devset)
                sync_delete_user_privilege(dev, [emp_obj])
                #同步人的新权限
                devset = []
                for level in levels:#以权限组为中心,循环权限组
                    obj = AccLevelSet.objects.get(pk=level)
                    obj.emp.add(emp_obj.id)
                    for door in obj.door_group.all():
                        devset.append(door.device)
                dev = set(devset)
                sync_set_user(dev, [emp_obj])
                sync_set_user_privilege(dev, [emp_obj])
            else:
                sync_set_user(newObj.search_accdev_byuser(), [newObj])
Example #11
0
def DataPostCheck(sender, **kwargs):
        from model_area import Area        
        oldObj=kwargs['oldObj']
        newObj=kwargs['newObj']
        request=sender
        if isinstance(newObj, EmpChange):
                newarea=[]
                acc=request.REQUEST.get("available","")
                chkdept  =str(request.REQUEST.get("chkdept","")  )
                chkhiretype  =str(request.REQUEST.get("chkhiretype","")  )
                chktitle  =str(request.REQUEST.get("chktitle","")  )
                chkarea  =str(request.REQUEST.get("chkarea","")  )
                newdept =request.REQUEST.get("newdept","")  
                newtitle =request.REQUEST.get("newtitle","")  
                newhiretype =request.REQUEST.get("newhiretype","")  
                newarea =request.REQUEST.getlist("newarea")                                  
                #无4种中的任意一种调动时删除已保存记录
                if (not chkdept) and (not chkhiretype) and (not chktitle) and (not chkarea):
                    newObj.delete()
                    return                   
                #循环保存多次调动
                lst=[]
                if chkdept:
                    lst.append(1)
                if chktitle:
                    lst.append(2) 
                if chkhiretype:
                    lst.append(3)
                onlyChange=True
                for i  in range(len(lst))  :
                   if onlyChange:
                        tmpObj=newObj
                        onlyChange=False
                   else:
                        tmpObj=EmpChange() 
                        tmpObj.UserID=newObj.UserID    
                        tmpObj.changereason=newObj.changereason
                        tmpObj.isvalid=newObj.isvalid
                        tmpObj.approvalstatus=newObj.approvalstatus
                        tmpObj.changedate=newObj.changedate
                        tmpObj.remark=newObj.remark
                          
                   tmpObj.changepostion=lst[i]             
                   if lst[i]==1:
                       tmpObj.newvalue=newdept
                   elif lst[i]==2:
                       tmpObj.newvalue=newtitle
                   else:
                       tmpObj.newvalue=newhiretype
                   if acc:
                        tmpObj.approvalstatus=2
                        tmpObj.isvalid=1
                   tmpObj.save()
                
                if chkarea:
                    if onlyChange:
                        tmpObj=newObj
                    else:
                        tmpObj=EmpChange()
                        tmpObj.UserID=newObj.UserID
                        tmpObj.changereason=newObj.changereason
                        tmpObj.isvalid=newObj.isvalid
                        tmpObj.approvalstatus=newObj.approvalstatus
                        tmpObj.changedate=newObj.changedate
                        tmpObj.remark=newObj.remark                        
                    tmpObj.changepostion=4
                    if newarea:#同步人员考勤区域
                        from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
                        import copy
                        oldarea=copy.deepcopy(tmpObj.UserID.attarea.all())
                        where={'id__in':[int(i) for i in newarea]}
                        tmpObj.oldvalue=",".join(["%s"%i for i in  newObj.UserID.attarea.select_related().values_list('pk')] )         #保留原始区域值
                        tmpObj.UserID.attarea=Area.objects.filter(Q(**where))
                        tmpObj.UserID.save()
                        adj_user_cmmdata(tmpObj.UserID,oldarea,tmpObj.UserID.attarea.all())
                        tmpObj.newvalue=",".join([str(i) for i in newarea])
                    if acc:
                        tmpObj.isvalid=1                    
                        tmpObj.approvalstatus=2
                    tmpObj.save()   
                if not chkarea and len(lst)==0:
                    newObj.delete()
Example #12
0
def DataPostCheck(sender, **kwargs):
    from model_area import Area

    oldObj = kwargs['oldObj']
    newObj = kwargs['newObj']
    request = sender
    if isinstance(newObj, EmpChange):
        try:
            #print "findddddddddddddddddddddd"
            newarea = []
            acc = request.REQUEST.get("available", "")
            chkdept = str(request.REQUEST.get("chkdept", ""))
            chkhiretype = str(request.REQUEST.get("chkhiretype", ""))
            chkposition = str(request.REQUEST.get("chkposition", ""))
            chkarea = str(request.REQUEST.get("chkarea", ""))
            newdept = request.REQUEST.get("newdept", "")
            newposition = request.REQUEST.get("newposition", "")
            newhiretype = request.REQUEST.get("newhiretype", "")
            newarea = request.REQUEST.getlist("newarea")

            #无调动时删除已保存记录
            if (not chkdept) and (not chkhiretype) and (not chkposition) and (
                    not chkarea):
                newObj.delete()
                return

            #循环保存多次调动
            lst = []
            if chkdept:
                lst.append(1)

            if chkposition:
                lst.append(2)
            if chkhiretype:
                lst.append(3)
            #print lst
            onlyChange = True
            for i in range(len(lst)):
                #print "i: %s"%lst[i]
                if onlyChange:
                    tmpObj = newObj
                    onlyChange = False
                else:
                    tmpObj = EmpChange()
                    tmpObj.UserID = newObj.UserID
                    tmpObj.changereason = newObj.changereason
                    tmpObj.isvalid = newObj.isvalid
                    tmpObj.approvalstatus = newObj.approvalstatus
                    tmpObj.changedate = newObj.changedate
                    tmpObj.remark = newObj.remark

                tmpObj.changepostion = lst[i]
                if lst[i] == 1:
                    tmpObj.newvalue = newdept
                elif lst[i] == 2:
                    tmpObj.newvalue = newposition
                else:
                    tmpObj.newvalue = newhiretype
                if acc:
                    tmpObj.approvalstatus = 2
                    tmpObj.isvalid = 1
                tmpObj.save()

            if chkarea:
                if onlyChange:
                    tmpObj = newObj
                    #print "1============="
                else:
                    #print "2=========="
                    tmpObj = EmpChange()

                    tmpObj.UserID = newObj.UserID
                    tmpObj.changereason = newObj.changereason
                    tmpObj.isvalid = newObj.isvalid
                    tmpObj.approvalstatus = newObj.approvalstatus
                    tmpObj.changedate = newObj.changedate
                    tmpObj.remark = newObj.remark
                tmpObj.changepostion = 4
                #print "area:%s"%newarea
                #print "tmpObj.changepostion:%s"%tmpObj.changepostion
                if newarea:  #同步人员考勤区域
                    from mysite.iclock.models.model_cmmdata import adj_user_cmmdata
                    import copy
                    oldarea = copy.deepcopy(tmpObj.UserID.attarea.all())
                    where = {'id__in': [int(i) for i in newarea]}
                    tmpObj.oldvalue = ",".join([
                        "%s" % i for i in newObj.UserID.attarea.select_related(
                        ).values_list('pk')
                    ])  #保留原始区域值
                    tmpObj.UserID.attarea = Area.objects.filter(Q(**where))
                    tmpObj.UserID.save()

                    #devs=Device.objects.filter(area__in= list(tmpObj.oldvalue))#清除原区域考勤机里当前人员信息
                    #sync_delete_user(devs, [tmpObj.UserID])
                    adj_user_cmmdata(tmpObj.UserID, oldarea,
                                     tmpObj.UserID.attarea.all())

                    tmpObj.newvalue = ",".join([str(i) for i in newarea])

                    #sync_set_user(newObj.UserID.search_device_byuser(), [newObj.UserID])#加载该人员信息到该人员的新区域的所有考勤机

                if acc:
                    tmpObj.isvalid = 1
                    tmpObj.approvalstatus = 2
                tmpObj.save()
            if not chkarea and len(lst) == 0:
                newObj.delete()
        except:
            import traceback
            print traceback.print_exc()