fix: format all code with black
and from now on should not deviate from that...
This commit is contained in:
parent
bad6ded72d
commit
a0b36a6384
12 changed files with 313 additions and 220 deletions
|
@ -50,21 +50,26 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
op_session = corepos.make_session_office_op()
|
||||
|
||||
# base query
|
||||
query = op_session.query(op_model.CustomerClassic)\
|
||||
.join(op_model.MemberInfo,
|
||||
op_model.MemberInfo.card_number == op_model.CustomerClassic.card_number)
|
||||
query = op_session.query(op_model.CustomerClassic).join(
|
||||
op_model.MemberInfo,
|
||||
op_model.MemberInfo.card_number == op_model.CustomerClassic.card_number,
|
||||
)
|
||||
|
||||
# filter query
|
||||
criteria = []
|
||||
for word in term.split():
|
||||
criteria.append(sa.or_(
|
||||
op_model.CustomerClassic.first_name.ilike(f'%{word}%'),
|
||||
op_model.CustomerClassic.last_name.ilike(f'%{word}%')))
|
||||
criteria.append(
|
||||
sa.or_(
|
||||
op_model.CustomerClassic.first_name.ilike(f"%{word}%"),
|
||||
op_model.CustomerClassic.last_name.ilike(f"%{word}%"),
|
||||
)
|
||||
)
|
||||
query = query.filter(sa.and_(*criteria))
|
||||
|
||||
# sort query
|
||||
query = query.order_by(op_model.CustomerClassic.first_name,
|
||||
op_model.CustomerClassic.last_name)
|
||||
query = query.order_by(
|
||||
op_model.CustomerClassic.first_name, op_model.CustomerClassic.last_name
|
||||
)
|
||||
|
||||
# get data
|
||||
# TODO: need max_results option
|
||||
|
@ -72,8 +77,8 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
|
||||
# get results
|
||||
def result(customer):
|
||||
return {'value': str(customer.card_number),
|
||||
'label': str(customer)}
|
||||
return {"value": str(customer.card_number), "label": str(customer)}
|
||||
|
||||
results = [result(c) for c in customers]
|
||||
|
||||
op_session.close()
|
||||
|
@ -86,16 +91,23 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
op_session = corepos.make_session_office_op()
|
||||
|
||||
if not batch.customer_id.isdigit():
|
||||
raise ValueError(f"invalid CORE-POS customer card number: {batch.customer_id}")
|
||||
raise ValueError(
|
||||
f"invalid CORE-POS customer card number: {batch.customer_id}"
|
||||
)
|
||||
|
||||
try:
|
||||
customer = op_session.query(op_model.CustomerClassic)\
|
||||
.join(op_model.MemberInfo,
|
||||
op_model.MemberInfo.card_number == op_model.CustomerClassic.card_number)\
|
||||
.filter(op_model.CustomerClassic.card_number == int(batch.customer_id))\
|
||||
.filter(op_model.CustomerClassic.person_number == 1)\
|
||||
.options(orm.joinedload(op_model.CustomerClassic.member_info))\
|
||||
.one()
|
||||
customer = (
|
||||
op_session.query(op_model.CustomerClassic)
|
||||
.join(
|
||||
op_model.MemberInfo,
|
||||
op_model.MemberInfo.card_number
|
||||
== op_model.CustomerClassic.card_number,
|
||||
)
|
||||
.filter(op_model.CustomerClassic.card_number == int(batch.customer_id))
|
||||
.filter(op_model.CustomerClassic.person_number == 1)
|
||||
.options(orm.joinedload(op_model.CustomerClassic.member_info))
|
||||
.one()
|
||||
)
|
||||
except orm.exc.NoResultFound:
|
||||
raise ValueError(f"CORE-POS Customer not found: {batch.customer_id}")
|
||||
|
||||
|
@ -117,14 +129,16 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
# filter query
|
||||
criteria = []
|
||||
for word in term.split():
|
||||
criteria.append(sa.or_(
|
||||
op_model.Product.brand.ilike(f'%{word}%'),
|
||||
op_model.Product.description.ilike(f'%{word}%')))
|
||||
criteria.append(
|
||||
sa.or_(
|
||||
op_model.Product.brand.ilike(f"%{word}%"),
|
||||
op_model.Product.description.ilike(f"%{word}%"),
|
||||
)
|
||||
)
|
||||
query = query.filter(sa.and_(*criteria))
|
||||
|
||||
# sort query
|
||||
query = query.order_by(op_model.Product.brand,
|
||||
op_model.Product.description)
|
||||
query = query.order_by(op_model.Product.brand, op_model.Product.description)
|
||||
|
||||
# get data
|
||||
# TODO: need max_results option
|
||||
|
@ -132,10 +146,13 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
|
||||
# get results
|
||||
def result(product):
|
||||
return {'value': product.upc,
|
||||
'label': self.app.make_full_name(product.brand,
|
||||
product.description,
|
||||
product.size)}
|
||||
return {
|
||||
"value": product.upc,
|
||||
"label": self.app.make_full_name(
|
||||
product.brand, product.description, product.size
|
||||
),
|
||||
}
|
||||
|
||||
results = [result(c) for c in products]
|
||||
|
||||
op_session.close()
|
||||
|
@ -148,27 +165,29 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
op_session = corepos.make_session_office_op()
|
||||
|
||||
try:
|
||||
product = op_session.query(op_model.Product)\
|
||||
.filter(op_model.Product.upc == product_id)\
|
||||
.one()
|
||||
product = (
|
||||
op_session.query(op_model.Product)
|
||||
.filter(op_model.Product.upc == product_id)
|
||||
.one()
|
||||
)
|
||||
except orm.exc.NoResultFound:
|
||||
raise ValueError(f"CORE-POS Product not found: {product_id}")
|
||||
|
||||
data = {
|
||||
'product_id': product.upc,
|
||||
'scancode': product.upc,
|
||||
'brand_name': product.brand,
|
||||
'description': product.description,
|
||||
'size': product.size,
|
||||
'full_description': self.app.make_full_name(product.brand,
|
||||
product.description,
|
||||
product.size),
|
||||
'weighed': product.scale,
|
||||
'special_order': False,
|
||||
'department_id': product.department_number,
|
||||
'department_name': product.department.name if product.department else None,
|
||||
'case_size': self.get_case_size_for_external_product(product),
|
||||
'unit_price_reg': self.get_unit_price_reg_for_external_product(product),
|
||||
"product_id": product.upc,
|
||||
"scancode": product.upc,
|
||||
"brand_name": product.brand,
|
||||
"description": product.description,
|
||||
"size": product.size,
|
||||
"full_description": self.app.make_full_name(
|
||||
product.brand, product.description, product.size
|
||||
),
|
||||
"weighed": product.scale,
|
||||
"special_order": False,
|
||||
"department_id": product.department_number,
|
||||
"department_name": product.department.name if product.department else None,
|
||||
"case_size": self.get_case_size_for_external_product(product),
|
||||
"unit_price_reg": self.get_unit_price_reg_for_external_product(product),
|
||||
# TODO
|
||||
# 'vendor_name': product.vendor_name,
|
||||
# 'vendor_item_code': product.vendor_item_code,
|
||||
|
@ -184,9 +203,11 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
op_session = corepos.make_session_office_op()
|
||||
|
||||
try:
|
||||
product = op_session.query(op_model.Product)\
|
||||
.filter(op_model.Product.upc == row.product_id)\
|
||||
.one()
|
||||
product = (
|
||||
op_session.query(op_model.Product)
|
||||
.filter(op_model.Product.upc == row.product_id)
|
||||
.one()
|
||||
)
|
||||
except orm.exc.NoResultFound:
|
||||
raise ValueError(f"CORE-POS Product not found: {row.product_id}")
|
||||
|
||||
|
@ -217,9 +238,9 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
|||
if product.vendor_items:
|
||||
item = product.vendor_items[0]
|
||||
if item.units is not None:
|
||||
return decimal.Decimal(f'{item.units:0.4f}')
|
||||
return decimal.Decimal(f"{item.units:0.4f}")
|
||||
|
||||
def get_unit_price_reg_for_external_product(self, product):
|
||||
""" """
|
||||
if product.normal_price is not None:
|
||||
return decimal.Decimal(f'{product.normal_price:0.3f}')
|
||||
return decimal.Decimal(f"{product.normal_price:0.3f}")
|
||||
|
|
|
@ -33,15 +33,20 @@ class SideshowCoreposConfig(WuttaConfigExtension):
|
|||
|
||||
This establishes some config defaults specific to Sideshow-COREPOS.
|
||||
"""
|
||||
key = 'sideshow_corepos'
|
||||
|
||||
key = "sideshow_corepos"
|
||||
|
||||
def configure(self, config):
|
||||
""" """
|
||||
|
||||
# batch handlers
|
||||
config.setdefault(f'{config.appname}.batch.neworder.handler.spec',
|
||||
'sideshow_corepos.batch.neworder:NewOrderBatchHandler')
|
||||
config.setdefault(
|
||||
f"{config.appname}.batch.neworder.handler.spec",
|
||||
"sideshow_corepos.batch.neworder:NewOrderBatchHandler",
|
||||
)
|
||||
|
||||
# web app menu
|
||||
config.setdefault(f'{config.appname}.web.menus.handler.spec',
|
||||
'sideshow_corepos.web.menus:SideshowMenuHandler')
|
||||
config.setdefault(
|
||||
f"{config.appname}.web.menus.handler.spec",
|
||||
"sideshow_corepos.web.menus:SideshowMenuHandler",
|
||||
)
|
||||
|
|
|
@ -26,4 +26,4 @@ Sideshow-COREPOS - Case/Special Order Tracker for CORE-POS
|
|||
|
||||
|
||||
def includeme(config):
|
||||
config.include('sideshow_corepos.web.views')
|
||||
config.include("sideshow_corepos.web.views")
|
||||
|
|
|
@ -34,22 +34,25 @@ def main(global_config, **settings):
|
|||
Make and return the WSGI app (Paste entry point).
|
||||
"""
|
||||
# prefer Sideshow templates over wuttaweb
|
||||
settings.setdefault('mako.directories', [
|
||||
'sideshow.web:templates',
|
||||
'wuttaweb:templates',
|
||||
])
|
||||
settings.setdefault(
|
||||
"mako.directories",
|
||||
[
|
||||
"sideshow.web:templates",
|
||||
"wuttaweb:templates",
|
||||
],
|
||||
)
|
||||
|
||||
# make config objects
|
||||
wutta_config = base.make_wutta_config(settings)
|
||||
pyramid_config = base.make_pyramid_config(settings)
|
||||
|
||||
# configure DB sessions
|
||||
if hasattr(wutta_config, 'core_office_op_engine'):
|
||||
if hasattr(wutta_config, "core_office_op_engine"):
|
||||
CoreOpSession.configure(bind=wutta_config.core_office_op_engine)
|
||||
|
||||
# bring in the rest of Sideshow
|
||||
pyramid_config.include('sideshow.web')
|
||||
pyramid_config.include('sideshow_corepos.web')
|
||||
pyramid_config.include("sideshow.web")
|
||||
pyramid_config.include("sideshow_corepos.web")
|
||||
|
||||
return pyramid_config.make_wsgi_app()
|
||||
|
||||
|
|
|
@ -38,14 +38,16 @@ class SideshowMenuHandler(base.SideshowMenuHandler):
|
|||
"""
|
||||
menu = super().make_customers_menu(request, **kwargs)
|
||||
|
||||
menu['items'].extend([
|
||||
{'type': 'sep'},
|
||||
{
|
||||
'title': "CORE-POS Members",
|
||||
'route': 'corepos_members',
|
||||
'perm': 'corepos_members.list',
|
||||
},
|
||||
])
|
||||
menu["items"].extend(
|
||||
[
|
||||
{"type": "sep"},
|
||||
{
|
||||
"title": "CORE-POS Members",
|
||||
"route": "corepos_members",
|
||||
"perm": "corepos_members.list",
|
||||
},
|
||||
]
|
||||
)
|
||||
|
||||
return menu
|
||||
|
||||
|
@ -55,14 +57,16 @@ class SideshowMenuHandler(base.SideshowMenuHandler):
|
|||
"""
|
||||
menu = super().make_products_menu(request, **kwargs)
|
||||
|
||||
menu['items'].extend([
|
||||
{'type': 'sep'},
|
||||
{
|
||||
'title': "CORE-POS Products",
|
||||
'route': 'corepos_products',
|
||||
'perm': 'corepos_products.list',
|
||||
},
|
||||
])
|
||||
menu["items"].extend(
|
||||
[
|
||||
{"type": "sep"},
|
||||
{
|
||||
"title": "CORE-POS Products",
|
||||
"route": "corepos_products",
|
||||
"perm": "corepos_products.list",
|
||||
},
|
||||
]
|
||||
)
|
||||
|
||||
return menu
|
||||
|
||||
|
@ -75,12 +79,14 @@ class SideshowMenuHandler(base.SideshowMenuHandler):
|
|||
corepos = self.app.get_corepos_handler()
|
||||
url = corepos.get_office_url()
|
||||
if url:
|
||||
menu['items'].extend([
|
||||
{
|
||||
'title': "CORE Office",
|
||||
'url': url,
|
||||
'target': '_blank',
|
||||
},
|
||||
])
|
||||
menu["items"].extend(
|
||||
[
|
||||
{
|
||||
"title": "CORE Office",
|
||||
"url": url,
|
||||
"target": "_blank",
|
||||
},
|
||||
]
|
||||
)
|
||||
|
||||
return menu
|
||||
|
|
|
@ -30,5 +30,5 @@ This adds config for readonly views for CORE-POS members and products.
|
|||
def includeme(config):
|
||||
|
||||
# CORE-POS views
|
||||
config.include('wutta_corepos.web.views.corepos.members')
|
||||
config.include('wutta_corepos.web.views.corepos.products')
|
||||
config.include("wutta_corepos.web.views.corepos.members")
|
||||
config.include("wutta_corepos.web.views.corepos.products")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue