Commands more failsafe for invalid configuration
This commit is contained in:
parent
a2a33aedb4
commit
6dd6e09516
12
carom/cli.py
12
carom/cli.py
@ -1,5 +1,3 @@
|
|||||||
import uuid
|
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from click_didyoumean import DYMGroup
|
from click_didyoumean import DYMGroup
|
||||||
import click_log
|
import click_log
|
||||||
@ -7,7 +5,7 @@ import logging
|
|||||||
|
|
||||||
from terminaltables import SingleTable
|
from terminaltables import SingleTable
|
||||||
|
|
||||||
from carom.table import cleanup
|
from carom.table import get_tables, cleanup
|
||||||
|
|
||||||
logger = logging.getLogger('carom.cli') # hard coded module name to support directly called module
|
logger = logging.getLogger('carom.cli') # hard coded module name to support directly called module
|
||||||
root_logger = logging.getLogger('')
|
root_logger = logging.getLogger('')
|
||||||
@ -25,13 +23,12 @@ def get_gpio():
|
|||||||
"""
|
"""
|
||||||
Get the current status of all Tables.
|
Get the current status of all Tables.
|
||||||
"""
|
"""
|
||||||
from carom.table import tables
|
|
||||||
table_data = [("Table #", "Port", "in use")]
|
table_data = [("Table #", "Port", "in use")]
|
||||||
for table in tables:
|
for table in get_tables():
|
||||||
table_data.append((table.num, table.port, table.in_use))
|
table_data.append((table.num, table.port, table.in_use))
|
||||||
st = SingleTable(table_data)
|
st = SingleTable(table_data)
|
||||||
st.title = "Tables"
|
st.title = "Tables"
|
||||||
print(st.table)
|
click.echo(st.table)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -40,7 +37,8 @@ def get_uuid():
|
|||||||
"""
|
"""
|
||||||
Get the UUID of the Client. This is need to add a new client to the carom server installation.
|
Get the UUID of the Client. This is need to add a new client to the carom server installation.
|
||||||
"""
|
"""
|
||||||
click.echo(uuid.uuid5(uuid.NAMESPACE_DNS, str(uuid.getnode())))
|
from carom.utils import get_uuid as util_get_uuid
|
||||||
|
click.echo(util_get_uuid())
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
|
@ -21,7 +21,6 @@ class Table:
|
|||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def in_use(self):
|
def in_use(self):
|
||||||
return self.button.is_active
|
return self.button.is_active
|
||||||
@ -32,14 +31,19 @@ class Table:
|
|||||||
|
|
||||||
|
|
||||||
def cleanup():
|
def cleanup():
|
||||||
for table in tables:
|
for table in get_tables():
|
||||||
table.close()
|
table.close()
|
||||||
|
|
||||||
|
|
||||||
def _populate_tables():
|
def _populate_tables():
|
||||||
|
if config is None:
|
||||||
|
return []
|
||||||
for num, port in config['mapping'].items():
|
for num, port in config['mapping'].items():
|
||||||
yield Table(num, port)
|
yield Table(num, port)
|
||||||
|
|
||||||
|
|
||||||
tables = [table for table in _populate_tables()]
|
def get_tables():
|
||||||
|
return [table for table in _populate_tables()]
|
||||||
|
|
||||||
__all__ = ('Table', 'tables', 'cleanup')
|
|
||||||
|
__all__ = ('Table', 'get_tables', 'cleanup')
|
||||||
|
@ -1,3 +1,17 @@
|
|||||||
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from carom.config import config
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def singleton(the_class):
|
def singleton(the_class):
|
||||||
""" decorator for a class to make a singleton out of it """
|
""" decorator for a class to make a singleton out of it """
|
||||||
class_instances = {}
|
class_instances = {}
|
||||||
@ -11,3 +25,25 @@ def singleton(the_class):
|
|||||||
return class_instances[key]
|
return class_instances[key]
|
||||||
|
|
||||||
return get_instance
|
return get_instance
|
||||||
|
|
||||||
|
|
||||||
|
def get_uuid():
|
||||||
|
return uuid.uuid5(uuid.NAMESPACE_DNS, str(uuid.getnode()))
|
||||||
|
|
||||||
|
|
||||||
|
def send_to_server(state, pin):
|
||||||
|
d = datetime.now()
|
||||||
|
url = config['connection']['endpoint'].format('billard/api/v1/locationdata/')
|
||||||
|
headers = {'Authorization': 'Token {}'.format(config['connection']['token']),
|
||||||
|
'Content-Type': 'application/json'}
|
||||||
|
payload = {'client_id': str(get_uuid()),
|
||||||
|
'desk_no': str(pin),
|
||||||
|
'tst': d.strftime('%Y-%m-%dT%H:%M:%S%Z'),
|
||||||
|
'on_off': state}
|
||||||
|
logger.info("Send Status: {}, {}, {}".format(str(url), str(headers), str(payload)))
|
||||||
|
requests.post(
|
||||||
|
url,
|
||||||
|
data=json.dumps(payload),
|
||||||
|
headers=headers,
|
||||||
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user