门通道授权 同步人脸库 人像下发状态
This commit is contained in:
parent
dfd6ccef18
commit
750c7c5ead
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2022-04-21 07:11
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('hrm', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='employee',
|
||||
name='third_info',
|
||||
field=models.JSONField(blank=True, default=dict, verbose_name='三方信息'),
|
||||
),
|
||||
]
|
|
@ -44,6 +44,7 @@ class Employee(CommonBModel):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
# class Card(CommonAModel):
|
||||
# """
|
||||
# 卡
|
||||
|
|
|
@ -9,7 +9,7 @@ from apps.utils.tools import rannum, ranstr
|
|||
from .models import ClockRecord, Employee, NotWorkRemark
|
||||
from apps.system.serializers import DeptSimpleSerializer,UserSimpleSerializer
|
||||
from django.db import transaction
|
||||
from apps.utils.dahua import dhClient
|
||||
from apps.third.clients import dhClient
|
||||
from apps.third.tapis import dhapis
|
||||
import re
|
||||
from server.settings import DEBUG
|
||||
|
@ -50,7 +50,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
|||
instance = super().create(validated_data)
|
||||
if dhClient:
|
||||
# 创建人员
|
||||
_, res = dhClient.request(**dhapis['gen_person_id'])
|
||||
_, res = dhClient.request(**dhapis['person_gen_id'])
|
||||
personId = res['id']
|
||||
departmentId = 1
|
||||
if instance.belong_dept:
|
||||
|
@ -85,7 +85,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
|||
)
|
||||
_, res = dhClient.request(**dhapis['person_add'], json=json_data)
|
||||
# 开人脸卡
|
||||
_, res = dhClient.request(**dhapis['gen_card_id'])
|
||||
_, res = dhClient.request(**dhapis['card_gen_id'])
|
||||
cardId = res['id']
|
||||
cardNumber = instance.id[:8] + rannum(2)
|
||||
now = datetime.now()
|
||||
|
@ -159,7 +159,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
|||
# 开人脸卡
|
||||
if instance.job_state in [Employee.JOB_ON]:
|
||||
if not third_info.get('dh_face_card', None):
|
||||
_, res = dhClient.request(**dhapis['gen_card_id'])
|
||||
_, res = dhClient.request(**dhapis['card_gen_id'])
|
||||
cardId = res['id']
|
||||
cardNumber = instance.id[3:8] + rannum(5)
|
||||
now = datetime.now()
|
||||
|
|
|
@ -23,8 +23,9 @@ from rest_framework.exceptions import ParseError
|
|||
from django.db import transaction
|
||||
from datetime import datetime
|
||||
from rest_framework import serializers
|
||||
from apps.utils.dahua import dhClient
|
||||
from apps.third.clients import dhClient
|
||||
from apps.third.tapis import dhapis
|
||||
from server import settings
|
||||
|
||||
# Create your views here.
|
||||
class EmployeeViewSet(CustomModelViewSet):
|
||||
|
@ -41,7 +42,7 @@ class EmployeeViewSet(CustomModelViewSet):
|
|||
search_fields = ['name', 'number', 'user__username']
|
||||
ordering = ['-pk']
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'employee_notworkremark'}
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'employee.notworkremark'}
|
||||
, serializer_class=EmployeeNotWorkRemarkSerializer)
|
||||
def not_work_remark(self, request, pk=None):
|
||||
"""
|
||||
|
@ -73,7 +74,7 @@ class EmployeeViewSet(CustomModelViewSet):
|
|||
raise ParseError(**NO_NEED_LEVEL_REMARK)
|
||||
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'employee_channel_authority'}
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'employee.channel_authority'}
|
||||
, serializer_class=ChannelAuthoritySerializer)
|
||||
def channel_authority(self, request, pk=None):
|
||||
"""门通道授权
|
||||
|
@ -107,6 +108,59 @@ class EmployeeViewSet(CustomModelViewSet):
|
|||
Employee.objects.bulk_update(objs, fields = ['third_info'])
|
||||
return Response()
|
||||
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'employee.face_bind_1'}
|
||||
, serializer_class=serializers.Serializer)
|
||||
def face_bind_1(self, request, pk=None):
|
||||
"""同步人脸库1
|
||||
|
||||
全部人脸库
|
||||
"""
|
||||
# 获取设备
|
||||
json_data = {
|
||||
"pageNum":1,
|
||||
"pageSize":1000,
|
||||
"ownerCodes":['001'],
|
||||
"showChildNodeData":1,
|
||||
# "isOnline":1
|
||||
}
|
||||
_, res = dhClient.request(**dhapis['dev_page'], json=json_data)
|
||||
devs = []
|
||||
if res['pageData']:
|
||||
for i in res['pageData']:
|
||||
devs.append(i['deviceCode'])
|
||||
# 编辑人像库
|
||||
json_data = {
|
||||
"groupid":settings.DAHUA_FACEGROUPID_1,
|
||||
"groupname":"全体人员",
|
||||
"groupdetail":"全体人员",
|
||||
"grouptype":3,
|
||||
"deviceCodeList":devs,
|
||||
"syncState":0
|
||||
}
|
||||
dhClient.request(**dhapis['face_group_update'], json=json_data)
|
||||
# 人像绑定
|
||||
json_data = {
|
||||
"deptId":1,
|
||||
"groupIdList":[settings.DAHUA_FACEGROUPID_1],
|
||||
"cascade":True
|
||||
}
|
||||
dhClient.request(**dhapis['face_bind'], json=json_data)
|
||||
return Response()
|
||||
|
||||
@action(methods=['get'], detail=False, perms_map={'get': 'employee.face_bind_1'}
|
||||
, serializer_class=serializers.Serializer)
|
||||
def face_status_1(self, request, pk=None):
|
||||
"""人像下发状态
|
||||
|
||||
人像下发状态
|
||||
"""
|
||||
params = {'id':settings.DAHUA_FACEGROUPID_1}
|
||||
_, res = dhClient.request(**dhapis['face_group_info'], params=params)
|
||||
return Response(res)
|
||||
|
||||
|
||||
|
||||
class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
||||
"""
|
||||
打卡记录
|
||||
|
|
|
@ -134,7 +134,7 @@ class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
|
||||
请求日志
|
||||
"""
|
||||
perms_map = {'get':'requestlog_view'}
|
||||
perms_map = {'get':'requestlog.view'}
|
||||
queryset = DrfRequestLog.objects.all()
|
||||
list_serializer_class = DrfRequestLogSerializer
|
||||
ordering = ['-requested_at']
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -1,5 +0,0 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class MqConfig(AppConfig):
|
||||
name = 'mq'
|
|
@ -1,3 +0,0 @@
|
|||
from django.db import models
|
||||
|
||||
# Create your models here.
|
|
@ -1,3 +0,0 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -1,3 +0,0 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
|
@ -1,11 +1,11 @@
|
|||
from django.contrib import admin
|
||||
from simple_history.admin import SimpleHistoryAdmin
|
||||
from .models import User, Dept, Role, Permission, DictType, Dict, File
|
||||
from .models import User, Dept, Role, Permission, DictType, Dictionary, File
|
||||
# Register your models here.
|
||||
admin.site.register(User)
|
||||
admin.site.register(Dept)
|
||||
admin.site.register(Role)
|
||||
admin.site.register(Permission)
|
||||
admin.site.register(DictType)
|
||||
admin.site.register(Dict, SimpleHistoryAdmin)
|
||||
admin.site.register(Dictionary, SimpleHistoryAdmin)
|
||||
admin.site.register(File)
|
|
@ -0,0 +1,44 @@
|
|||
# Generated by Django 3.2.12 on 2022-04-21 07:11
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0003_remove_user_phone'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Dictionary',
|
||||
fields=[
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('name', models.CharField(max_length=60, verbose_name='名称')),
|
||||
('value', models.CharField(max_length=10, verbose_name='值')),
|
||||
('code', models.CharField(blank=True, max_length=30, null=True, verbose_name='标识')),
|
||||
('description', models.TextField(blank=True, null=True, verbose_name='描述')),
|
||||
('sort', models.PositiveSmallIntegerField(default=1, verbose_name='排序')),
|
||||
('is_used', models.BooleanField(default=True, verbose_name='是否有效')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dictionary_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.dictionary', verbose_name='父')),
|
||||
('type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.dicttype', verbose_name='类型')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dictionary_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '字典',
|
||||
'verbose_name_plural': '字典',
|
||||
'ordering': ['sort'],
|
||||
'unique_together': {('name', 'is_used', 'type')},
|
||||
},
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Dict',
|
||||
),
|
||||
]
|
|
@ -163,7 +163,7 @@ class DictType(CommonAModel):
|
|||
return self.name
|
||||
|
||||
|
||||
class Dict(CommonAModel):
|
||||
class Dictionary(CommonAModel):
|
||||
"""
|
||||
数据字典
|
||||
"""
|
||||
|
|
|
@ -6,7 +6,7 @@ from django_celery_results.models import TaskResult
|
|||
from apps.system.errors import ROLE_CODE_EXIST, ROLE_NAME_EXIST, USERNAME_EXIST
|
||||
from apps.utils.serializers import CustomModelSerializer
|
||||
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
|
||||
from .models import (Dict, DictType, File, Dept, Permission, Post,
|
||||
from .models import (Dictionary, DictType, File, Dept, Permission, Post,
|
||||
Role, User, UserPost)
|
||||
from rest_framework.exceptions import ParseError, APIException
|
||||
from django.db import transaction
|
||||
|
@ -84,7 +84,7 @@ class DictSerializer(CustomModelSerializer):
|
|||
"""
|
||||
|
||||
class Meta:
|
||||
model = Dict
|
||||
model = Dictionary
|
||||
fields = '__all__'
|
||||
|
||||
class DictCreateUpdateSerializer(CustomModelSerializer):
|
||||
|
@ -93,7 +93,7 @@ class DictCreateUpdateSerializer(CustomModelSerializer):
|
|||
"""
|
||||
|
||||
class Meta:
|
||||
model = Dict
|
||||
model = Dictionary
|
||||
exclude = EXCLUDE_FIELDS
|
||||
|
||||
class PostSerializer(CustomModelSerializer):
|
||||
|
@ -195,7 +195,7 @@ class DeptCreateUpdateSerializer(CustomModelSerializer):
|
|||
|
||||
@transaction.atomic
|
||||
def create(self, validated_data):
|
||||
from apps.utils.dahua import dhClient
|
||||
from apps.third.clients import dhClient
|
||||
if dhClient:
|
||||
data = {
|
||||
"parentId":1,
|
||||
|
@ -210,7 +210,7 @@ class DeptCreateUpdateSerializer(CustomModelSerializer):
|
|||
|
||||
@transaction.atomic
|
||||
def update(self, instance, validated_data):
|
||||
from apps.utils.dahua import dhClient
|
||||
from apps.third.clients import dhClient
|
||||
third_info = instance.third_info
|
||||
if dhClient and not third_info.get('dh_id', False):
|
||||
# 如果dh_id 不存在
|
||||
|
|
|
@ -21,7 +21,7 @@ from apps.utils.queryset import get_child_queryset2
|
|||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from server.celery import app as celery_app
|
||||
from .filters import UserFilter
|
||||
from .models import (Dept, Dict, DictType, File, Permission, Post, Role, User,
|
||||
from .models import (Dept, Dictionary, DictType, File, Permission, Post, Role, User,
|
||||
UserPost)
|
||||
from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer,
|
||||
FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer, PermissionSerializer, PostCreateUpdateSerializer, PostSerializer,
|
||||
|
@ -69,7 +69,7 @@ class PTaskViewSet(CustomModelViewSet):
|
|||
select_related_fields = ['interval', 'crontab']
|
||||
ordering = ['-create_time']
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map={'put': 'ptask_update'})
|
||||
@action(methods=['put'], detail=True, perms_map={'put': 'ptask.update'})
|
||||
def toggle(self, request, pk=None):
|
||||
"""修改启用禁用状态
|
||||
|
||||
|
@ -185,8 +185,8 @@ class DictViewSet(CustomModelViewSet):
|
|||
|
||||
数据字典-增删改查
|
||||
"""
|
||||
# queryset = Dict.objects.get_queryset(all=True) # 获取全部的,包括软删除的
|
||||
queryset = Dict.objects.all()
|
||||
# queryset = Dictionary.objects.get_queryset(all=True) # 获取全部的,包括软删除的
|
||||
queryset = Dictionary.objects.all()
|
||||
filterset_fields = ['type', 'is_used', 'type__code']
|
||||
serializer_class = DictSerializer
|
||||
create_serializer_class = DictCreateUpdateSerializer
|
||||
|
@ -263,7 +263,7 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
|
|||
|
||||
用户/岗位关系
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': 'user_update', 'delete': 'user_update'}
|
||||
perms_map = {'get': '*', 'post': 'user.update', 'delete': 'user.update'}
|
||||
queryset = UserPost.objects.select_related('user', 'post', 'dept').all()
|
||||
serializer_class = UserPostSerializer
|
||||
create_serializer_class = UserPostCreateSerializer
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
from apps.utils.xunxi import XxClient
|
||||
from apps.utils.dahua import DhClient
|
||||
|
||||
dhClient = DhClient()
|
||||
xxClient = XxClient()
|
|
@ -12,7 +12,7 @@ dhapis = {
|
|||
"url":"/evo-apigw/evo-brm/1.0.0/department/update",
|
||||
"method":"put"
|
||||
},
|
||||
"gen_person_id":{
|
||||
"person_gen_id":{
|
||||
"url":"/evo-apigw/evo-brm/1.0.0/person/generate-id",
|
||||
"method":"get"
|
||||
},
|
||||
|
@ -48,7 +48,7 @@ dhapis = {
|
|||
"url":"/evo-apigw/evo-brm/1.2.0/card/add",
|
||||
"method":"post"
|
||||
},
|
||||
"gen_card_id": {
|
||||
"card_gen_id": {
|
||||
"url":"/evo-apigw/evo-brm/1.0.0/card/generate-id",
|
||||
"method":"get"
|
||||
},
|
||||
|
@ -63,6 +63,26 @@ dhapis = {
|
|||
"mq_unsubscribe": {
|
||||
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
|
||||
"method":"delete"
|
||||
},
|
||||
"face_bind":{
|
||||
"url":"/evo-apigw/evo-face/deptGroup/sync/bindPerson",
|
||||
"method":"post"
|
||||
},
|
||||
"dev_tree":{
|
||||
"url":"/evo-apigw/evo-face/tree/getDevChnIdsAndName",
|
||||
"method":"get"
|
||||
},
|
||||
"dev_page":{
|
||||
"url":"/evo-apigw/evo-brm/1.2.0/device/subsystem/page",
|
||||
"method":"post"
|
||||
},
|
||||
"face_group_update":{
|
||||
"url":"/evo-apigw/evo-face/groupInfo/update",
|
||||
"method":"post"
|
||||
},
|
||||
"face_group_info":{
|
||||
"url":"/evo-apigw/evo-face/groupInfo/view/{id}",
|
||||
"method":"get"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
from rest_framework.exceptions import ParseError, APIException
|
||||
from apps.third.tapis import dhapis, xxapis
|
||||
from apps.third.erros import TAPI_CODE_WRONG
|
||||
from apps.utils.dahua import dhClient
|
||||
from apps.third.clients import dhClient
|
||||
from apps.utils.errors import XX_REQUEST_ERROR
|
||||
from apps.utils.mixins import MyLoggingMixin
|
||||
from apps.utils.xunxi import xxClient
|
||||
from apps.third.clients import xxClient
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.permissions import IsAuthenticated, IsAdminUser
|
||||
|
@ -14,6 +14,8 @@ from rest_framework.decorators import action
|
|||
|
||||
from apps.third.serializers import RequestCommonSerializer
|
||||
from rest_framework import serializers
|
||||
import stomp
|
||||
from server import settings
|
||||
# Create your views here.
|
||||
|
||||
|
||||
|
@ -48,6 +50,19 @@ class XxTestView(APIView):
|
|||
else:
|
||||
raise APIException(**res)
|
||||
|
||||
class XxListener(stomp.ConnectionListener):
|
||||
def on_error(self, frame):
|
||||
print('received an error "%s"' % frame.body)
|
||||
|
||||
def on_message(self, frame):
|
||||
print('received a message "%s"' % frame.body)
|
||||
|
||||
|
||||
# if settings.XX_ENABLED:
|
||||
# c = stomp.Connection([(settings.XX_MQ_HOST, settings.XX_MQ_PORT)])
|
||||
# c.set_listener('', XxListener())
|
||||
# c.connect(settings.XX_USERNAME, settings.XX_LICENCE)
|
||||
# c.subscribe(settings.XX_QUEUE, id='')
|
||||
|
||||
class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||
"""
|
||||
|
@ -161,3 +176,25 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
|||
"""
|
||||
dhClient.request(**dhapis['mq_unsubscribe'], params={'name':'127.0.0.1_8000'})
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
authentication_classes=[], permission_classes=[],
|
||||
serializer_class=serializers.Serializer)
|
||||
def mq(self, request, pk=None):
|
||||
"""大华事件处理
|
||||
|
||||
大华事件处理
|
||||
"""
|
||||
data = request.data
|
||||
method = data['method']
|
||||
subsystem = data.get('subsystem', None)
|
||||
info = data.get('info', {})
|
||||
if method == 'department.update':
|
||||
pass
|
||||
elif method == 'person.update':
|
||||
pass
|
||||
elif method == 'alarm.msg' and subsystem == 'evo-accesscontrol':
|
||||
"""
|
||||
刷卡事件
|
||||
"""
|
||||
return Response()
|
|
@ -101,7 +101,7 @@ class DhClient:
|
|||
self.request(url, method, params, json, timeout, file_path_rela, raise_exception)
|
||||
else:
|
||||
if ret['code'] not in ['0', '100', '00000', '1000', 0, 100, 1000]:
|
||||
detail = '大华错误:' + '{}|{}{}'.format(str(ret['code']), ret.get('errMsg',''), ret.get('desc', ''))
|
||||
detail = '大华错误:' + '{}|{}{}{}'.format(str(ret['code']), ret.get('errMsg',''), ret.get('desc', ''), str(ret.get('data', '')))
|
||||
err_detail = dict(detail=detail, code='dh_'+str(ret['code']))
|
||||
if raise_exception:
|
||||
raise ParseError(**err_detail)
|
||||
|
|
|
@ -106,11 +106,11 @@ class CustomModelViewSet(CreateModelMixin
|
|||
# 增加默认权限标识
|
||||
if not self.perms_map:
|
||||
basename = self.basename
|
||||
self.perms_map = {'get':'*', 'post':'{}_create'.format(basename)
|
||||
,'put':'{}_update'.format(basename)
|
||||
,'patch':'{}_update'.format(basename)
|
||||
,'delete':'{}_delete'.format(basename)
|
||||
,'deletes':'{}_delete'.format(basename)}
|
||||
self.perms_map = {'get':'*', 'post':'{}.create'.format(basename)
|
||||
,'put':'{}.update'.format(basename)
|
||||
,'patch':'{}.update'.format(basename)
|
||||
,'delete':'{}.delete'.format(basename)
|
||||
,'deletes':'{}.delete'.format(basename)}
|
||||
for k, v in self.perms_map.items():
|
||||
if v not in ALL_PERMS and v!='*':
|
||||
ALL_PERMS.append(v)
|
||||
|
|
|
@ -90,6 +90,4 @@ class XxClient:
|
|||
return 'success', ret['data']
|
||||
if raise_exception:
|
||||
raise APIException(**XX_REQUEST_ERROR)
|
||||
return 'error', XX_REQUEST_ERROR
|
||||
|
||||
xxClient = XxClient()
|
||||
return 'error', XX_REQUEST_ERROR
|
|
@ -4,7 +4,7 @@ from django.db.models.base import Model
|
|||
import django.utils.timezone as timezone
|
||||
from django.db.models.query import QuerySet
|
||||
from apps.utils.models import CommonAModel
|
||||
from apps.system.models import Dept, User, Dict, File
|
||||
from apps.system.models import Dept, User, File
|
||||
from apps.utils.models import SoftModel, BaseModel
|
||||
from simple_history.models import HistoricalRecords
|
||||
|
||||
|
|
|
@ -17,3 +17,4 @@ daphne==3.0.2
|
|||
channels==3.0.4
|
||||
channels-redis==3.4.0
|
||||
django-restql==0.15.2
|
||||
stomp.py==8.0.0
|
||||
|
|
|
@ -312,13 +312,17 @@ DAHUA_USERNAME = conf.DAHUA_USERNAME
|
|||
DAHUA_PASSWORD = conf.DAHUA_PASSWORD
|
||||
DAHUA_CLIENTID = conf.DAHUA_CLIENTID
|
||||
DAHUA_SECRET = conf.DAHUA_SECRET
|
||||
DAHUA_FACEGROUPID_1 = conf.DAHUA_FACEGROUPID_1
|
||||
|
||||
# 寻息定位
|
||||
XX_ENABLED = conf.XX_ENABLED
|
||||
XX_BASE_URL = conf.XX_BASE_URL
|
||||
XX_MQ_HOST = conf.XX_MQ_HOST
|
||||
XX_MQ_PORT = conf.XX_MQ_PORT
|
||||
XX_LICENCE = conf.XX_LICENCE
|
||||
XX_USERNAME = conf.XX_USERNAME
|
||||
XX_BUILDID = conf.XX_BUILDID
|
||||
XX_QUEUE = conf.XX_QUEUE
|
||||
|
||||
# 运维相关
|
||||
SD_PWD = conf.SD_PWD
|
||||
|
|
Loading…
Reference in New Issue