def process_data(): from mysite.iclock.models.model_device import Device from mysite.iclock.devview import write_data data = "" devs = Device.objects.all() path = settings.C_ADMS_PATH + "new/" tnow = datetime.datetime.now() print tnow, " device count: ", len(devs) for d in devs: #-----循环所有设备 try: objpath = path % d.sn #----将path中的待定量换成设备序列号 if os.path.exists(objpath): #-----目录必须存在 files = [] #----获取目录中的所有文件 for f in os.listdir(objpath): if os.path.isfile(objpath + f): try: files.append(f) except: pass if len(files) > 1: sort_files(files) for f in files: #----循环获得的所有文件 if os.path.exists(objpath + f): process_flag = True try: print "import data file '%s'" % (objpath + f) fs = file(objpath + f, "r+") data = fs.read() fs.close() write_data(data, d) #-----处理动作 data:文件数据 d:设备 except: process_flag = False print_exc() finally: try: f_dir = f[:8] #---根据文件名获取日期 cf_path = settings.C_ADMS_PATH + f_dir + "/" cf_path = cf_path % d.sn if not os.path.exists(cf_path): os.makedirs(cf_path) #----创建处理失败的文件存储路径 if not process_flag: f = "error_" + f shutil.copy(objpath + f, cf_path + f) os.remove(objpath + f) #------将处理失败的文件转移到上面的目录 except: print_exc() pass else: #---- 设备数据文件目录不存在 pass except: import traceback traceback.print_exc() time.sleep(0.1) #-----每处理一个设备暂停0.1秒
def process_data(): from mysite.iclock.models.model_device import Device from mysite.iclock.devview import write_data data="" devs=Device.objects.all() path=settings.C_ADMS_PATH+"new/" tnow=datetime.datetime.now() print tnow," device count: ",len(devs) for d in devs: #-----循环所有设备 try: objpath=path%d.sn #----将path中的待定量换成设备序列号 if os.path.exists(objpath): #-----目录必须存在 files=[] #----获取目录中的所有文件 for f in os.listdir(objpath): if os.path.isfile(objpath+f): try: files.append(f) except: pass if len(files)>1: sort_files(files) for f in files: #----循环获得的所有文件 if os.path.exists(objpath+f): process_flag=True try: print "import data file '%s'"%(objpath+f) fs=file(objpath+f,"r+") data=fs.read(); fs.close() write_data(data,d) #-----处理动作 data:文件数据 d:设备 except: process_flag=False print_exc() finally: try: f_dir=f[:8] #---根据文件名获取日期 cf_path=settings.C_ADMS_PATH+f_dir+"/" cf_path=cf_path%d.sn if not os.path.exists(cf_path): os.makedirs(cf_path) #----创建处理失败的文件存储路径 if not process_flag: f="error_"+f shutil.copy(objpath+f,cf_path+f) os.remove(objpath+f) #------将处理失败的文件转移到上面的目录 except: print_exc() pass else: #---- 设备数据文件目录不存在 pass except: import traceback;traceback.print_exc() time.sleep(0.1) #-----每处理一个设备暂停0.1秒
def parse_cmmdata(cmmdata): ''' 解析操作命令为下发给设备的命令 ''' from model_device import Device from mysite.personnel.models import Employee from mysite.personnel.models import Area from mysite.iclock.devview import write_data from mysite.iclock.models.model_devcmd import DevCmd from mysite.iclock.constant import REALTIME_EVENT, DEVICE_POST_DATA from redis.server import check_and_start_queqe_server, queqe_server if cmmdata.cmm_type == 1: cmm = cmmdata.receive_data.split("\t;", 1) if cmm[0] == "cmmsubtype=1": tmp = cmm[1].split("\t;", 1) snid = tmp[0].split("=")[1] fn = tmp[1].split("=")[1] wf = file(fn, "r+") writedata = wf.read() wf.close() dev = Device.objects.get(pk=snid) if writedata: write_data(writedata, dev, cmmdata) elif cmmdata.cmm_type == 2: cmm = cmmdata.receive_data.split("\t;", 1) if cmm[0] == "cmmsubtype=2": alldata = cmmdata.receive_data.split("\n\r") for cmm in alldata: cmm = cmm.split("\t;", 1) tmp = cmm[1].split("\t;", 1) snid = tmp[0].split("=")[1] dev = Device.objects.get(pk=snid) if dev: cmd = DevCmd(SN=dev, CmdOperate=cmmdata, CmdContent="CLEAR DATA", CmdCommitTime=datetime.datetime.now()) cmd.save(force_insert=True) dev.set_all_data(cmmdata) if cmm[0] == "cmmsubtype=3": #----所谓的调整用户到某区域 alldata = cmmdata.receive_data.split("\n\r") for cmm in alldata: cmm = cmm.split("\t;", 1) tmp = cmm[1].split("\t;") user = tmp[0].split("=")[1].split(",") s_dev = tmp[1].split("=")[1].split(",") d_dev = tmp[2].split("=")[1].split(",") user = Employee.objects.filter(pk__in=user) if s_dev[0]: devset = Device.objects.filter(pk__in=s_dev) for dev in devset: dev.delete_user(user, cmmdata) if d_dev[0]: devset = Device.objects.filter(pk__in=d_dev) for dev in devset: dev.set_user(user, cmmdata, "") dev.set_user_fingerprint(user, cmmdata) else: pass pass
def parse_cmmdata(cmmdata): ''' 解析操作命令为下发给设备的命令 ''' from model_device import Device from mysite.personnel.models import Employee from mysite.personnel.models import Area from mysite.iclock.devview import write_data from mysite.iclock.models.model_devcmd import DevCmd from mysite.iclock.constant import REALTIME_EVENT, DEVICE_POST_DATA from redis.server import check_and_start_queqe_server, queqe_server if cmmdata.cmm_type==1: cmm=cmmdata.receive_data.split("\t;",1) if cmm[0]=="cmmsubtype=1": tmp=cmm[1].split("\t;",1) snid=tmp[0].split("=")[1] fn=tmp[1].split("=")[1] wf=file(fn,"r+") writedata=wf.read() wf.close() dev=Device.objects.get(pk=snid) if writedata: write_data(writedata,dev,cmmdata) elif cmmdata.cmm_type==2: cmm=cmmdata.receive_data.split("\t;",1) if cmm[0]=="cmmsubtype=2": alldata=cmmdata.receive_data.split("\n\r") for cmm in alldata: cmm=cmm.split("\t;",1) tmp=cmm[1].split("\t;",1) snid=tmp[0].split("=")[1] dev=Device.objects.get(pk=snid) if dev: cmd=DevCmd(SN=dev, CmdOperate=cmmdata, CmdContent="CLEAR DATA", CmdCommitTime=datetime.datetime.now()) cmd.save(force_insert=True) dev.set_all_data(cmmdata) if cmm[0]=="cmmsubtype=3": #----所谓的调整用户到某区域 alldata=cmmdata.receive_data.split("\n\r") for cmm in alldata: cmm=cmm.split("\t;",1) tmp=cmm[1].split("\t;") user=tmp[0].split("=")[1].split(",") s_dev=tmp[1].split("=")[1].split(",") d_dev=tmp[2].split("=")[1].split(",") user=Employee.objects.filter(pk__in=user) if s_dev[0]: devset=Device.objects.filter(pk__in=s_dev) for dev in devset: dev.delete_user(user, cmmdata) if d_dev[0]: devset=Device.objects.filter(pk__in=d_dev) for dev in devset: dev.set_user(user, cmmdata, "") dev.set_user_fingerprint(user, cmmdata) else: pass pass