提醒已读

This commit is contained in:
曹前明 2022-07-04 14:29:50 +08:00
parent adc6781854
commit 30946793b8
2 changed files with 35 additions and 1 deletions

View File

@ -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

View File

@ -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):
# """标记已读
# 标记已读
# """