当前位置: 首页>>代码示例>>Python>>正文


Python QueryHelper.get_terminal_by_tmobile方法代码示例

本文整理汇总了Python中helpers.queryhelper.QueryHelper.get_terminal_by_tmobile方法的典型用法代码示例。如果您正苦于以下问题:Python QueryHelper.get_terminal_by_tmobile方法的具体用法?Python QueryHelper.get_terminal_by_tmobile怎么用?Python QueryHelper.get_terminal_by_tmobile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在helpers.queryhelper.QueryHelper的用法示例。


在下文中一共展示了QueryHelper.get_terminal_by_tmobile方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: get_sms_status

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def get_sms_status(self, tmobile):
        """
        sms_status: 0,  // failded
                    1,  // sent
                    2,  // reached to terminal
                    3,  // terminal has connected to gataway
        """ 
        sms_status = 0
        terminal = QueryHelper.get_terminal_by_tmobile(tmobile, self.db)
        if terminal.login == GATEWAY.TERMINAL_LOGIN.ONLINE:
            sms_status = 3
        elif terminal.msgid:
            sms_status = 1
        else:
            sms = self.db.get("SELECT send_status, recv_status"
                              "  FROM T_SMS"
                              "  WHERE msgid = %s"
                              "  AND category = %s"
                              "  LIMIT 1",
                              terminal.msgid, SMS.CATEGORY.MT)
            if not sms:
                pass
            elif sms.recv_status == 0:
                sms_status = 2
            elif sms.send_status == 0:
                sms_status = 1

        return sms_status
开发者ID:jcsy521,项目名称:ydws,代码行数:30,代码来源:business.py

示例2: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Get last infomation of a terminal.
        """
        status = ErrorCode.SUCCESS
        try:
            data = DotDict(json_decode(self.request.body))
            mobile = str(data.mobile)
            manual_status = data.manual_status
            token = data.token
            logging.info("[MANUAL] Request, data:%s", data)
        except Exception as e:
            status = ErrorCode.DATA_FORMAT_INVALID
            logging.exception("[REBOO] Invalid data format, body: %s, mobile: %s.",
                              self.request.body, mobile)
            self.write_ret(status)
            return

        try:
            status = self.basic_check(token, mobile)                             
            if status != ErrorCode.SUCCESS:
                self.write_ret(status)
                return
    
            terminal = QueryHelper.get_terminal_by_tmobile(mobile, self.db)
            tid = terminal.tid                    
            update_mannual_status(self.db, self.redis, tid, manual_status)

            self.write_ret(status)

        except Exception as e:
            logging.exception("[MANUAL] mobile: %s. Exception: %s",
                              mobile, e.args)
            status = ErrorCode.FAILED
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:36,代码来源:manual.py

示例3: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Reboot a terminal.
        """
        status = ErrorCode.SUCCESS        
        try:
            data = DotDict(json_decode(self.request.body))
            mobile = str(data.mobile)
            token = data.token
            logging.info("[REBOOT] Request, data:%s", data)
        except Exception as e:
            logging.exception("[REBOOT] Invalid data format, body: %s, mobile: %s.",
                              self.request.body, mobile)
            status = ErrorCode.DATA_FORMAT_INVALID
            self.write_ret(status)
            return

        try:
            status = self.basic_check(token, mobile)                             
            if status != ErrorCode.SUCCESS:
                self.write_ret(status)
                return

            terminal = QueryHelper.get_terminal_by_tmobile(mobile, self.db)         
            tid = terminal.tid
            restart_terminal(self.db, self.redis, tid, mobile) 
            logging.info("[REBOOT] Restart a terminal. tid: %s, mobile: %s", tid, mobile)               

            self.write_ret(status)
        except Exception as e:
            logging.exception("[REBOOT] Reboot failed. mobile: %s. Exception: %s",
                              mobile, e.args)
            status = ErrorCode.FAILED
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:35,代码来源:reboot.py

