提醒已读

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() 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): 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) res = requests.get(url=pic_url, verify=False)
path = '/media/' + timezone.now().strftime('%Y/%m/%d/') path = '/media/' + timezone.now().strftime('%Y/%m/%d/')
full_path = settings.BASE_DIR + path 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.models import AlgoChannel, Event, EventCate, Remind, NotifySetting
from apps.ecm.serializers import (AlgoChannelCreateSerializer, AlgoChannelCreatesSerializer, AlgoChannelSerializer, EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer, from apps.ecm.serializers import (AlgoChannelCreateSerializer, AlgoChannelCreatesSerializer, AlgoChannelSerializer, EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
EventSerializer, RemindSerializer, NotifySettingsSerializer) EventSerializer, RemindSerializer, NotifySettingsSerializer)
from apps.ecm.service import update_remind_read
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin
from django.db import transaction from django.db import transaction
@ -9,6 +11,7 @@ from rest_framework.decorators import action
from rest_framework import serializers from rest_framework import serializers
from django.utils import timezone from django.utils import timezone
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.exceptions import PermissionDenied
from apps.utils.snowflake import idWorker from apps.utils.snowflake import idWorker
@ -70,6 +73,9 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
处理事件 处理事件
""" """
obj = self.get_object() 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 data = request.data
obj.mark = data.get('mark') obj.mark = data.get('mark')
obj.handle_desc = data.get('handle_desc', '') obj.handle_desc = data.get('handle_desc', '')
@ -78,6 +84,11 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
obj.save() obj.save()
return Response() 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): class RemindViewSet(ListModelMixin, CustomGenericViewSet):
perms_map = {'get': 'envent:view'} perms_map = {'get': 'envent:view'}
@ -102,3 +113,20 @@ class RemindViewSet(ListModelMixin, CustomGenericViewSet):
serializer = self.get_serializer(queryset, many=True) serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data) 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):
# """标记已读
# 标记已读
# """