def get_device_status(sn): ''' 获取设备状态 ''' import datetime from mysite.settings import MIN_REQ_DELAY as min_delay try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return False device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: return False try: last_activity_str = device.get("last_activity") except:return False if last_activity_str: last_activity = datetime.datetime.strptime(last_activity_str, "%Y-%m-%d %H:%M:%S") else: return False '''小于设置的时间+1分钟之内为联机状态''' if (datetime.datetime.now() - last_activity).seconds < min_delay+60: return True else: return False
def get_count_cmd(sn): ''' 获取设备任务 ''' try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return 0 device=Device(m_sn) return device.count_cmd()
def set_device(sn,info_dic): ''' 注册和更新设备信息 ''' if DEVELOP_MODEL:print 'set_device...' try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return u'设备序列号不合法' try: device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: pass if info_dic.has_key('area'): m_area = info_dic.pop('area') device.sets(info_dic) if m_area: device.set_area(m_area) return 0 except: import traceback;traceback.print_exc() return u'操作失败'
def get_att_record(): ''' 获取原始考勤数据 ''' bat = att_batch() try: m_list = bat.get() dev = Device(bat.get_sn()).get() except: return None,None return dev,m_list
def get_att_record_file(): ''' 从文件中获取原始考勤数据 ''' from sync_store import load_att_file try: m_store, m_sn, m_list = load_att_file() dev = Device(m_sn).get() except: return None,None,None return dev,m_list,m_store
def _device_cmd(sn,cmd): ''' 下发设备命令 ''' if DEVELOP_MODEL:print 'device_cmd: ',cmd try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return u'设备序列号不合法' device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: #---设备没有登记过 return u'设备未注册' try: device.add_cmd(cmd) return 0 except: return u'操作失败'
def spread_device_employee(sn): ''' 重新分发人员 (基本信息和指纹) ''' if DEVELOP_MODEL:print 'spread_device_employee...' try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return u'设备序列号不合法' device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: return u'设备未注册' try: device.spread() return 0 except: import traceback;traceback.print_exc() return u'操作失败'
def clean_cache_data(sn): if DEVELOP_MODEL:print 'clean_cache_data...' try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return u'设备序列号不合法' device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: device.clean_update() return u'设备未注册' device.clean_cache() return 0
def del_device(sn): ''' 删除设备 ''' if DEVELOP_MODEL:print 'del_device...' try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return u'设备序列号不合法' device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: return u'设备未注册' try: device.set_area('') device.delete() return 0 except: return u'操作失败'
def collect_device_att(sn): ''' 重新收集考勤记录 ''' if DEVELOP_MODEL:print 'collect_device_att...' try: m_sn = str(sn) except: print 'deive sn:%s is incorrect'%sn return u'设备序列号不合法' device=Device(m_sn) try: device=device.get() except ObjectDoesNotExist: return u'设备未注册' device.log_stamp = '0' device.set("log_stamp") check_data(device.sn) return 0
def check_device(request, allow_create=True, commkey_check=False): ''' 根据设备的http请求 检查设备的注册情况返回有效设备对象, 当为新设备时会触发set() 涉及http参数 HITACDMFun、SN、device_type device 属性 ''' try: sn = request.GET["SN"] except: sn = request.raw_post_data.split("SN=")[1].split("&")[0] device = Device(sn) try: device = device.get() except ObjectDoesNotExist: #---设备没有登记过 if request.method == 'GET' and commkey_check: from mysite import authorize_fun language = request.REQUEST.get('language', None) #---获得语言参数 authorize_fun.check_push_device( language, settings.AUTHORIZE_MAGIC_KEY) #---连接设备数量控制 if allow_create and not request.REQUEST.has_key( 'PIN') and len(sn) >= 6: #若SN正确,且设置可以自动注册 device.alias = 'auto_add' device.ipaddress = request.META["REMOTE_ADDR"] device.status = 1 str_now = datetime.datetime.now().strftime(time_fmt) device.last_activity = str_now else: return None if request.method == 'GET' and commkey_check: from constant import PUSH_COMM_KEY_CHECK if PUSH_COMM_KEY_CHECK: pushcommkey = request.GET.get("pushcommkey", None) if not pushcommkey: raise Exception('hase no pushcommkey param.') return None dec = Check_ClientCode(sn, settings.CUSTOMER_CODE) if dec != pushcommkey: raise Exception('pushcommkey authentication failed.') return None if device.status in (STATUS_STOP, STATUS_PAUSED): #--- 设备处于暂停或者停止状态 return None if device.isnew(): deviceType = request.REQUEST.get('device_type') if (deviceType == '30'): #消费机 device.deviceType = '30' else: device.deviceType = '' ck_ret = check_count(int(device.total())) if ck_ret: print ck_ret return None device.set_area(1) #设置默认区域 device.set() else: device.last_activity = datetime.datetime.now().strftime(time_fmt) device.set('last_activity') # 更新设备最后访问时间 return device