本文整理汇总了Python中helpers.queryhelper.QueryHelper.get_location_info方法的典型用法代码示例。如果您正苦于以下问题:Python QueryHelper.get_location_info方法的具体用法?Python QueryHelper.get_location_info怎么用?Python QueryHelper.get_location_info使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类helpers.queryhelper.QueryHelper
的用法示例。
在下文中一共展示了QueryHelper.get_location_info方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_realtime
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
def get_realtime(self, uid, sim):
"""Get the location of the current realtime request.
workflow:
if there is alive memcached, we can get location from it,
else get location from db
return result to user browser
"""
ret = DotDict(status=ErrorCode.SUCCESS,
message='',
location=None)
location = QueryHelper.get_location_info(self.current_user.tid, self.db, self.redis)
locations = [location,]
locations = get_locations_with_clatlon(locations, self.db)
location = locations[0]
if (location and location.clatitude and location.clongitude):
if not location.name:
location.name = ''
if location.has_key('id'):
del location['id']
location['degree'] = float(location.degree)
location['tid'] = self.current_user.tid
ret.location = location
return ret
示例2: post
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [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)
示例3: handle_report_info
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
def handle_report_info(self, info):
"""These reports should be handled here:
POWERLOW/POWERFULL/POWEROFF/POWERDOWN
ILLEGALMOVE
ILLEGALSHAKE
EMERGENCY
REGION_ENTER
REGION_OUT
STOP
SPEED_LIMIT
"""
if not info:
return
# 1: get available location from lbmphelper
report = lbmphelper.handle_location(info, self.redis,
cellid=True, db=self.db)
if not (report['cLat'] and report['cLon']):
#NOTE: Get latest location
last_location = QueryHelper.get_location_info(report.dev_id, self.db, self.redis)
if last_location:
#NOTE: Try to make the location is complete.
locations = [last_location,]
locations = lbmphelper.get_locations_with_clatlon(locations, self.db)
last_location = locations[0]
report['lat'] = last_location['latitude']
report['lon'] = last_location['longitude']
report['cLat'] = last_location['clatitude']
report['cLon'] = last_location['clongitude']
report['name'] = last_location['name']
report['type'] = last_location['type']
logging.info("[EVENTER] The report has invalid location and use last_location. report: %s", report)
else:
logging.info("[EVENTER] The report has invalid location and last_location is invalid. report: %s", report)
current_time = int(time.time())
alarm_mobile = get_alarm_mobile(report.dev_id, self.db, self.redis)
#NOTE: in pvt, timestamp is no used, so use gps_time as timestamp
if not report.get('timestamp',None):
report['timestamp'] = report['gps_time']
if report['timestamp'] > (current_time + 24*60*60):
logging.info("[EVENTER] The report's (gps_time - current_time) is more than 24 hours, so drop it:%s", report)
return
#NOTE: If undefend, just save location into db
if info['rName'] in [EVENTER.RNAME.ILLEGALMOVE, EVENTER.RNAME.ILLEGALSHAKE]:
if str(info.get('is_notify','')) == '1': # send notify even if CF
logging.info("[EVENTER] Send notify forever, go ahead. Terminal: %s, is_notify: %s",
report.dev_id, info.get('is_notify',''))
elif alarm_mobile:
logging.info("[EVENTER] Send notify forever , go ahead. Terminal: %s, alarm_mobile: %s",
report.dev_id, alarm_mobile)
else:
mannual_status = QueryHelper.get_mannual_status_by_tid(info['dev_id'], self.db)
if int(mannual_status) == UWEB.DEFEND_STATUS.NO:
report['category'] = EVENTER.CATEGORY.REALTIME
insert_location(report, self.db, self.redis)
update_terminal_dynamic_info(self.db, self.redis, report)
logging.info("[EVENTER] %s mannual_status is undefend, drop %s report.",
info['dev_id'], info['rName'])
return
if info['rName'] in [EVENTER.RNAME.POWERDOWN, EVENTER.RNAME.POWERLOW]:
# if alert_freq_key is exists,return
alert_freq_key = get_alert_freq_key(report.dev_id + info['rName'])
alert_freq = QueryHelper.get_alert_freq_by_tid(info['dev_id'], self.db)
if alert_freq != 0:
if self.redis.exists(alert_freq_key):
logging.info("[EVENTER] Don't send duplicate %s alert to terminal:%s in %s seconds", info["rName"], report.dev_id, alert_freq)
return
else:
self.redis.setvalue(alert_freq_key, 1, time=alert_freq)
#NOTE: keep alarm info
alarm = dict(tid=report['dev_id'],
category=report['category'],
type=report['type'],
timestamp=report.get('timestamp',0),
latitude=report.get('lat',0),
longitude=report.get('lon',0),
clatitude=report.get('cLat',0),
clongitude=report.get('cLon',0),
name=report['name'] if report.get('name',None) is not None else '',
degree=report.get('degree',0),
speed=report.get('speed',0))
if info['rName'] in [EVENTER.RNAME.REGION_OUT, EVENTER.RNAME.REGION_ENTER]:
region = report['region']
alarm['region_id'] = region.region_id
record_alarm_info(self.db, self.redis, alarm)
# 2: save into database. T_LOCATION, T_EVENT
lid = insert_location(report, self.db, self.redis)
#.........这里部分代码省略.........
示例4: handle_location
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
#.........这里部分代码省略.........
# if (current_time - last_location.timestamp) > 600:
# location.gps_time = current_time
# logging.info("Tid:%s, current_time - last_location.timestamp > 600s, so use current time:%s", location.dev_id, current_time)
# else:
# logging.info("Tid:%s, current_time - last_location.timestamp <= 600s, so use last location time:%s", location.dev_id, last_location.timestamp)
# location.gps_time = last_location.timestamp
# location.lat = last_location.latitude
# location.lon = last_location.longitude
# location.cLat = last_location.clatitude
# location.cLon = last_location.clongitude
# location.type = 0
# location.gps = 0
#else:
# location.lat = 0
# location.lon = 0
# location.cLat = 0
# location.cLon = 0
# location.type = 0
# location.gps_time = int(time.time())
# location.degree = 0.00
# location.gps = 0
# #if cellid:
# # location = issue_cellid(location, db, redis)
elif location.valid == GATEWAY.LOCATION_STATUS.MOVE: # 6
logging.info("[LBMPHELPER] tid:%s gps locate flag :%s", location.dev_id, location.valid)
location.lat = 0
location.lon = 0
location.cLat = 0
location.cLon = 0
location.type = 0
location.gps_time = int(time.time())
location.degree = 0.00
location.gps = 0
if cellid:
location = issue_cellid(location, db, redis)
else: # 0,2,5
logging.info("[LBMPHELPER] tid:%s gps locate flag :%s", location.dev_id, location.valid)
location.lat = 0
location.lon = 0
location.cLat = 0
location.cLon = 0
location.type = 0
location.gps_time = int(time.time())
location.degree = 0.00
#if db:
# location.degree = get_last_degree(location, redis, db)
location.gps = 0
if cellid:
# 1: issue cellid
location = issue_cellid(location, db, redis)
if location.lon and location.lat:
# 2: check the location whether is odd
last_location = QueryHelper.get_location_info(location.dev_id, db, redis)
if last_location:
distance = get_distance(location.lon,
location.lat,
last_location.longitude,
last_location.latitude)
if distance > 5000:
login_time = QueryHelper.get_login_time_by_tid(location.dev_id, db, redis)
if last_location.timestamp < login_time:
logging.info("[LBMPHELPER] tid: %s distance:%s > 5000m, and last login time: %s, after last location timestamp: %s, use cellid location.",
location.dev_id, distance, login_time, last_location.timestamp)
else:
location.lat, location.lon = (last_location.latitude, last_location.longitude)
logging.info("[LBMPHELPER] tid:%s, distance:%s > 5000m, use last location: %s ",
location.dev_id, distance, last_location)
elif distance < 2000:
location.lat, location.lon = (last_location.latitude, last_location.longitude)
logging.info("[LBMPHELPER] tid:%s distance:%s < 2000m, use last location:%s", location.dev_id, distance, last_location)
else:
logging.info("[LBMPHELPER] tid:%s 2000m < distance:%s < 5000m, use cellid location", location.dev_id, distance)
else:
logging.info("[LBMPHELPER] tid:%s last location is none, use cellid location", location.dev_id)
if location and location.lat and location.lon:
clats, clons = get_clocation_from_ge([location.lat,], [location.lon,])
location.cLat, location.cLon = clats[0], clons[0]
# drop some odd cellid location
if location.type == 1 and location.cLat and location.cLon:
if PtInPolygon(location, DM_ZJGS_POLYGON):
location.lat = 0
location.lon = 0
location.cLat = 0
location.cLon = 0
#if (location['t'] == EVENTER.INFO_TYPE.REPORT or
# location['command'] == GATEWAY.T_MESSAGE_TYPE.LOCATIONDESC):
# NOTE: change it temporarily: in platform get loction name of all
if location.cLat and location.cLon:
location.name = get_location_name(location.cLat, location.cLon, redis)
if location['t'] == EVENTER.INFO_TYPE.POSITION:
location.category = EVENTER.CATEGORY.REALTIME
elif location['t'] == EVENTER.INFO_TYPE.REPORT:
location.category = EVENTER.CATEGORY[location.rName]
else:
location.category = EVENTER.CATEGORY.UNKNOWN
return location
示例5: post
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
def post(self):
logging.info("[UWEB] Android login test")
status = ErrorCode.SUCCESS
cid = UWEB.DUMMY_CID
oid = UWEB.DUMMY_OID
uid = ConfHelper.UWEB_CONF.test_uid
tid = ConfHelper.UWEB_CONF.test_tid
sim = ConfHelper.UWEB_CONF.test_sim
version_type = int(self.get_argument("version_type", 0))
biz_type = UWEB.BIZ_TYPE.YDWS
self.bookkeep(dict(cid=cid,
oid=oid,
uid=uid,
tid=tid,
sim=sim))
user_info = QueryHelper.get_user_by_uid(uid, self.db)
# NOTE: add cars_info, it's same as lastinfo
cars_info = {}
terminals = QueryHelper.get_terminals_by_uid(uid, biz_type, self.db)
for terminal in terminals:
# 1: get terminal
tid = terminal.tid
group_info = get_group_info_by_tid(self.db, tid)
terminal_info_key = get_terminal_info_key(tid)
terminal_cache = self.redis.getvalue(terminal_info_key)
if terminal_cache:
terminal['gps'] = terminal_cache['gps']
terminal['gsm'] = terminal_cache['gsm']
terminal['pbat'] = terminal_cache['pbat']
mobile = terminal['mobile']
terminal['keys_num'] = 0
if terminal['login'] == GATEWAY.TERMINAL_LOGIN.SLEEP:
terminal['login'] = GATEWAY.TERMINAL_LOGIN.ONLINE
# NOTE: if alias is null, provide cnum or sim instead
terminal['alias'] = QueryHelper.get_alias_by_tid(
tid, self.redis, self.db)
fobs = self.db.query("SELECT fobid FROM T_FOB"
" WHERE tid = %s", tid)
terminal['fob_list'] = [fob.fobid for fob in fobs]
terminal['sim'] = terminal['mobile']
# 2: get location
location = QueryHelper.get_location_info(tid, self.db, self.redis)
if location and not (location.clatitude or location.clongitude):
location_key = get_location_key(str(tid))
locations = [location, ]
locations = get_locations_with_clatlon(locations, self.db)
location = locations[0]
self.redis.setvalue(
location_key, location, EVENTER.LOCATION_EXPIRY)
if location and location['name'] is None:
location['name'] = ''
avatar_name, avatar_path, avatar_full_path, avatar_time = self.get_avatar_info(
mobile)
service_status = QueryHelper.get_service_status_by_tmobile(
self.db, mobile)
car_dct = {}
if location and location['type'] == 1: # cellid
location['locate_error'] = 500 # mile
car_info = dict(defend_status=terminal['defend_status'] if terminal['defend_status'] is not None else 1,
service_status=service_status,
mannual_status=terminal['mannual_status'] if terminal['mannual_status'] is not None else 1,
fob_status=terminal['fob_status'] if terminal['fob_status'] is not None else 0,
timestamp=location['timestamp'] if location else 0,
speed=location.speed if location else 0,
# NOTE: degree's type is Decimal, float() it before json_encode
degree=float(location.degree) if location else 0.00,
locate_error=location.get('locate_error', 20) if location else 20,
bt_name=terminal['bt_name'] if terminal.get('bt_name', None) is not None else '',
bt_mac=terminal['bt_mac'] if terminal.get('bt_mac', None) is not None else '',
dev_type=terminal['dev_type'] if terminal.get('dev_type', None) is not None else 'A',
name=location.name if location else '',
type=location.type if location else 1,
latitude=location['latitude'] if location else 0,
longitude=location['longitude'] if location else 0,
clatitude=location['clatitude'] if location else 0,
clongitude=location['clongitude'] if location else 0,
login=terminal['login'] if terminal['login'] is not None else 0,
gps=terminal['gps'] if terminal['gps'] is not None else 0,
gsm=terminal['gsm'] if terminal['gsm'] is not None else 0,
pbat=terminal['pbat'] if terminal['pbat'] is not None else 0,
mobile=terminal['mobile'],
owner_mobile=terminal['owner_mobile'],
alias=terminal['alias'],
#keys_num=terminal['keys_num'] if terminal['keys_num'] is not None else 0,
keys_num=0,
group_id=group_info['group_id'],
group_name=group_info['group_name'],
icon_type=terminal['icon_type'],
avatar_path=avatar_path,
#.........这里部分代码省略.........
示例6: request_realtime
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
def request_realtime(self, query, callback=None):
"""
All realtime requests in REALTIME_VALID_INTERVAL will be considered as
only one. If not, invoke gf and use handle_location of lbmphelper.
"""
location = QueryHelper.get_location_info(self.current_user.tid, self.db, self.redis)
if location and location['name'] is None:
location['name'] = ''
ret = DotDict(status=ErrorCode.SUCCESS,
message='',
location=None)
locations = [location,]
locations = get_locations_with_clatlon(locations, self.db)
location = locations[0]
if (location and location.clatitude and location.clongitude):
if location.has_key('id'):
del location['id']
location['degree'] = float(location.degree)
location['tid'] = self.current_user.tid
ret.location = location
if callback:
callback(ret)
return
lat, lon = get_latlon_from_cellid(0,0,0,0, self.current_user.sim)
clat, clon = get_clocation_from_ge([lat,],[lon,])
clat = int(clat[0]) if len(clat)>0 else 0
clon = int(clon[0]) if len(clon)>0 else 0
name = get_location_name(clat, clon, self.redis)
location = DotDict(category = 1, # cellid
dev_id = self.current_user.tid,
lat = lat,
lon = lon,
cLat = clat,
cLon = clon,
alt = 0,
gps_time = int(time.time()),
type = 1,
speed = 0.0,
degree = 0.0,
name = name,
cellid = None,
locate_error = 20)
if clat and clon:
ret.location = DotDict()
ret.location.latitude = lat
ret.location.longitude = lon
ret.location.clongitude = clon
ret.location.clatitude = clat
ret.location.timestamp = int(time.time())
ret.location.name = name
ret.location.speed = 0
ret.location.type = 1
ret.location.tid = self.current_user.tid
ret.location.degree = 0.0
ret.location.locte_error = 20
insert_location(location, self.db, self.redis)
logging.info("[UWEB] tid %s cellid query success", self.current_user.tid)
else:
ret.status = ErrorCode.LOCATION_CELLID_FAILED
ret.message = ErrorCode.ERROR_MESSAGE[ret.status]
logging.info("[UWEB] Do not find any location, and cellid query failed. tid: %s",
self.current_user.tid)
if callback:
callback(ret)
示例7: post
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
def post(self):
try:
data = DotDict(json_decode(self.request.body))
except Exception as e:
status = ErrorCode.ILLEGAL_DATA_FORMAT
logging.info("[UWEB] lastfinfo failed, message: %s, request: \n%s",
ErrorCode.ERROR_MESSAGE[status], self.request.body)
self.write_ret(status)
return
try:
cars_info = OrderedDict()
usable = 0 # nothing is modified, the cars_info is no use, use the data last time
status = ErrorCode.SUCCESS
terminals = self.db.query("SELECT tid FROM T_TERMINAL_INFO"
" WHERE service_status = %s"
" AND owner_mobile = %s"
" AND login_permit = 1"
" ORDER BY LOGIN DESC",
UWEB.SERVICE_STATUS.ON, self.current_user.uid)
tids = [terminal.tid for terminal in terminals]
# 1 inquery data
for tid in tids:
# 1: get terminal info
terminal = QueryHelper.get_terminal_info(tid, self.db, self.redis)
if terminal['login'] == GATEWAY.TERMINAL_LOGIN.SLEEP:
terminal['login'] = GATEWAY.TERMINAL_LOGIN.ONLINE
# 2: get location
location = QueryHelper.get_location_info(tid, self.db, self.redis)
if location and not (location.clatitude or location.clongitude):
location_key = get_location_key(str(tid))
locations = [location,]
locations = get_locations_with_clatlon(locations, self.db)
location = locations[0]
self.redis.setvalue(location_key, location, EVENTER.LOCATION_EXPIRY)
if location and location['name'] is None:
location['name'] = ''
if location and location['type'] == 1: # cellid
location['locate_error'] = 500 # mile
car_dct = {}
car_info=dict(defend_status=terminal['defend_status'] if terminal['defend_status'] is not None else 1,
mannual_status=terminal['mannual_status'] if terminal['mannual_status'] is not None else 1,
fob_status=terminal['fob_status'] if terminal['fob_status'] is not None else 0,
timestamp=location['timestamp'] if location else 0,
speed=location.speed if location else 0,
# NOTE: degree's type is Decimal, float() it before json_encode
degree=float(location.degree) if location else 0.00,
locate_error=location.get('locate_error', 20) if location else 20,
name=location.name if location else '',
type=location.type if location else 1,
latitude=location['latitude'] if location else 0,
longitude=location['longitude'] if location else 0,
clatitude=location['clatitude'] if location else 0,
clongitude=location['clongitude'] if location else 0,
login=terminal['login'] if terminal['login'] is not None else 0,
bt_name=terminal.get('bt_name', '') if terminal else '',
bt_mac=terminal.get('bt_mac', '') if terminal else '',
gps=terminal['gps'] if terminal['gps'] is not None else 0,
gsm=terminal['gsm'] if terminal['gsm'] is not None else 0,
pbat=terminal['pbat'] if terminal['pbat'] is not None else 0,
mobile=terminal['mobile'],
owner_mobile=terminal['owner_mobile'],
alias=terminal['alias'],
#keys_num=terminal['keys_num'] if terminal['keys_num'] is not None else 0,
keys_num=0,
fob_list=terminal['fob_list'] if terminal['fob_list'] else [])
car_dct[tid]=car_info
cars_info.update(car_dct)
lastinfo_key = get_lastinfo_key(self.current_user.uid)
# BIG NOTE: here, compare lastinfo and cars_info as str
lastinfo = self.redis.get(lastinfo_key)
lastinfo_time_key = get_lastinfo_time_key(self.current_user.uid)
lastinfo_time = self.redis.getvalue(lastinfo_time_key)
if lastinfo == str(cars_info):
pass
else:
lastinfo_time = int(time.time())
self.redis.setvalue(lastinfo_key, cars_info)
self.redis.setvalue(lastinfo_time_key, lastinfo_time)
track_tid = data.get('track_tid', None) # use cache
track_info = []
query_time = data.get('time', None)
track_time = data.get('track_time', query_time)
# 2 check whether provide usable data
if data.get('cache', None): # use cache
if query_time is not None: # use time
if int(query_time) < lastinfo_time:
#.........这里部分代码省略.........
示例8: _on_finish
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
def _on_finish(db):
self.db = db
try:
data = DotDict(json_decode(self.request.body))
biz_type = data.get("biz_type", UWEB.BIZ_TYPE.YDWS)
track_list = data.get("track_list", [])
version_type = int(data.get("version_type", 0))
logging.info("[UWEB] Lastposition request: %s",
data)
except Exception as e:
self.write_ret(ErrorCode.ILLEGAL_DATA_FORMAT)
self.finish()
return
try:
res = OrderedDict()
usable = 1
status = ErrorCode.SUCCESS
if data.get('tids', None):
terminals = []
for tid in data.tids:
terminal = QueryHelper.get_terminal_info(tid, self.db, self.redis)
if terminal:
terminals.append(DotDict(tid=tid))
else:
logging.exception("[UWEB] tid: %s can not be found.",
tid)
else:
if self.current_user.oid != UWEB.DUMMY_OID: # operator,Note: operator also has cid, so we check oid firstly.
groups = self.db.query("SELECT group_id "
" FROM T_GROUP_OPERATOR"
" WHERE oper_id = %s",
self.current_user.oid)
gids = [g.group_id for g in groups]
terminals = self.db.query("SELECT tid FROM T_TERMINAL_INFO"
" WHERE (service_status = %s"
" OR service_status = %s)"
" AND biz_type = %s"
" AND group_id IN %s"
" ORDER BY LOGIN DESC",
UWEB.SERVICE_STATUS.ON,
UWEB.SERVICE_STATUS.TO_BE_ACTIVATED,
biz_type,
tuple(DUMMY_IDS + gids))
elif self.current_user.cid != UWEB.DUMMY_CID: # Corp
groups = self.db.query("SELECT id gid, name "
" FROM T_GROUP"
" WHERE corp_id = %s",
self.current_user.cid)
gids = [g.gid for g in groups]
terminals = self.db.query("SELECT tid FROM T_TERMINAL_INFO"
" WHERE (service_status = %s"
" OR service_status = %s)"
" AND biz_type = %s"
" AND group_id IN %s"
" ORDER BY LOGIN DESC",
UWEB.SERVICE_STATUS.ON,
UWEB.SERVICE_STATUS.TO_BE_ACTIVATED,
biz_type,
tuple(DUMMY_IDS + gids))
else : # individual user
#NOTE: only show the terminals with login_permit is 1
terminals = self.db.query("SELECT tid FROM T_TERMINAL_INFO"
" WHERE (service_status = %s"
" OR service_status = %s)"
" AND biz_type = %s"
" AND owner_mobile = %s"
" AND login_permit = 1"
" ORDER BY login DESC",
UWEB.SERVICE_STATUS.ON,
UWEB.SERVICE_STATUS.TO_BE_ACTIVATED,
biz_type,
self.current_user.uid)
_now_time = time.time()
if (_now_time - _start_time) > 5:
logging.info("[UWEB] Lastinfo step1 used time: %s > 5s",
_now_time - _start_time)
tids = [terminal.tid for terminal in terminals]
for tid in tids:
_now_time = time.time()
if (_now_time - _start_time) > 5:
logging.info("[UWEB] Lastinfo step2 used time: %s > 5s",
_now_time - _start_time)
res[tid] = {'car_info':{},
'track_info':[]}
# 0: get group info
group_info = get_group_info_by_tid(self.db, tid)
# 1: get terminal info
terminal = QueryHelper.get_terminal_info(tid, self.db, self.redis)
mobile = terminal['mobile']
if terminal['login'] == GATEWAY.TERMINAL_LOGIN.SLEEP:
terminal['login'] = GATEWAY.TERMINAL_LOGIN.ONLINE
# 2: get location
location = QueryHelper.get_location_info(tid, self.db, self.redis)
if location and not (location.clatitude or location.clongitude):
#.........这里部分代码省略.........
示例9: _on_finish
# 需要导入模块: from helpers.queryhelper import QueryHelper [as 别名]
# 或者: from helpers.queryhelper.QueryHelper import get_location_info [as 别名]
#.........这里部分代码省略.........
# self.current_user.cid)
res_type = 2
else:
self.redis.setvalue(terminal_info_key, (tids, current_time))
_now_time = time.time()
if (_now_time - _start_time) > 5:
logging.info(
"[UWEB] Inclastinfo step1_group used time: %s > 5s, cid: %s, gid: %s",
_now_time - _start_time,
self.current_user.cid,
group.gid,
)
for tid in tids:
_now_time = time.time()
if (_now_time - _start_time) > 5:
logging.info(
"[UWEB] Inclastinfo step2 used time: %s > 5s, cid: %s",
_now_time - _start_time,
self.current_user.cid,
)
group["trackers"][tid] = {}
# 1: get terminal info
terminal = QueryHelper.get_terminal_info(tid, self.db, self.redis)
if terminal["login"] == GATEWAY.TERMINAL_LOGIN.SLEEP:
terminal["login"] = GATEWAY.TERMINAL_LOGIN.ONLINE
if terminal["login"] == GATEWAY.TERMINAL_LOGIN.ONLINE:
res["online"] += 1
else:
res["offline"] += 1
# 2: get location
location = QueryHelper.get_location_info(tid, self.db, self.redis)
if location and not (location.clatitude or location.clongitude):
location_key = get_location_key(str(tid))
locations = [location]
# NOTE: offset latlon
# locations = get_locations_with_clatlon(locations, self.db)
location = locations[0]
self.redis.setvalue(location_key, location, EVENTER.LOCATION_EXPIRY)
if location and location["name"] is None:
location["name"] = ""
if location and location["type"] == 1: # cellid
location["locate_error"] = 500 # mile
acc_status_info = QueryHelper.get_acc_status_info_by_tid(
self.client_id, tid, self.db, self.redis
)
acc_message = acc_status_info["acc_message"]
op_status = acc_status_info["op_status"]
# 1: build the basic_info
basic_info = dict(
defend_status=terminal["defend_status"] if terminal["defend_status"] is not None else 1,
mannual_status=terminal["mannual_status"] if terminal["mannual_status"] is not None else 1,
acc_message=acc_message,
op_status=op_status,
fob_status=terminal["fob_status"] if terminal["fob_status"] is not None else 0,
timestamp=location["timestamp"] if location else 0,
speed=location.speed if location else 0,
# NOTE: degree's type is Decimal,
# float() it before json_encode
degree=float(location.degree) if location else 0.00,