Files
ucvl-home-vision/inventory.py
T

31 lines
1.5 KiB
Python
Raw Normal View History

"""Common device responsibility fields and non-video device records."""
class Inventory:
def __init__(self, app):
self.a = app
def metadata(self, data, old=None):
old = old or {}
result = {k: self.a.clean_text(data.get(k, old.get(k, '')), 80)
for k in ('ownerName', 'managerName')}
tags = data.get('tags', old.get('tags', []))
if not isinstance(tags, list) or len(tags) > 12:
raise self.a.Problem('自定义标签最多 12 个')
result['tags'] = sorted({self.a.clean_text(tag, 40, True) for tag in tags})
return result
def save(self, data, user):
a = self.a
with a.LOCK:
family = a.HOUSEHOLDS.prepare(user, 'devices', data, (('sites', 'siteId'),))
key = a.object_key('devices', data)
old = a.get_object('devices', key)
item = {k: a.clean_text(data.get(k, ''), 300 if k == 'note' else 120, k in ('name', 'deviceType'))
for k in ('name', 'deviceType', 'brand', 'model', 'serial', 'note')}
if item['deviceType'] in ('摄像头', '摄像机', '录像机'):
raise a.Problem('视频设备请使用摄像机或录像机档案,以保留取流与通道配置')
item.update(id=key, familyId=family, siteId=a.clean_text(data.get('siteId', ''), 32),
**self.metadata(data, old))
a.save_object('devices', item)
a.audit('保存设备档案', item['name'])
return item