增加access筛选条件
This commit is contained in:
parent
46bde26f48
commit
90d42d4ad5
|
@ -48,3 +48,4 @@ class AccessViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomG
|
||||||
queryset = Access.objects.all()
|
queryset = Access.objects.all()
|
||||||
create_serializer_class = AccessCreateSerializer
|
create_serializer_class = AccessCreateSerializer
|
||||||
serializer_class = AccessSerializer
|
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)
|
vchannel = models.ForeignKey(TDevice, verbose_name='视频通道', on_delete=models.CASCADE)
|
||||||
always_on = models.BooleanField("始终开启", default=True)
|
always_on = models.BooleanField("始终开启", default=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
unique_together = ('algo', 'vchannel')
|
||||||
|
|
||||||
|
|
||||||
class NotifySetting(CommonAModel):
|
class NotifySetting(CommonAModel):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
from apps.am.serializers import AreaSimpleSerializer
|
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 apps.utils.serializers import CustomModelSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from apps.system.serializers import UserSimpleSerializer
|
from apps.system.serializers import UserSimpleSerializer
|
||||||
|
@ -61,4 +63,27 @@ class RemindSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Remind
|
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 django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
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('event', EventViewSet, basename='event')
|
||||||
router.register('notify_setting', NotifySettingViewSet, basename='notify_setting')
|
router.register('notify_setting', NotifySettingViewSet, basename='notify_setting')
|
||||||
router.register('remind', RemindViewSet, basename='remind')
|
router.register('remind', RemindViewSet, basename='remind')
|
||||||
|
router.register('algo_vchannel', AlgoChannelViewSet, basename='algo_vchannel')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
from apps.ecm.models import Event, EventCate, Remind, NotifySetting
|
from apps.ecm.models import AlgoChannel, Event, EventCate, Remind, NotifySetting
|
||||||
from apps.ecm.serializers import (EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
|
from apps.ecm.serializers import (AlgoChannelCreateSerializer, AlgoChannelCreatesSerializer, AlgoChannelSerializer, EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
|
||||||
EventSerializer, RemindSerializer, NotifySettingsSerializer)
|
EventSerializer, RemindSerializer, NotifySettingsSerializer)
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
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 django.db import transaction
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
@ -13,7 +13,7 @@ from rest_framework.response import Response
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, CustomGenericViewSet):
|
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()
|
queryset = EventCate.objects.all()
|
||||||
list_serializer_class = EventCateListSerializer
|
list_serializer_class = EventCateListSerializer
|
||||||
create_serializer_class = EventCateCreateUpdateSerializer
|
create_serializer_class = EventCateCreateUpdateSerializer
|
||||||
|
@ -22,6 +22,30 @@ class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, Custo
|
||||||
filterset_fields = ['self_algo']
|
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):
|
class NotifySettingViewSet(CustomModelViewSet):
|
||||||
queryset = NotifySetting.objects.all()
|
queryset = NotifySetting.objects.all()
|
||||||
serializer_class = NotifySettingsSerializer
|
serializer_class = NotifySettingsSerializer
|
||||||
|
@ -70,4 +94,3 @@ 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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
type = models.PositiveSmallIntegerField('设备类型', choices=DEVICE_CHOICE)
|
||||||
code = models.CharField('设备唯一标识', max_length=50, db_index=True)
|
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,
|
location = models.JSONField('位置信息', default=dict,
|
||||||
null=False, blank=True)
|
null=False, blank=True)
|
||||||
area = models.ForeignKey(Area, on_delete=models.CASCADE,
|
area = models.ForeignKey(Area, on_delete=models.CASCADE,
|
||||||
|
|
|
@ -15,6 +15,12 @@ class TDeviceSerializer(CustomModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
|
class TDeviceSimpleSerializer(CustomModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = TDevice
|
||||||
|
fields = ['id', 'name', 'code']
|
||||||
|
|
||||||
|
|
||||||
class RequestCommonSerializer(serializers.Serializer):
|
class RequestCommonSerializer(serializers.Serializer):
|
||||||
method_choice = (
|
method_choice = (
|
||||||
('post', 'post'),
|
('post', 'post'),
|
||||||
|
|
|
@ -11,10 +11,15 @@ from apps.am.models import Area
|
||||||
from rest_framework.views import APIView
|
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': '*'},
|
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||||
serializer_class=Serializer)
|
serializer_class=Serializer)
|
||||||
def vchannel(self, request):
|
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)
|
_, res = dhClient.request(**dhapis['channel_list'], json=request.data)
|
||||||
codes = []
|
codes = []
|
||||||
if res.get('pageData', None):
|
if res.get('pageData', None):
|
||||||
|
|
Loading…
Reference in New Issue