示例4: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Get locations in same period. 
        """
        status = ErrorCode.SUCCESS
        res = []
        try:
            data = DotDict(json_decode(self.request.body))
            mobile = str(data.mobile)
            start_time = int(data.start_time)
            end_time = int(data.end_time)
            token = data.token
            logging.info("[TRACK] Request, data:%s", data)
        except Exception as e:
            status = ErrorCode.DATA_FORMAT_INVALID
            logging.exception("[TRACK] Invalid data format, body: %s, mobile: %s.",
                              self.request.body, mobile)
            self.write_ret(status)
            return

        try:
            status = self.basic_check(token, mobile)                          
            if status != ErrorCode.SUCCESS:
                self.write_ret(status)
                return

            if (end_time - start_time) > OPENAPI.LIMIT.TRACK_INTERVAL:
                status = ErrorCode.LOCATION_EXCEED
                self.write_ret(status)              
                return 

            terminal = QueryHelper.get_terminal_by_tmobile(mobile, self.db)
            tid = terminal.tid
            track = get_track(self.db, self.redis, tid, start_time, end_time, cellid=True)
            for t in track:
                if (t and t.clatitude and t.clongitude):
                    d = dict(lon=t.get('longitude', 0),
                             lat=t.get('latitude', 0),
                             clon=t.get('clongitude', 0),
                             clat=t.get('clatitude', 0),
                             timestamp=t.get('timestamp',0),
                             name=t.get('name',''),
                             type=t.get('type',0))
                    res.append(d)
                else:
                    pass 
            if len(res) > OPENAPI.LIMIT.TRACK:
                logging.info("[UWEB] Track is too large, just provide the latest part.")
                res = res[-OPENAPI.LIMIT.TRACK:]
            
            self.write_ret(status,   
                           dict_=dict(res=res))

        except Exception as e:
            logging.exception("[TRACK] Track failed. mobile: %s. Exception: %s",
                              mobile, e.args)
            status = ErrorCode.FAILED
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:59,代码来源:track.py

示例5: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Get latest location of a terminal.
        """
        status = ErrorCode.SUCCESS
        res = {}
        try:
            data = DotDict(json_decode(self.request.body))
            mobile = str(data.mobile)
            token = data.token
            logging.info("[REALTIME] Request, data:%s", data)
        except Exception as e:
            status = ErrorCode.DATA_FORMAT_ILLEGAL
            logging.exception("[REALTIME] Invalid data format, body: %s, mobile: %s.",
                              self.request.body, mobile)
            self.write_ret(status)
            return

        try:
            status = self.basic_check(token, mobile)                             
            if status != ErrorCode.SUCCESS:
                self.write_ret(status)
                return
    
            terminal = QueryHelper.get_terminal_by_tmobile(mobile, self.db)
            tid = terminal.tid      
            location = QueryHelper.get_location_info(tid, self.db, self.redis)

            # check and make name valid
            if location and location['name'] is None:
                location['name'] = ''                            
            # check and make clatclon valid
            locations = [location,] 
            locations = get_locations_with_clatlon(locations, self.db) 
            location = locations[0]
            
            if (location and location.clatitude and location.clongitude):
                res = dict(lon=location.get('longitude', 0),
                           lat=location.get('latitude', 0),
                           clon=location.get('clongitude', 0),
                           clat=location.get('clatitude', 0),
                           timestamp=location.get('timestamp',0),
                           name=location.get('name',''),
                           type=location.get('type',0))
                 
            self.write_ret(status,
                           dict_=dict(res=res))

        except Exception as e:
            logging.exception("[REALTIME] sid: %s. Exception: %s",
                              mobile, e.args)
            status = ErrorCode.FAILED
            self.write_ret(status)     
开发者ID:jcsy521,项目名称:ydws,代码行数:54,代码来源:realtime.py

