예제 #1
0
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秒
예제 #2
0
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秒
예제 #3
0
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
예제 #4
0
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