增加access筛选条件
This commit is contained in:
parent
46bde26f48
commit
90d42d4ad5
|
@ -48,3 +48,4 @@ 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']
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2022-07-01 06:19
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('third', '0002_alter_tdevice_name'),
|
||||
('ecm', '0002_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name='algochannel',
|
||||
unique_together={('algo', 'vchannel')},
|
||||
),
|
||||
]
|
|
@ -38,6 +38,9 @@ class AlgoChannel(BaseModel):
|
|||
vchannel = models.ForeignKey(TDevice, verbose_name='视频通道', on_delete=models.CASCADE)
|
||||
always_on = models.BooleanField("始终开启", default=True)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('algo', 'vchannel')
|
||||
|
||||
|
||||
class NotifySetting(CommonAModel):
|
||||
"""
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
from apps.am.serializers import AreaSimpleSerializer
|
||||
from apps.ecm.models import EventCate, Remind, NotifySetting, Event
|
||||
from apps.ecm.models import AlgoChannel, EventCate, Remind, NotifySetting, Event
|
||||
from apps.third.serializers import TDeviceSimpleSerializer
|
||||
from apps.third.models import TDevice
|
||||
from apps.utils.serializers import CustomModelSerializer
|
||||
from rest_framework import serializers
|
||||
from apps.system.serializers import UserSimpleSerializer
|
||||
|
@ -61,4 +63,27 @@ class RemindSerializer(CustomModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = Remind
|
||||
fields = '__all__'
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class AlgoChannelCreateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = AlgoChannel
|
||||
fields = ['algo', 'vchannel', 'always_on']
|
||||
|
||||
|
||||
class AlgoChannelCreatesSerializer(CustomModelSerializer):
|
||||
vchannels = serializers.PrimaryKeyRelatedField(queryset=TDevice.objects.all(), many=True, label="视频通道列表")
|
||||
|
||||
class Meta:
|
||||
model = AlgoChannel
|
||||
fields = ['algo', 'vchannels']
|
||||
|
||||
|
||||
class AlgoChannelSerializer(CustomModelSerializer):
|
||||
algo_ = EventCateSimpleSerializer(source='algo', read_only=True)
|
||||
vchannel_ = TDeviceSimpleSerializer(source='vchannel', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = AlgoChannel
|
||||
fields = '__all__'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
from apps.ecm.views import EventCateViewSet, NotifySettingViewSet, EventViewSet, RemindViewSet
|
||||
from apps.ecm.views import AlgoChannelViewSet, EventCateViewSet, NotifySettingViewSet, EventViewSet, RemindViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
|
@ -11,6 +11,7 @@ router.register('event_cate', EventCateViewSet, basename='event_cate')
|
|||
router.register('event', EventViewSet, basename='event')
|
||||
router.register('notify_setting', NotifySettingViewSet, basename='notify_setting')
|
||||
router.register('remind', RemindViewSet, basename='remind')
|
||||
router.register('algo_vchannel', AlgoChannelViewSet, basename='algo_vchannel')
|
||||
urlpatterns = [
|
||||
path(API_BASE_URL, include(router.urls)),
|
||||
]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
|
||||
from apps.ecm.models import Event, EventCate, Remind, NotifySetting
|
||||
from apps.ecm.serializers import (EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
|
||||
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.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin
|
||||
from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin
|
||||
from django.db import transaction
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework import serializers
|
||||
|
@ -13,7 +13,7 @@ from rest_framework.response import Response
|
|||
|
||||
# Create your views here.
|
||||
class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, CustomGenericViewSet):
|
||||
perms_map = {'put': 'event_cate:update', 'post': 'event_cate:create'}
|
||||
perms_map = {'get': '*', 'put': 'event_cate:update', 'post': 'event_cate:create'}
|
||||
queryset = EventCate.objects.all()
|
||||
list_serializer_class = EventCateListSerializer
|
||||
create_serializer_class = EventCateCreateUpdateSerializer
|
||||
|
@ -22,6 +22,30 @@ class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, Custo
|
|||
filterset_fields = ['self_algo']
|
||||
|
||||
|
||||
class AlgoChannelViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, CustomGenericViewSet):
|
||||
perms_map = {'get': '*', 'post': 'event_cate:update', 'delete': 'event_cate:create'}
|
||||
queryset = AlgoChannel.objects.all()
|
||||
create_serializer_class = AlgoChannelCreateSerializer
|
||||
serializer_class = AlgoChannelSerializer
|
||||
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'event_cate:update'},
|
||||
serializer_class=AlgoChannelCreatesSerializer)
|
||||
def creates(self, request, pk=None):
|
||||
"""批量添加摄像头
|
||||
|
||||
批量添加摄像头
|
||||
"""
|
||||
serializer = AlgoChannelCreatesSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
vdata = serializer.validated_data
|
||||
acs = []
|
||||
for i in vdata['vchannels']:
|
||||
acs.append(AlgoChannel(algo=vdata['algo'], vchannel=i))
|
||||
AlgoChannel.objects.bulk_create(objs=acs, ignore_conflicts=False)
|
||||
return Response()
|
||||
|
||||
|
||||
class NotifySettingViewSet(CustomModelViewSet):
|
||||
queryset = NotifySetting.objects.all()
|
||||
serializer_class = NotifySettingsSerializer
|
||||
|
@ -70,4 +94,3 @@ class RemindViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2022-07-01 05:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('third', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='tdevice',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='名称'),
|
||||
),
|
||||
]
|
|
@ -32,7 +32,7 @@ class TDevice(BaseModel):
|
|||
)
|
||||
type = models.PositiveSmallIntegerField('设备类型', choices=DEVICE_CHOICE)
|
||||
code = models.CharField('设备唯一标识', max_length=50, db_index=True)
|
||||
name = models.CharField('设备名称', max_length=50)
|
||||
name = models.CharField('名称', max_length=50, null=True, blank=True)
|
||||
location = models.JSONField('位置信息', default=dict,
|
||||
null=False, blank=True)
|
||||
area = models.ForeignKey(Area, on_delete=models.CASCADE,
|
||||
|
|
|
@ -15,6 +15,12 @@ class TDeviceSerializer(CustomModelSerializer):
|
|||
fields = '__all__'
|
||||
|
||||
|
||||
class TDeviceSimpleSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = TDevice
|
||||
fields = ['id', 'name', 'code']
|
||||
|
||||
|
||||
class RequestCommonSerializer(serializers.Serializer):
|
||||
method_choice = (
|
||||
('post', 'post'),
|
||||
|
|
|
@ -11,10 +11,15 @@ from apps.am.models import Area
|
|||
from rest_framework.views import APIView
|
||||
|
||||
|
||||
class TDeviceViewSet(CustomGenericViewSet):
|
||||
class TDeviceViewSet(ListModelMixin, CustomGenericViewSet):
|
||||
"""
|
||||
三方设备接口
|
||||
"""
|
||||
queryset = TDevice.objects.all()
|
||||
serializer_class = TDeviceSerializer
|
||||
ordering = ['code', '-create_time']
|
||||
filterset_fields = ['type']
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||
serializer_class=Serializer)
|
||||
def vchannel(self, request):
|
||||
|
@ -23,7 +28,7 @@ class TDeviceViewSet(CustomGenericViewSet):
|
|||
|
||||
视频通道列表
|
||||
"""
|
||||
request.data.update({'channelTypeList': ["1", "2", "3"]})
|
||||
request.data.update({'channelTypeList': ["1"]})
|
||||
_, res = dhClient.request(**dhapis['channel_list'], json=request.data)
|
||||
codes = []
|
||||
if res.get('pageData', None):
|
||||
|
|
Loading…
Reference in New Issue