@ -5,7 +5,8 @@ from datetime import datetime
from pos . config import Config
from pos . logging import init_logging , get_logger
from pos . database import Database , User , Event , Product , Transaction
from pos . database import Database , User , Event , ProductCategory , Product , \
Transaction
config = Config ( )
conf_db = config . core [ ' DATABASE ' ]
@ -30,6 +31,14 @@ def cli():
pass
@cli . command ( ' initdb ' )
def initdb ( ) :
with db . get_session ( ) as session :
categories = session . query ( ProductCategory ) . count ( )
if not categories :
session . add ( ProductCategory ( name = ' Default ' ) )
@cli . group ( ' user ' )
def user ( ) :
pass
@ -218,15 +227,60 @@ def event_set(event_uid, name, start, end):
print ( tabulate_events ( [ event ] ) )
@cli . group ( ' category ' )
def category ( ) :
pass
@category . command ( ' add ' )
@click . option ( ' -s ' , ' --sort ' , type = click . INT )
@click . argument ( ' name ' )
def category_add ( name , sort ) :
category = ProductCategory ( name = name )
if sort :
category . sort = sort
with db . get_session ( ) as session :
session . add ( category )
print ( " Category successfully added. " )
def tabulate_categories ( categories ) :
tab = [ [ " UID " , " Name " , " Sort " , " Created at " ] ]
for c in categories :
tab . append ( [ c . uid , c . name , c . sort , c . created_at ] )
return tabulate ( tab , headers = ' firstrow ' )
@category . command ( ' list ' )
@click . option ( ' -s ' , ' --sort ' , is_flag = True )
def category_list ( sort ) :
with db . get_session ( ) as session :
categories = session . query ( ProductCategory )
if sort :
categories = categories . order_by ( ProductCategory . sort . asc ( ) )
categories = categories . all ( )
if categories :
print ( tabulate_categories ( categories ) )
else :
print ( " No categories found. " )
@cli . group ( ' product ' )
def product ( ) :
pass
def tabulate_products ( products ) :
tab = [ [ " UID " , " Name " , " Price " , " Sort " , " Enabled " , " Created at " ] ]
tab = [ [ " UID " , " Name " , " Price " , " Sort " , " Category " ,
" Enabled " , " Created at " ] ]
for p in products :
tab . append ( [ p . uid , p . name , p . price , p . sort , p . is_active , p . created_at ] )
tab . append ( [ p . uid , p . name , p . price , p . sort , p . category . name ,
p . is_active , p . created_at ] )
return tabulate ( tab , headers = ' firstrow ' )
@ -234,12 +288,18 @@ def tabulate_products(products):
@click . argument ( ' name ' )
@click . argument ( ' price ' )
@click . option ( ' -s ' , ' --sort ' , type = click . INT )
def product_add ( name , price , sort ) :
@click . option ( ' -c ' , ' --category ' , type = click . INT )
def product_add ( name , price , sort , category ) :
product = Product ( name = name , price = price )
if sort :
product . sort = sort
if category :
product . category_uid = category
else :
product . category_uid = 1
with db . get_session ( ) as session :
session . add ( product )
print ( " Product successfully added. " )
@ -266,8 +326,9 @@ def product_list(sort):
@click . option ( ' -n ' , ' --name ' )
@click . option ( ' -p ' , ' --price ' , type = click . INT )
@click . option ( ' -s ' , ' --sort ' , type = click . INT )
@click . option ( ' -c ' , ' --category ' , type = click . INT )
@click . argument ( ' product_uid ' )
def product_set ( product_uid , name , price , sort ) :
def product_set ( product_uid , name , price , sort , category ) :
with db . get_session ( ) as session :
product = session . query ( Product ) . get ( product_uid )
@ -284,7 +345,10 @@ def product_set(product_uid, name, price, sort):
if sort :
product . sort = sort
if any ( [ name , price , sort ] ) :
if category :
product . category_uid = category
if any ( [ name , price , sort , category ] ) :
with db . get_session ( ) as session :
session . add ( product )
print ( " Event successfully edited. " )