factory/apps/am/tasks.py

30 lines
999 B
Python

from __future__ import absolute_import, unicode_literals
from apps.utils.tasks import CustomTask
from apps.am.models import Area
from celery import shared_task
from django.core.cache import cache
from shapely.geometry import Polygon
@shared_task(base=CustomTask)
def cache_areas_info():
"""
缓存区域信息
"""
area_list = []
for i in Area.objects.filter(is_hidden=False).exclude(third_info__xx_rail=None).order_by('number'):
points = []
for item in i.third_info['xx_rail']['detail']['polygon']['points']:
points.append((item['x'], item['y']))
area_dict = {
'id': i.id,
'type': i.type,
'floor_no': i.third_info['xx_rail']['detail']['floorNo'],
'polygon': Polygon(points),
'stay_minute_min': i.stay_minute_min,
'stay_minute_max': i.stay_minute_max
}
area_list.append(area_dict)
cache.set('area_list', area_list, timeout=None)
return area_list