Add PTZ nudges, configurable monitoring wall and lunar family dates
This commit is contained in:
+13
-2
@@ -64,6 +64,9 @@ class Accounts:
|
||||
sites = data.get('siteIds', [])
|
||||
if not isinstance(sites, list) or any(not isinstance(s, str) or not a.get_object('sites', s) for s in sites):
|
||||
raise a.Problem('请选择有效空间')
|
||||
ptz_control = data.get('ptzControl', old.get('ptzControl', False) if old else False)
|
||||
if not isinstance(ptz_control, bool):
|
||||
raise a.Problem('云台权限格式不正确')
|
||||
disabled = data.get('disabled', False)
|
||||
if not isinstance(disabled, bool):
|
||||
raise a.Problem('账号状态不正确')
|
||||
@@ -86,11 +89,11 @@ class Accounts:
|
||||
raise a.Problem('密码格式不正确')
|
||||
credentials = self.password(password) if password or not old else {k: old[k] for k in ('salt', 'hash')}
|
||||
user = dict(id=uid, username=username, name=a.clean_text(data.get('name', username), 80, True),
|
||||
role=role, disabled=disabled, siteIds=sorted(set(sites)), familyAccess=access,
|
||||
role=role, disabled=disabled, siteIds=sorted(set(sites)), familyAccess=access, ptzControl=ptz_control,
|
||||
personId=person, relatedToId=related,
|
||||
relationship=a.clean_text(data.get('relationship', ''), 40), **credentials)
|
||||
# Revoke sessions when credentials or authorization change, not for label edits.
|
||||
if old and any(old.get(k) != user.get(k) for k in ('hash', 'role', 'siteIds', 'familyAccess', 'disabled', 'username')):
|
||||
if old and any(old.get(k) != user.get(k) for k in ('hash', 'role', 'siteIds', 'familyAccess', 'disabled', 'username', 'ptzControl')):
|
||||
a.DB.execute('DELETE FROM sessions WHERE user_id=?', (uid,))
|
||||
a.save_object('users', user)
|
||||
a.audit('更新账号' if old else '建立账号', username)
|
||||
@@ -103,6 +106,14 @@ class Accounts:
|
||||
raise self.a.Problem('没有这个空间的访问权限', 403)
|
||||
return camera
|
||||
|
||||
def control(self, user, camera):
|
||||
self.camera(user, camera)
|
||||
if user['role'] != 'admin' and not user.get('ptzControl', False):
|
||||
raise self.a.Problem('没有云台控制权限,请联系管理员授权', 403)
|
||||
if not camera.get('enabled'):
|
||||
raise self.a.Problem('摄像头已停用', 409)
|
||||
return camera
|
||||
|
||||
def state(self, user, state):
|
||||
state['user'] = self.public(user)
|
||||
if user['role'] == 'admin':
|
||||
|
||||
Reference in New Issue
Block a user