#!/usr/bin/env python3
from dataclasses import dataclass, asdict
from panoramisk import Message
TRUEs = ('true', '1', 'y', 'yes')
NONEs = (None,'none','')
NO_AUTH_ROUTES = ('/ui','/openapi.json','/favicon.ico')
SWAGGER_JS_URL = "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.37.2/swagger-ui-bundle.js"
SWAGGER_CSS_URL = "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.37.2/swagger-ui.min.css"
SWAGGER_TEMPLATE = '''
{{ title }}
'''
def followMe2DevState(followMeState):
if followMeState == 'DIRECT':
return 'INUSE'
if followMeState == 'EXTENSION':
return 'NOT_INUSE'
return 'INVALID'
@dataclass
class QueueMember:
user: str
name: str = ''
location: str = ''
membership: str = ''
stateinterface: str = ''
status: str = ''
def fromMessage(self, _m: Message):
for key in asdict(self).keys():
if key in _m:
setattr(self, key, _m[key])
return self
@dataclass
class GlobalVars:
FMDEVSTATE: str = ''
QUEDEVSTATE: str = ''
QUEUETOGGLE: str = ''
QUEUEPAUSETOGGLE: str = ''
INTERCOMCODE: str = ''
CAMPONTOGGLE: str = ''
DNDDEVSTATE: str = ''
CFDEVSTATE: str = ''
def d(self):
return asdict(self)
def jsonAPIReply(success, result):
return {'success':success, 'result': result}
def noUser(user):
return jsonAPIReply(False, 'user {} does not exist'.format(user))
def noDevice(device):
return jsonAPIReply(False, 'device {} does not exist'.format(device))
def beenBound(user, device):
return jsonAPIReply(True, '{} is bound to {}'.format(user, device))
def bindError(user, device):
return jsonAPIReply(False, 'Failed binding {} to {}'.format(user, device))
def hintError(user, device):
return jsonAPIReply(False, 'Failed setting hint for {}@{}'.format(user, device))
def noUserBound(device):
return jsonAPIReply(False, 'no user is bound to {}'.format(device))
def beenUnbound(user, device):
return jsonAPIReply(True, '{} unbound from {}'.format(user, device))