提醒已读
This commit is contained in:
parent
adc6781854
commit
30946793b8
|
@ -26,6 +26,12 @@ from apps.vm.models import Visit
|
|||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
|
||||
def update_remind_read(event: Event, user: User):
|
||||
qs = Remind.objects.filter(event=event, recipient=user, is_read=False)
|
||||
if qs.exists():
|
||||
qs.update(is_read=True)
|
||||
|
||||
|
||||
def get_area_info_from_cache(target: str, cache: list):
|
||||
"""从区域信息缓存里匹配到所在区域
|
||||
|
||||
|
@ -46,7 +52,7 @@ def save_dahua_pic(pic_url: str):
|
|||
"""保存大华报警图片到本地
|
||||
返回本地路径
|
||||
"""
|
||||
file_name = pic_url.split('/')[-1].split('?')[-1]
|
||||
file_name = pic_url.split('/')[-1].split('?')[0]
|
||||
res = requests.get(url=pic_url, verify=False)
|
||||
path = '/media/' + timezone.now().strftime('%Y/%m/%d/')
|
||||
full_path = settings.BASE_DIR + path
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
|
||||
from threading import Thread
|
||||
from apps.ecm.models import AlgoChannel, Event, EventCate, Remind, NotifySetting
|
||||
from apps.ecm.serializers import (AlgoChannelCreateSerializer, AlgoChannelCreatesSerializer, AlgoChannelSerializer, EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
|
||||
EventSerializer, RemindSerializer, NotifySettingsSerializer)
|
||||
from apps.ecm.service import update_remind_read
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin
|
||||
from django.db import transaction
|
||||
|
@ -9,6 +11,7 @@ from rest_framework.decorators import action
|
|||
from rest_framework import serializers
|
||||
from django.utils import timezone
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.exceptions import PermissionDenied
|
||||
from apps.utils.snowflake import idWorker
|
||||
|
||||
|
||||
|
@ -70,6 +73,9 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
|
|||
处理事件
|
||||
"""
|
||||
obj = self.get_object()
|
||||
# 判断当前用户有无处理权限
|
||||
if (not Remind.objects.filter(event=obj, recipient=request.user, can_handle=True).exists()) and (not request.user.is_superuser):
|
||||
raise PermissionDenied('您无权处理该事件')
|
||||
data = request.data
|
||||
obj.mark = data.get('mark')
|
||||
obj.handle_desc = data.get('handle_desc', '')
|
||||
|
@ -78,6 +84,11 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
|
|||
obj.save()
|
||||
return Response()
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
obj = self.get_object()
|
||||
Thread(target=update_remind_read, args=(obj, request.user), daemon=True).start()
|
||||
return super().retrieve(request, *args, **kwargs)
|
||||
|
||||
|
||||
class RemindViewSet(ListModelMixin, CustomGenericViewSet):
|
||||
perms_map = {'get': 'envent:view'}
|
||||
|
@ -102,3 +113,20 @@ class RemindViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
||||
# class MyRemindViewSet(ListModelMixin, CustomGenericViewSet):
|
||||
# perms_map = {'get': '*'}
|
||||
# serializer_class = RemindSerializer
|
||||
# select_related_fields = ['recipient', 'event']
|
||||
# prefetch_related_fields = ['event__cates']
|
||||
|
||||
# def get_queryset(self):
|
||||
# return Remind.objects.filter(recipient=self.request.user)
|
||||
|
||||
# @action(methods=['post'], detail=True, perms_map={'post': '*'})
|
||||
# def label_read(self, request, *args, **kwargs):
|
||||
# """标记已读
|
||||
|
||||
# 标记已读
|
||||
# """
|
||||
|
|
Loading…
Reference in New Issue