access list bug

This commit is contained in:
曹前明 2022-07-01 14:54:45 +08:00
parent 90d42d4ad5
commit c9a147f27c
3 changed files with 16 additions and 21 deletions

View File

@ -55,18 +55,10 @@ class AccessCreateSerializer(CustomModelSerializer):
class AccessSerializer(CustomModelSerializer):
obj_ = serializers.SerializerMethodField()
employee_name = serializers.CharField(source='employee.name', read_only=True)
post_name = serializers.CharField(source='post.name', read_only=True)
dept_name = serializers.CharField(source='dept.name', read_only=True)
class Meta:
model = Access
fields = '__all__'
def get_obj_(self, obj):
if obj.obj_cate == 'employee':
ep = Employee.objects.filter(id=obj.obj).first()
if ep:
return {'id': ep.id, 'name': ep.name}
elif obj.obj_cate == 'post':
pt = Post.objects.filter(id=obj.obj).first()
if pt:
return {'id': pt.id, 'name': pt.name}

View File

@ -48,4 +48,5 @@ class AccessViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomG
queryset = Access.objects.all()
create_serializer_class = AccessCreateSerializer
serializer_class = AccessSerializer
filterset_fields = ['area', 'type', 'obj_cate', 'post', 'dept']
filterset_fields = ['area', 'type', 'obj_cate', 'post', 'dept', 'employee']
select_related_fields = ['area', 'post', 'dept', 'employee']

View File

@ -24,12 +24,14 @@ class EcmService:
"""事件处理服务
"""
ep_default_dict = {
'area_fix_id': None, # 当前所在固定区域ID
'time0': None, # 定位首次出现时间戳
"time1": None, # 首次在该区域时间戳
"time2": int(time.time()), # 当前时间戳
}
@classmethod
def get_ep_default(cls):
return {
'area_fix_id': None, # 当前所在固定区域ID
'time0': None, # 定位首次出现时间戳
"time1": None, # 首次在该区域时间戳
"time2": int(time.time()), # 当前时间戳
}
def create_remind_and_speak(cls):
"""
@ -91,9 +93,9 @@ class EcmService:
# 更新人员位置信息缓存
key_str = 'ep_{}'.format(blts.employee.id)
ep_loc_dict = cache.get_or_set(
key_str, cls.ep_default_dict, timeout=None
key_str, cls.get_ep_default(), timeout=None
)
if ep_loc_dict['area_fix_id'] != area.id: # 如果区域未变化则不动
if ep_loc_dict['area_fix_id'] != area.id: # 如果区域未变化则不动
ep_loc_dict['time1'] = ep_loc_dict['time2']
ep_loc_dict['area_fix_id'] = area.id
cache.set(key_str, ep_loc_dict)
@ -166,7 +168,7 @@ class EcmService:
time2 = int(time.time())
key_str = 'ep_{}'.format(blts.employee.id)
ep_loc_dict = cache.get_or_set(
key_str, cls.ep_default_dict, timeout=None
key_str, cls.get_ep_default(), timeout=None
)
ep_loc_dict['time2'] = time2
# 从缓存里获取固定区域列表信息