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()
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
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()
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()
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)
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)
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)
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)
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")
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])
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()
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()