You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.5 KiB
49 lines
1.5 KiB
from fastapi import APIRouter, Depends
|
|
from pydantic import BaseModel
|
|
|
|
from conf import setting
|
|
from helper import login_required, respond_to
|
|
from models import Hikvision
|
|
from models.cabinet import Cabinet
|
|
|
|
router = APIRouter(prefix='/hikvisions', dependencies=[Depends(login_required)])
|
|
|
|
|
|
class HikvisionCreateModel(BaseModel):
|
|
cabinet_id: str
|
|
name: str
|
|
ip: str
|
|
channel: str
|
|
|
|
|
|
@router.get('', summary='视频监控配置列表')
|
|
async def index():
|
|
hikvisions = await Hikvision.values('id', 'name', 'ip', 'channel')
|
|
return respond_to(data=hikvisions)
|
|
|
|
|
|
@router.get('/{cabinet_id}', summary='单查视频监控配置')
|
|
async def index(cabinet_id: str):
|
|
hikvision = await Hikvision.filter(cabinet_id=cabinet_id).first().values('id', 'name', 'ip', 'channel')
|
|
return respond_to(data=hikvision)
|
|
|
|
|
|
@router.post('', summary='创建视频监控配置')
|
|
async def create(model: HikvisionCreateModel):
|
|
cabinet_obj = await Cabinet.get(id=model.cabinet_id)
|
|
dic = model.dict()
|
|
dic.setdefault("terminal_id", cabinet_obj.terminal_id)
|
|
await Hikvision.create(**dic)
|
|
return respond_to()
|
|
|
|
|
|
@router.delete('/{id}', summary='删除视频监控配置')
|
|
async def destroy(id: str):
|
|
await Hikvision.filter(id=id).delete()
|
|
return respond_to()
|
|
|
|
|
|
@router.get('/cabinets', summary='柜子下拉列表')
|
|
async def cabinets():
|
|
cabinet_obj = await Cabinet.filter(~Cabinet.terminal_id.isnull()).values('id', 'label')
|
|
return respond_to(data=cabinet_obj) |