示例6: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Reregist a pair of umobile and tmobile.

        Send sms to terminal.
        """
        status = ErrorCode.SUCCESS
        try:
            data = DotDict(json_decode(self.request.body))
            logging.info("[UWEB] Register request: %s", data)
        except Exception as e:
            status = ErrorCode.ILLEGAL_DATA_FORMAT
            self.write_ret(status)
            return

        try:
            tmobile = data.tmobile
            user = QueryHelper.get_user_by_tmobile(tmobile, self.db)
            if user:
                umobile = user.owner_mobile
                terminal = QueryHelper.get_terminal_by_tmobile(
                    tmobile, self.db)
                if int(terminal.biz_type) == UWEB.BIZ_TYPE.YDWS:
                    register_sms = SMSCode.SMS_REGISTER % (umobile, tmobile)
                    ret = SMSHelper.send_to_terminal(tmobile, register_sms)
                else:
                    activation_code = QueryHelper.get_activation_code(self.db)
                    register_sms = SMSCode.SMS_REGISTER_YDWQ % (
                        ConfHelper.UWEB_CONF.url_out, activation_code)
                    ret = SMSHelper.send(tmobile, register_sms)

                ret = DotDict(json_decode(ret))
                if ret.status == ErrorCode.SUCCESS:
                    logging.info("[UWEB] Reregist successfully. umobile: %s, tmobile: %s .",
                                 umobile, tmobile)
                else:
                    status = ErrorCode.REGISTER_FAILED
                    logging.error("[UWEB] Reregister failed. umobile: %s, tmobile: %s. Message: %s",
                                  umobile, tmobile, ErrorCode.ERROR_MESSAGE[status])
            else:
                logging.exception("[UWEB] Terminal has no user, ignore it. tmobile: %s. ",
                                  tmobile)
            self.write_ret(status)
        except Exception as e:
            logging.exception("[UWEB] Reregister failed. tmobile: %s , Exception: %s",
                              tmobile, e.args)
            status = ErrorCode.REGISTER_FAILED
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:49,代码来源:register.py

示例7: get

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def get(self):
        """Get activation_code according to tid or mobile.
        """
        status = ErrorCode.SUCCESS
        try:
            tid = self.get_argument('tid', '')
            mobile = self.get_argument('mobile', '')
            logging.info("[ACTIVATIONCODE] Activation_code query, tid: %s, mobile: %s.",
                         tid, mobile)
        except Exception as e:
            status = ErrorCode.ILLEGAL_DATA_FORMAT
            logging.exception("[ACTIVATIONCODE] Illegal format, body: %s.",
                              self.request.body)
            self.write_ret(status)
            return

        try:
            terminal = None
            if tid:
                terminal = QueryHelper.get_terminal_by_tid(tid, self.db)

            if not terminal:
                if mobile:
                    terminal = QueryHelper.get_terminal_by_tmobile(
                        mobile, self.db)

            activation_code = terminal.get(
                'activation_code', '') if terminal else ''
            tid = terminal.get('tid', '') if terminal else ''
            mobile = terminal.get('mobile', '') if terminal else ''
            biz_type = terminal.get(
                'biz_type', UWEB.BIZ_TYPE.YDWS) if terminal else UWEB.BIZ_TYPE.YDWS

            self.write_ret(status,
                           dict_=DotDict(activation_code=activation_code,
                                         tid=tid,
                                         mobile=mobile,
                                         biz_type=biz_type))
        except Exception as e:
            status = ErrorCode.SERVER_BUSY
            logging.exception("[ACTIVATIONCODE] Get activation_code failed, body: %s. Exception: %s",
                              self.request.body, e.args)
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:45,代码来源:activate.py

示例8: put

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def put(self):
        """Modify the settings.
        """
        status = ErrorCode.SUCCESS
        try:
            data = DotDict(json_decode(self.request.body))
            logging.info("[UWEB] Setting modify request: %s", self.request.body) 
            tmobile = data.tmobile 
            key = data.key
            value = data.value 
            logging.info("[UWEB] Setting modify request: %s", data) 
        except Exception as e: 
            status = ErrorCode.ILLEGAL_DATA_FORMAT 
            logging.exception("[UWEB] Invalid data format. Exception: %s", e.args) 
            self.write_ret(status) 
            return

        try:
            clear_session = False
            terminal = QueryHelper.get_terminal_by_tmobile(tmobile, self.db)
            if not terminal:
                status = ErrorCode.TERMINAL_NOT_EXISTED 
            else:
                tid = terminal.tid
                sql_cmd = "UPDATE T_TERMINAL_INFO SET %(key)s = %(value)s WHERE tid='%(tid)s' LIMIT 1 " % locals()
                if key in ['tracking_interval']: 
                    clear_session = True

                if clear_session:
                    sessionID_key = get_terminal_sessionID_key(tid)
                    self.redis.delete(sessionID_key)
                self.db.execute(sql_cmd)

            self.write_ret(status)
        except Exception as e:
            logging.exception("Modify setting failed. Exception: %s", 
                              e.args)
            self.render('errors/error.html', 
                        message=ErrorCode.FAILED)
开发者ID:jcsy521,项目名称:ydws,代码行数:41,代码来源:setting.py

示例9: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Regist a pair of umobile and tmobile.
        """
        status = ErrorCode.SUCCESS
        try:
            data = DotDict(json_decode(self.request.body))
            logging.info("[UWEB] Register request: %s", data)
            umobile = data.umobile
            tmobile = data.tmobile
            captcha = data.captcha
        except Exception as e:
            status = ErrorCode.ILLEGAL_DATA_FORMAT
            logging.exception("[UWEB] Invalid data format. Exception: %s",
                              e.args)
            self.write_ret(status)
            return

        try:
            # check tmobile is whitelist or not
            white_list = check_zs_phone(tmobile, self.db)
            if not white_list:
                logging.info("[UWEB] Mobile is not whitelist. tmobile: %s.", tmobile)
                status = ErrorCode.MOBILE_NOT_ORDERED
                message = ErrorCode.ERROR_MESSAGE[status] % tmobile
                self.write_ret(status, message=message)
                return

            captcha_key = get_captcha_key(umobile)
            captcha_old = self.redis.get(captcha_key)
            if captcha_old:
                if captcha == str(captcha_old):
                    terminal = QueryHelper.get_terminal_by_tmobile(
                        tmobile, self.db)
                    if terminal:
                        if terminal.service_status == UWEB.SERVICE_STATUS.TO_BE_UNBIND:
                            # delete to_be_unbind terminal!
                            delete_terminal(terminal.tid, self.db, self.redis)
                        else:
                            status = ErrorCode.TERMINAL_ORDERED
                            logging.info("[UWEB] Regist failed. umobile: %s, tmobile: %s  Message: %s",
                                         umobile, tmobile, ErrorCode.ERROR_MESSAGE[status])
                            self.write_ret(status)
                            return

                    register_sms = SMSCode.SMS_REGISTER % (umobile, tmobile)
                    ret = SMSHelper.send_to_terminal(tmobile, register_sms)
                    ret = DotDict(json_decode(ret))
                    if ret.status == ErrorCode.SUCCESS:
                        logging.info("[UWEB] Regist successfully. umobile: %s, tmobile: %s ",
                                     umobile, tmobile)
                        self.redis.delete(captcha_key)
                    else:
                        status = ErrorCode.REGISTER_FAILED
                        logging.error("[UWEB] Regist failed. umobile: %s, tmobile: %s. Message: %s",
                                      umobile, tmobile, ErrorCode.ERROR_MESSAGE[status])
                else:
                    status = ErrorCode.WRONG_CAPTCHA
                    logging.error("[UWEB] Regist failed. umobile: %s, captcha: %s, captcha_old: %s, Message: %s",
                                  umobile, captcha, captcha_old, ErrorCode.ERROR_MESSAGE[status])
            else:
                status = ErrorCode.NO_CAPTCHA
                logging.error("[UWEB] Register failed. umobile: %s, captcha: %s, Message: %s",
                              umobile, captcha, ErrorCode.ERROR_MESSAGE[status])
            self.write_ret(status)
        except Exception as e:
            logging.exception("[UWEB] Register failed. umobile: %s tmobile: %s , Exception: %s",
                              umobile, tmobile, e.args)
            status = ErrorCode.REGISTER_FAILED
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:71,代码来源:secregister.py

