diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 04cf88f6..91be018b 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -202,7 +202,7 @@ def create_remind(event: Event): # 开始发送通知 for i in Remind.objects.filter(event=event): if i.notify_setting.sms_enable: - if i.recipient.employee.phone: + if i.recipient.employee.phone: # 短信通知 Thread(target=send_sms, args=(i.recipient.employee.phone, '1001', {'code': '5678'}), daemon=True).start() if i.notify_setting.wechat_enable: diff --git a/apps/third/filters.py b/apps/third/filters.py new file mode 100644 index 00000000..9296a947 --- /dev/null +++ b/apps/third/filters.py @@ -0,0 +1,17 @@ +from django_filters import rest_framework as filters +from .models import TDevice + + +class TDeviceFilterSet(filters.FilterSet): + state = filters.CharFilter(method='filter_state', label="used/unused") + + class Meta: + model = TDevice + fields = ['type', 'area', 'employee', 'obj_cate', 'state'] + + def filter_used(self, queryset, name, value): + if value == 'unused': + queryset = queryset.filter(employee=None) + elif value == 'used': + queryset = queryset.exclude(employee=None) + return queryset diff --git a/apps/third/speaker.py b/apps/third/speaker.py index dabd1ca6..5255e5fa 100644 --- a/apps/third/speaker.py +++ b/apps/third/speaker.py @@ -8,7 +8,7 @@ from django.conf import settings from apps.third.errors import SP_REQUEST_ERROR from apps.third.models import Tlog -from apps.utils.tools import print_roundtrip +from apps.utils.tools import print_roundtrip, ranstr from apps.third.tapis import spapis from django.utils.timezone import now @@ -119,17 +119,10 @@ class SpClient: json = { "sns": sns, "type": "req", - "name": "priority_task_play", - "source": "noreplay", + "name": "songs_queue_append", "params": { - "count": 1, - "length": 0, - "level": 99804, - "name": "实时播放", - "tid": "x", + "tid": ranstr(6), "vol": 50, - "type": 5, - "uid": "y", "urls": [{ "name": "alarm.mp3", "uri": settings.BASE_URL + path diff --git a/apps/third/views_d.py b/apps/third/views_d.py index 3d876116..85badc4e 100644 --- a/apps/third/views_d.py +++ b/apps/third/views_d.py @@ -1,3 +1,4 @@ +from apps.third.filters import TDeviceFilterSet from apps.third.models import BltBind, TDevice, Tlog from apps.third.serializers import BindAreaSerializer, BltBindCreateSerializer, BltQuerySerializer, BltSerializer, LabelLocationSerializer, TDeviceSerializer, TlogSerializer from apps.utils.viewsets import CustomGenericViewSet @@ -117,7 +118,7 @@ class TDeviceViewSet(ListModelMixin, DestroyModelMixin, CustomGenericViewSet): queryset = TDevice.objects.all() serializer_class = TDeviceSerializer ordering = ['-create_time'] - filterset_fields = ['type', 'area', 'employee', 'obj_cate'] + filterset_class = TDeviceFilterSet select_related_fields = ['employee', 'area', 'employee__post', 'employee__belong_dept'] def list(self, request, *args, **kwargs): diff --git a/apps/vm/serializers.py b/apps/vm/serializers.py index bb33227f..07c22e19 100644 --- a/apps/vm/serializers.py +++ b/apps/vm/serializers.py @@ -7,6 +7,7 @@ from rest_framework.exceptions import ParseError from django.db import transaction from apps.third.clients import dhClient from apps.third.tapis import dhapis +from apps.system.serializers import UserSimpleSerializer class VisitCreateUpdateSerializer(CustomModelSerializer): @@ -17,6 +18,8 @@ class VisitCreateUpdateSerializer(CustomModelSerializer): class VisitSerializer(CustomModelSerializer): + receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True) + class Meta: model = Visit fields = '__all__' @@ -67,3 +70,16 @@ class VpeopleSerializer(CustomModelSerializer): class VisitorRegisterSerializer(serializers.Serializer): name = serializers.CharField(label="姓名") username = serializers.CharField(label='用户名', min_length=6) + + +class VisitDetailSerializer(CustomModelSerializer): + receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True) + visitors_ = serializers.SerializerMethodField() + + class Meta: + model = Visit + fields = '__all__' + + def get_visitors_(self, obj): + objs = Vpeople.objects.filter(visit=obj).order_by('is_main', 'create_time') + return VpeopleSerializer(instance=objs, many=True).data diff --git a/apps/vm/views.py b/apps/vm/views.py index 3287152e..c777b5a0 100644 --- a/apps/vm/views.py +++ b/apps/vm/views.py @@ -3,7 +3,7 @@ from apps.hrm.models import Employee from apps.system.models import User from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet, GenericViewSet from apps.vm.models import Visit, Visitor, Vpeople -from apps.vm.serializers import VisitCreateUpdateSerializer, VisitSerializer, VisitorCreateSerializer, VisitorRegisterSerializer, VisitorSerializer, VpeopleCreateSerializer, VpeopleSerializer +from apps.vm.serializers import VisitCreateUpdateSerializer, VisitDetailSerializer, VisitSerializer, VisitorCreateSerializer, VisitorRegisterSerializer, VisitorSerializer, VpeopleCreateSerializer, VpeopleSerializer from rest_framework.decorators import action from rest_framework.response import Response from rest_framework.exceptions import ParseError @@ -20,6 +20,7 @@ class VisitViewSet(CustomModelViewSet): create_serializer_class = VisitCreateUpdateSerializer update_serializer_class = VisitCreateUpdateSerializer serializer_class = VisitSerializer + retrieve_serializer_class = VisitDetailSerializer def get_queryset(self): user = self.request.user @@ -90,6 +91,7 @@ class VpeopleViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Destr create_serializer_class = VpeopleCreateSerializer serializer_class = VpeopleSerializer filterset_fields = ['visit'] + ordering = ['is_main', 'create_time'] def destroy(self, request, *args, **kwargs): obj = self.get_object()