Example #1
0
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
Example #2
0
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()
Example #3
0
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'操作失败'
Example #4
0
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
Example #5
0
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
Example #6
0
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'操作失败'
Example #7
0
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'操作失败'
Example #8
0
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
Example #9
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'操作失败'
Example #10
0
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
Example #11
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