示例10: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Get mileage of a terminal.
        """
        status = ErrorCode.SUCCESS
        res = []
        try:
            data = DotDict(json_decode(self.request.body))
            mobile = data.mobile
            start_time = int(data.start_time)
            end_time = int(data.end_time)
            token = data.token
            logging.info("[MILEAGE] Request, data:%s", data)
        except Exception as e:
            status = ErrorCode.DATA_FORMAT_INVALID
            logging.exception("[MILEAGE] Invalid data format, body: %s, ",
                              self.request.body)
            self.write_ret(status)
            return

        try:
            status = self.basic_check(token, mobile)                             
            if status != ErrorCode.SUCCESS:
                self.write_ret(status)
                return

            terminal = QueryHelper.get_terminal_by_tmobile(mobile, self.db)
            tid = terminal.tid
            # end_time must bigger than start_time
            delta = end_time - start_time
            d, m = divmod(delta, 60 * 60 * 24)
            start_date = get_date_from_utc(start_time)
            end_date = get_date_from_utc(end_time)
            start_day = datetime.datetime.fromtimestamp(start_time)
            end_day = datetime.datetime.fromtimestamp(end_time)
            # get how many days the end_time and start_time cover
            days = abs(end_day - start_day).days + 1

            for item in range(days):
                timestamp = start_time + 1 * 60 * 60 * 24 * (item)
                date = get_date_from_utc(timestamp)
                year, month, day = date.year, date.month, date.day
                start_time_, end_time_ = start_end_of_day(
                    year=year, month=month, day=day)

                date = '-'.join([str(year), str(month), str(day)])

                mileage_log = self.db.get("SELECT distance FROM T_MILEAGE_LOG"
                                          "  WHERE tid = %s"
                                          "  AND timestamp = %s",
                                          tid, end_time_)
                mileage = mileage_log['distance'] if mileage_log else 0

                r = dict(date=date,
                         mileage=mileage)
                res.append(r)
                
            self.write_ret(status,
                           dict_=dict(res=res))

        except Exception as e:
            logging.exception("[MILEAGE] mobile: %s. Exception: %s",
                              mobile, e.args)
            status = ErrorCode.FAILED
            self.write_ret(status)
开发者ID:jcsy521,项目名称:ydws,代码行数:66,代码来源:mileage.py

示例11: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Retrive various event.
        """
        status = ErrorCode.SUCCESS
        try:
            data = DotDict(json_decode(self.request.body))
            mobile = data.mobile
            sn = data.sn
            category = int(data.category)
            location = data.location
            gps = int(data.gps)
            gsm = int(data.gsm)
            pbat = int(data.pbat)
            attendance_time = data.get('attendance_time', '')
            logging.info("[UWEB] upload request: %s", 
                         data)
        except Exception as e:
            status = ErrorCode.ILLEGAL_DATA_FORMAT
            logging.exception("[UWEB] Invalid data format. Exception: %s, data: %s",
                              e.args, self.request.body)
            self.write_ret(status)
            return

        try:
            terminal = self.db.get("SELECT id, service_status, mobile"
                                   "  FROM T_TERMINAL_INFO"
                                   "  WHERE mobile = %s"
                                   "  AND sn = %s"
                                   "  AND service_status = %s"
                                   "  AND biz_type = %s LIMIT 1",
                                   mobile, sn, UWEB.SERVICE_STATUS.ON,
                                   UWEB.BIZ_TYPE.YDWQ)
            if not terminal: 
                status = ErrorCode.ACCOUNT_NOT_MATCH 
                logging.info('mobile: %s, sn: %s not match, drop it.', 
                              mobile, sn)
                self.write_ret(status)
                return
            
            terminal = QueryHelper.get_terminal_by_tmobile(mobile, self.db)
            tid = terminal['tid']
            # NOTE: location may be a dict or list
            if type(location) != list:
                locations = [location,]
            else:
                locations = location

            if category == UWEB.UPLOAD_CATEGORY.HEARTBEAT:
                pass
            elif category == UWEB.UPLOAD_CATEGORY.LOCATION:
                for location in locations:
                    location = DotDict(dev_id=tid,
                                       lat=location['clatitude'],
                                       lon=location['clongitude'],
                                       alt=0,
                                       cLat=location['clatitude'],
                                       cLon=location['clongitude'],
                                       gps_time=location['timestamp'],
                                       name=location.get('name', ''),
                                       category=1,
                                       type=int(location['type']),
                                       speed=location['speed'],
                                       degree=location['degree'],
                                       cellid='',
                                       locate_error=int(location['locate_error']))
                    insert_location(location, self.db, self.redis)
            elif category == UWEB.UPLOAD_CATEGORY.ATTENDANCE:
                location = locations[0] if len(locations) >= 1 else None
                if location:
                    location = DotDict(dev_id=tid,
                                       lat=location['clatitude'],
                                       lon=location['clongitude'],
                                       alt=0,
                                       cLat=location['clatitude'],
                                       cLon=location['clongitude'],
                                       gps_time=location['timestamp'],
                                       name=location.get('name', ''),
                                       category=1,
                                       type=int(location['type']),
                                       speed=location['speed'],
                                       degree=location['degree'],
                                       cellid='',
                                       locate_error=int(location['locate_error']))
                    lid = insert_location(location, self.db, self.redis)
                    a_info=dict(mobile=mobile,
                                comment=u'',
                                timestamp=attendance_time if attendance_time else location['gps_time'],
                                lid=lid)
                    record_attendance(self.db, a_info)
                else:
                    logging.error("[UWEB] Invalid attendance data, location is missed.")
            else: 
                #TODO: handle power-event  
                location = locations[0] if len(locations) >= 1 else None
                if location:
                    location = DotDict(dev_id=tid,
                                       lat=location['clatitude'],
                                       lon=location['clongitude'],
                                       alt=0,
                                       cLat=location['clatitude'],
#.........这里部分代码省略.........
开发者ID:jcsy521,项目名称:ydws,代码行数:103,代码来源:upload.py

示例12: post

# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_terminal_by_tmobile [as 别名]
    def post(self):
        """Add a terminal.
        """
        status = ErrorCode.SUCCESS
        try:
            data = DotDict(json_decode(self.request.body))
            logging.info("[UWEB] Corp add terminal request: %s, cid: %s",
                         data, self.current_user.cid)
        except Exception as e:
            status = ErrorCode.ILLEGAL_DATA_FORMAT
            self.write_ret(status)
            return

        try:
            if data.has_key('cnum') and not check_cnum(data.cnum):
                status = ErrorCode.ILLEGAL_CNUM
                self.write_ret(status)
                return

            # 1 year
            begintime = int(time.time())
            now_ = datetime.datetime.now()
            endtime = now_ + relativedelta(years=1)
            endtime = int(time.mktime(endtime.timetuple()))

            # 1: add terminal
            #umobile = data.umobile if data.umobile else self.current_user.cid
            if data.umobile:
                umobile = data.umobile
            else:
                corp = QueryHelper.get_corp_by_cid(self.current_user.cid, self.db)
                umobile = corp.get('c_mobile', '')

            terminal = QueryHelper.get_terminal_by_tmobile(data.tmobile, self.db)
            if terminal:
                if terminal.service_status == UWEB.SERVICE_STATUS.TO_BE_UNBIND:
                    delete_terminal(terminal.tid, self.db, self.redis)
                else:
                    logging.error(
                        "[UWEB] mobile: %s already existed.", data.tmobile)
                    status = ErrorCode.TERMINAL_ORDERED
                    self.write_ret(status)
                    return

            vibl = data.get("vibl")
            use_scene = get_use_scene_by_vibl(vibl)

            biz_type = data.get('biz_type', UWEB.BIZ_TYPE.YDWS)
            tid = data.tmobile

            terminal_info = dict(tid=tid,
                                 group_id=data.group_id,
                                 tmobile=data.tmobile,
                                 owner_mobile=umobile,
                                 mannual_status=UWEB.DEFEND_STATUS.YES,
                                 begintime=begintime,
                                 endtime=4733481600,
                                 offline_time=begintime,
                                 cnum=data.cnum,
                                 icon_type=data.icon_type,
                                 login_permit=data.login_permit,
                                 push_status=data.push_status,
                                 vibl=data.vibl,
                                 use_scene=use_scene,
                                 biz_type=biz_type,
                                 speed_limit=data.speed_limit,
                                 stop_interval=data.stop_interval,
                                 service_status=UWEB.SERVICE_STATUS.ON)

            if int(biz_type) == UWEB.BIZ_TYPE.YDWS:
                # 0. check tmobile is whitelist or not
                white_list = check_zs_phone(data.tmobile, self.db)
                if not white_list:
                    logging.error("[UWEB] mobile: %s is not whitelist.", data.tmobile)
                    status = ErrorCode.MOBILE_NOT_ORDERED
                    message = ErrorCode.ERROR_MESSAGE[status] % data.tmobile
                    self.write_ret(status, message=message)
                    return

                # 4: send message to terminal
                register_sms = SMSCode.SMS_REGISTER % (umobile, data.tmobile)
                ret = SMSHelper.send_to_terminal(data.tmobile, register_sms)
            else:
                tid = get_tid_from_mobile_ydwq(data.tmobile)
                activation_code = QueryHelper.get_activation_code(self.db)
                terminal_info['tid'] = tid
                terminal_info['activation_code'] = activation_code
                terminal_info['service_status'] = UWEB.SERVICE_STATUS.TO_BE_ACTIVATED
                register_sms = SMSCode.SMS_REGISTER_YDWQ % (ConfHelper.UWEB_CONF.url_out, activation_code)
                ret = SMSHelper.send(data.tmobile, register_sms)

            add_terminal(terminal_info, self.db, self.redis)
            # record the add action
            bind_info = dict(tid=data.tmobile,
                             tmobile=data.tmobile,
                             umobile=umobile,
                             group_id=data.group_id,
                             cid=self.current_user.cid,
                             add_time=int(time.time()))
            record_add_action(bind_info, self.db)
#.........这里部分代码省略.........
开发者ID:jcsy521,项目名称:ydws,代码行数:103,代码来源:terminal.py


注:本文中的helpers.queryhelper.QueryHelper.get_terminal_by_tmobile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。