From 1b4ba2089ac0a5faf1c2784777b06abb7c8f8dfd Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 31 Aug 2025 13:05:00 -0500 Subject: [PATCH] fix: format all code with black and from now on should not deviate from that... --- docs/conf.py | 28 +++--- src/wutta_corepos/_version.py | 2 +- src/wutta_corepos/app.py | 8 +- src/wutta_corepos/conf.py | 34 ++++--- .../0f94089f1af1_initial_user_extension.py | 29 +++--- src/wutta_corepos/db/model.py | 23 +++-- src/wutta_corepos/handler.py | 74 ++++++--------- src/wutta_corepos/web/__init__.py | 2 +- src/wutta_corepos/web/views/__init__.py | 2 +- .../web/views/corepos/__init__.py | 4 +- src/wutta_corepos/web/views/corepos/master.py | 1 + .../web/views/corepos/members.py | 62 +++++++------ .../web/views/corepos/products.py | 41 +++++---- tasks.py | 10 +- tests/db/test_model.py | 6 +- tests/test_conf.py | 18 ++-- tests/test_handler.py | 91 +++++++++++++------ tests/web/views/corepos/test_members.py | 14 +-- tests/web/views/corepos/test_products.py | 4 +- 19 files changed, 248 insertions(+), 205 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 2f4f53f..f27fe59 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,32 +8,32 @@ from importlib.metadata import version as get_version -project = 'Wutta-COREPOS' -copyright = '2025, Lance Edgar' -author = 'Lance Edgar' -release = get_version('Wutta-COREPOS') +project = "Wutta-COREPOS" +copyright = "2025, Lance Edgar" +author = "Lance Edgar" +release = get_version("Wutta-COREPOS") # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.viewcode', - 'sphinx.ext.todo', + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.viewcode", + "sphinx.ext.todo", ] -templates_path = ['_templates'] -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +templates_path = ["_templates"] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] intersphinx_mapping = { - 'wuttaweb': ('https://docs.wuttaproject.org/wuttaweb/', None), - 'wuttjamaican': ('https://docs.wuttaproject.org/wuttjamaican/', None), + "wuttaweb": ("https://docs.wuttaproject.org/wuttaweb/", None), + "wuttjamaican": ("https://docs.wuttaproject.org/wuttjamaican/", None), } # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'furo' -html_static_path = ['_static'] +html_theme = "furo" +html_static_path = ["_static"] diff --git a/src/wutta_corepos/_version.py b/src/wutta_corepos/_version.py index 7601e62..dfdbb08 100644 --- a/src/wutta_corepos/_version.py +++ b/src/wutta_corepos/_version.py @@ -3,4 +3,4 @@ from importlib.metadata import version -__version__ = version('Wutta-COREPOS') +__version__ = version("Wutta-COREPOS") diff --git a/src/wutta_corepos/app.py b/src/wutta_corepos/app.py index 7949339..fdc310f 100644 --- a/src/wutta_corepos/app.py +++ b/src/wutta_corepos/app.py @@ -41,9 +41,11 @@ class WuttaCoreposAppProvider(AppProvider): :rtype: :class:`~wutta_corepos.handler.CoreposHandler` """ - if not hasattr(self, 'corepos_handler'): - spec = self.config.get(f'{self.appname}.corepos_handler', - default='wutta_corepos.handler:CoreposHandler') + if not hasattr(self, "corepos_handler"): + spec = self.config.get( + f"{self.appname}.corepos_handler", + default="wutta_corepos.handler:CoreposHandler", + ) factory = self.app.load_object(spec) self.corepos_handler = factory(self.config, **kwargs) return self.corepos_handler diff --git a/src/wutta_corepos/conf.py b/src/wutta_corepos/conf.py index 7c3affb..70add3c 100644 --- a/src/wutta_corepos/conf.py +++ b/src/wutta_corepos/conf.py @@ -103,48 +103,56 @@ class WuttaCoreposConfigExtension(WuttaConfigExtension): etc. If present, the ``default`` key will correspond to :data:`core_lane_trans_engine`. """ - key = 'wutta_corepos' + + key = "wutta_corepos" def configure(self, config): """ """ # office_op from corepos.db.office_op import Session - engines = get_engines(config, 'corepos.db.office_op') + + engines = get_engines(config, "corepos.db.office_op") config.core_office_op_engines = engines - config.core_office_op_engine = engines.get('default') + config.core_office_op_engine = engines.get("default") Session.configure(bind=config.core_office_op_engine) # office_trans from corepos.db.office_trans import Session - engines = get_engines(config, 'corepos.db.office_trans') + + engines = get_engines(config, "corepos.db.office_trans") config.core_office_trans_engines = engines - config.core_office_trans_engine = engines.get('default') + config.core_office_trans_engine = engines.get("default") Session.configure(bind=config.core_office_trans_engine) # office_arch from corepos.db.office_arch import Session - engines = get_engines(config, 'corepos.db.office_arch') + + engines = get_engines(config, "corepos.db.office_arch") config.core_office_arch_engines = engines - config.core_office_arch_engine = engines.get('default') + config.core_office_arch_engine = engines.get("default") Session.configure(bind=config.core_office_arch_engine) # lane_op from corepos.db.lane_op import Session - engines = get_engines(config, 'corepos.db.lane_op') + + engines = get_engines(config, "corepos.db.lane_op") config.core_lane_op_engines = engines - config.core_lane_op_engine = engines.get('default') + config.core_lane_op_engine = engines.get("default") Session.configure(bind=config.core_lane_op_engine) # lane_trans from corepos.db.lane_trans import Session - engines = get_engines(config, 'corepos.db.lane_trans') + + engines = get_engines(config, "corepos.db.lane_trans") config.core_lane_trans_engines = engines - config.core_lane_trans_engine = engines.get('default') + config.core_lane_trans_engine = engines.get("default") Session.configure(bind=config.core_lane_trans_engine) # define some schema columns "late" unless not supported - if config.get_bool('corepos.db.office_op.use_latest_columns', - default=True, usedb=False): + if config.get_bool( + "corepos.db.office_op.use_latest_columns", default=True, usedb=False + ): from corepos.db.office_op.model import use_latest_columns + use_latest_columns() diff --git a/src/wutta_corepos/db/alembic/versions/0f94089f1af1_initial_user_extension.py b/src/wutta_corepos/db/alembic/versions/0f94089f1af1_initial_user_extension.py index 92ed240..cc5ffa5 100644 --- a/src/wutta_corepos/db/alembic/versions/0f94089f1af1_initial_user_extension.py +++ b/src/wutta_corepos/db/alembic/versions/0f94089f1af1_initial_user_extension.py @@ -1,10 +1,11 @@ """initial user extension Revision ID: 0f94089f1af1 -Revises: +Revises: Create Date: 2025-01-24 21:13:14.359200 """ + from typing import Sequence, Union from alembic import op @@ -13,25 +14,31 @@ import wuttjamaican.db.util # revision identifiers, used by Alembic. -revision: str = '0f94089f1af1' +revision: str = "0f94089f1af1" down_revision: Union[str, None] = None -branch_labels: Union[str, Sequence[str], None] = ('wutta_corepos',) +branch_labels: Union[str, Sequence[str], None] = ("wutta_corepos",) depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # corepos_user - op.create_table('corepos_user', - sa.Column('uuid', wuttjamaican.db.util.UUID(), nullable=False), - sa.Column('corepos_employee_number', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['uuid'], ['user.uuid'], name=op.f('fk_corepos_user_uuid_user')), - sa.PrimaryKeyConstraint('uuid', name=op.f('pk_corepos_user')), - sa.UniqueConstraint('corepos_employee_number', name=op.f('uq_corepos_user_corepos_employee_number')) - ) + op.create_table( + "corepos_user", + sa.Column("uuid", wuttjamaican.db.util.UUID(), nullable=False), + sa.Column("corepos_employee_number", sa.Integer(), nullable=False), + sa.ForeignKeyConstraint( + ["uuid"], ["user.uuid"], name=op.f("fk_corepos_user_uuid_user") + ), + sa.PrimaryKeyConstraint("uuid", name=op.f("pk_corepos_user")), + sa.UniqueConstraint( + "corepos_employee_number", + name=op.f("uq_corepos_user_corepos_employee_number"), + ), + ) def downgrade() -> None: # corepos_user - op.drop_table('corepos_user') + op.drop_table("corepos_user") diff --git a/src/wutta_corepos/db/model.py b/src/wutta_corepos/db/model.py index 89cf90d..6b1781b 100644 --- a/src/wutta_corepos/db/model.py +++ b/src/wutta_corepos/db/model.py @@ -36,9 +36,9 @@ class CoreUser(model.Base): :class:`~wuttjamaican:wuttjamaican.db.model.auth.User`. """ - __tablename__ = 'corepos_user' + __tablename__ = "corepos_user" - uuid = model.uuid_column(sa.ForeignKey('user.uuid'), default=None) + uuid = model.uuid_column(sa.ForeignKey("user.uuid"), default=None) user = orm.relationship( model.User, cascade_backrefs=False, @@ -48,20 +48,27 @@ class CoreUser(model.Base): this record extends. """, backref=orm.backref( - '_corepos', + "_corepos", uselist=False, - cascade='all, delete-orphan', + cascade="all, delete-orphan", cascade_backrefs=False, doc=""" Reference to the CORE-POS extension record for the user. - """) + """, + ), ) - corepos_employee_number = sa.Column(sa.Integer(), nullable=False, unique=True, doc=""" + corepos_employee_number = sa.Column( + sa.Integer(), + nullable=False, + unique=True, + doc=""" ``employees.emp_no`` value for the user within CORE-POS. - """) + """, + ) def __str__(self): return str(self.user) -CoreUser.make_proxy(model.User, '_corepos', 'corepos_employee_number') + +CoreUser.make_proxy(model.User, "_corepos", "corepos_employee_number") diff --git a/src/wutta_corepos/handler.py b/src/wutta_corepos/handler.py index f52ef8e..cfbae46 100644 --- a/src/wutta_corepos/handler.py +++ b/src/wutta_corepos/handler.py @@ -78,7 +78,7 @@ class CoreposHandler(GenericHandler): return model - def make_session_office_op(self, dbkey='default', **kwargs): + def make_session_office_op(self, dbkey="default", **kwargs): """ Make a new :term:`db session` for the CORE Office 'op' DB. @@ -87,11 +87,11 @@ class CoreposHandler(GenericHandler): """ from corepos.db.office_op import Session - if 'bind' not in kwargs: - kwargs['bind'] = self.config.core_office_op_engines[dbkey] + if "bind" not in kwargs: + kwargs["bind"] = self.config.core_office_op_engines[dbkey] return Session(**kwargs) - def make_session_office_trans(self, dbkey='default', **kwargs): + def make_session_office_trans(self, dbkey="default", **kwargs): """ Make a new :term:`db session` for the CORE Office 'trans' DB. @@ -100,11 +100,11 @@ class CoreposHandler(GenericHandler): """ from corepos.db.office_trans import Session - if 'bind' not in kwargs: - kwargs['bind'] = self.config.core_office_trans_engines[dbkey] + if "bind" not in kwargs: + kwargs["bind"] = self.config.core_office_trans_engines[dbkey] return Session(**kwargs) - def make_session_office_arch(self, dbkey='default', **kwargs): + def make_session_office_arch(self, dbkey="default", **kwargs): """ Make a new :term:`db session` for the CORE Office 'arch' DB. @@ -113,11 +113,11 @@ class CoreposHandler(GenericHandler): """ from corepos.db.office_arch import Session - if 'bind' not in kwargs: - kwargs['bind'] = self.config.core_office_arch_engines[dbkey] + if "bind" not in kwargs: + kwargs["bind"] = self.config.core_office_arch_engines[dbkey] return Session(**kwargs) - def make_session_lane_op(self, dbkey='default', **kwargs): + def make_session_lane_op(self, dbkey="default", **kwargs): """ Make a new :term:`db session` for the CORE Lane 'op' DB. @@ -126,11 +126,11 @@ class CoreposHandler(GenericHandler): """ from corepos.db.lane_op import Session - if 'bind' not in kwargs: - kwargs['bind'] = self.config.core_lane_op_engines[dbkey] + if "bind" not in kwargs: + kwargs["bind"] = self.config.core_lane_op_engines[dbkey] return Session(**kwargs) - def make_session_lane_trans(self, dbkey='default', **kwargs): + def make_session_lane_trans(self, dbkey="default", **kwargs): """ Make a new :term:`db session` for the CORE Lane 'trans' DB. @@ -139,8 +139,8 @@ class CoreposHandler(GenericHandler): """ from corepos.db.lane_trans import Session - if 'bind' not in kwargs: - kwargs['bind'] = self.config.core_lane_trans_engines[dbkey] + if "bind" not in kwargs: + kwargs["bind"] = self.config.core_lane_trans_engines[dbkey] return Session(**kwargs) def get_office_url(self, require=False): @@ -154,15 +154,11 @@ class CoreposHandler(GenericHandler): :returns: URL as string. """ - url = self.config.get('corepos.office.url', require=require) + url = self.config.get("corepos.office.url", require=require) if url: - return url.rstrip('/') + return url.rstrip("/") - def get_office_department_url( - self, - dept_id, - office_url=None, - require=False): + def get_office_department_url(self, dept_id, office_url=None, require=False): """ Returns the CORE Office URL for a Department. @@ -178,13 +174,9 @@ class CoreposHandler(GenericHandler): if not office_url: office_url = self.get_office_url(require=require) if office_url: - return f'{office_url}/item/departments/DepartmentEditor.php?did={dept_id}' + return f"{office_url}/item/departments/DepartmentEditor.php?did={dept_id}" - def get_office_employee_url( - self, - employee_id, - office_url=None, - require=False): + def get_office_employee_url(self, employee_id, office_url=None, require=False): """ Returns the CORE Office URL for an Employee. @@ -200,13 +192,9 @@ class CoreposHandler(GenericHandler): if not office_url: office_url = self.get_office_url(require=require) if office_url: - return f'{office_url}/admin/Cashiers/CashierEditor.php?emp_no={employee_id}' + return f"{office_url}/admin/Cashiers/CashierEditor.php?emp_no={employee_id}" - def get_office_likecode_url( - self, - likecode_id, - office_url=None, - require=False): + def get_office_likecode_url(self, likecode_id, office_url=None, require=False): """ Returns the CORE Office URL for a Like Code. @@ -222,13 +210,9 @@ class CoreposHandler(GenericHandler): if not office_url: office_url = self.get_office_url(require=require) if office_url: - return f'{office_url}/item/likecodes/LikeCodeEditor.php?start={likecode_id}' + return f"{office_url}/item/likecodes/LikeCodeEditor.php?start={likecode_id}" - def get_office_product_url( - self, - upc, - office_url=None, - require=False): + def get_office_product_url(self, upc, office_url=None, require=False): """ Returns the CORE Office URL for a Product. @@ -244,13 +228,9 @@ class CoreposHandler(GenericHandler): if not office_url: office_url = self.get_office_url(require=require) if office_url: - return f'{office_url}/item/ItemEditorPage.php?searchupc={upc}' + return f"{office_url}/item/ItemEditorPage.php?searchupc={upc}" - def get_office_vendor_url( - self, - vend_id, - office_url=None, - require=False): + def get_office_vendor_url(self, vend_id, office_url=None, require=False): """ Returns the CORE Office URL for a Vendor. @@ -266,4 +246,4 @@ class CoreposHandler(GenericHandler): if not office_url: office_url = self.get_office_url(require=require) if office_url: - return f'{office_url}/item/vendors/VendorIndexPage.php?vid={vend_id}' + return f"{office_url}/item/vendors/VendorIndexPage.php?vid={vend_id}" diff --git a/src/wutta_corepos/web/__init__.py b/src/wutta_corepos/web/__init__.py index 71a9477..27a88a5 100644 --- a/src/wutta_corepos/web/__init__.py +++ b/src/wutta_corepos/web/__init__.py @@ -26,4 +26,4 @@ Wutta-COREPOS -- wuttaweb features def includeme(config): - config.include('wutta_corepos.web.views') + config.include("wutta_corepos.web.views") diff --git a/src/wutta_corepos/web/views/__init__.py b/src/wutta_corepos/web/views/__init__.py index d4112a2..78797ab 100644 --- a/src/wutta_corepos/web/views/__init__.py +++ b/src/wutta_corepos/web/views/__init__.py @@ -26,4 +26,4 @@ Wutta-COREPOS -- wuttaweb views def includeme(config): - config.include('wutta_corepos.web.views.corepos') + config.include("wutta_corepos.web.views.corepos") diff --git a/src/wutta_corepos/web/views/corepos/__init__.py b/src/wutta_corepos/web/views/corepos/__init__.py index a78e4ef..436e8d5 100644 --- a/src/wutta_corepos/web/views/corepos/__init__.py +++ b/src/wutta_corepos/web/views/corepos/__init__.py @@ -28,5 +28,5 @@ from .master import CoreOpMasterView def includeme(config): - 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") diff --git a/src/wutta_corepos/web/views/corepos/master.py b/src/wutta_corepos/web/views/corepos/master.py index 817a443..92c7f9a 100644 --- a/src/wutta_corepos/web/views/corepos/master.py +++ b/src/wutta_corepos/web/views/corepos/master.py @@ -33,6 +33,7 @@ class CoreOpMasterView(MasterView): """ Base class for master views which use the CORE Office 'op' DB. """ + Session = CoreOpSession def __init__(self, request, context=None): diff --git a/src/wutta_corepos/web/views/corepos/members.py b/src/wutta_corepos/web/views/corepos/members.py index 19a6268..ffa106c 100644 --- a/src/wutta_corepos/web/views/corepos/members.py +++ b/src/wutta_corepos/web/views/corepos/members.py @@ -43,10 +43,11 @@ class MemberView(CoreOpMasterView): * ``/corepos/members/`` * ``/corepos/members/XXX`` """ + model_class = MemberInfo model_title = "CORE-POS Member" - route_prefix = 'corepos_members' - url_prefix = '/corepos/members' + route_prefix = "corepos_members" + url_prefix = "/corepos/members" # nb. this is just for readonly lookup creatable = False @@ -54,36 +55,37 @@ class MemberView(CoreOpMasterView): deletable = False grid_columns = [ - 'card_number', - 'first_name', - 'last_name', - 'street', - 'city', - 'state', - 'zip', - 'phone', - 'email', + "card_number", + "first_name", + "last_name", + "street", + "city", + "state", + "zip", + "phone", + "email", ] filter_defaults = { - 'card_number': {'active': True, 'verb': 'equal'}, - 'first_name': {'active': True, 'verb': 'contains'}, - 'last_name': {'active': True, 'verb': 'contains'}, + "card_number": {"active": True, "verb": "equal"}, + "first_name": {"active": True, "verb": "contains"}, + "last_name": {"active": True, "verb": "contains"}, } - sort_defaults = 'card_number' + sort_defaults = "card_number" def get_query(self, session=None): """ """ query = super().get_query(session=session) op_model = self.corepos_handler.get_model_office_op() - query = query.outerjoin(op_model.CustomerClassic, - sa.and_( - op_model.CustomerClassic.card_number == op_model.MemberInfo.card_number, - op_model.CustomerClassic.person_number == 1, - ))\ - .options(orm.joinedload(op_model.MemberInfo.customers)) + query = query.outerjoin( + op_model.CustomerClassic, + sa.and_( + op_model.CustomerClassic.card_number == op_model.MemberInfo.card_number, + op_model.CustomerClassic.person_number == 1, + ), + ).options(orm.joinedload(op_model.MemberInfo.customers)) return query @@ -93,18 +95,18 @@ class MemberView(CoreOpMasterView): op_model = self.corepos_handler.get_model_office_op() # first_name - g.set_renderer('first_name', self.render_customer_attr) - g.set_sorter('first_name', op_model.CustomerClassic.first_name) + g.set_renderer("first_name", self.render_customer_attr) + g.set_sorter("first_name", op_model.CustomerClassic.first_name) # last_name - g.set_renderer('last_name', self.render_customer_attr) - g.set_sorter('last_name', op_model.CustomerClassic.last_name) + g.set_renderer("last_name", self.render_customer_attr) + g.set_sorter("last_name", op_model.CustomerClassic.last_name) # links - if self.has_perm('view'): - g.set_link('card_number') - g.set_link('first_name') - g.set_link('last_name') + if self.has_perm("view"): + g.set_link("card_number") + g.set_link("first_name") + g.set_link("last_name") def render_customer_attr(self, member, key, value): """ """ @@ -115,7 +117,7 @@ class MemberView(CoreOpMasterView): def defaults(config, **kwargs): base = globals() - MemberView = kwargs.get('MemberView', base['MemberView']) + MemberView = kwargs.get("MemberView", base["MemberView"]) MemberView.defaults(config) diff --git a/src/wutta_corepos/web/views/corepos/products.py b/src/wutta_corepos/web/views/corepos/products.py index e8f33c4..24e94af 100644 --- a/src/wutta_corepos/web/views/corepos/products.py +++ b/src/wutta_corepos/web/views/corepos/products.py @@ -40,10 +40,11 @@ class ProductView(CoreOpMasterView): * ``/corepos/products/`` * ``/corepos/products/XXX`` """ + model_class = Product model_title = "CORE-POS Product" - route_prefix = 'corepos_products' - url_prefix = '/corepos/products' + route_prefix = "corepos_products" + url_prefix = "/corepos/products" # nb. this is just for readonly lookup creatable = False @@ -51,45 +52,45 @@ class ProductView(CoreOpMasterView): deletable = False labels = { - 'upc': "UPC", + "upc": "UPC", } grid_columns = [ - 'upc', - 'brand', - 'description', - 'size', - 'department', - 'vendor', - 'normal_price', + "upc", + "brand", + "description", + "size", + "department", + "vendor", + "normal_price", ] filter_defaults = { - 'upc': {'active': True, 'verb': 'contains'}, - 'brand': {'active': True, 'verb': 'contains'}, - 'description': {'active': True, 'verb': 'contains'}, + "upc": {"active": True, "verb": "contains"}, + "brand": {"active": True, "verb": "contains"}, + "description": {"active": True, "verb": "contains"}, } - sort_defaults = 'upc' + sort_defaults = "upc" def configure_grid(self, g): """ """ super().configure_grid(g) # normal_price - g.set_renderer('normal_price', 'currency') + g.set_renderer("normal_price", "currency") # links - g.set_link('upc') - g.set_link('brand') - g.set_link('description') - g.set_link('size') + g.set_link("upc") + g.set_link("brand") + g.set_link("description") + g.set_link("size") def defaults(config, **kwargs): base = globals() - ProductView = kwargs.get('ProductView', base['ProductView']) + ProductView = kwargs.get("ProductView", base["ProductView"]) ProductView.defaults(config) diff --git a/tasks.py b/tasks.py index 101278d..1eaed3b 100644 --- a/tasks.py +++ b/tasks.py @@ -15,10 +15,10 @@ def release(c, skip_tests=False): Release a new version of Wutta-COREPOS """ if not skip_tests: - c.run('pytest') + c.run("pytest") - if os.path.exists('dist'): - shutil.rmtree('dist') + if os.path.exists("dist"): + shutil.rmtree("dist") - c.run('python -m build --sdist') - c.run('twine upload dist/*') + c.run("python -m build --sdist") + c.run("twine upload dist/*") diff --git a/tests/db/test_model.py b/tests/db/test_model.py index 19135d3..8d76745 100644 --- a/tests/db/test_model.py +++ b/tests/db/test_model.py @@ -9,8 +9,8 @@ from wutta_corepos.db import model as mod class TestCoreUser(ConfigTestCase): def test_str(self): - user = User(username='barney') - self.assertEqual(str(user), 'barney') + user = User(username="barney") + self.assertEqual(str(user), "barney") ext = mod.CoreUser(user=user, corepos_employee_number=42) - self.assertEqual(str(ext), 'barney') + self.assertEqual(str(ext), "barney") diff --git a/tests/test_conf.py b/tests/test_conf.py index 10f97a0..db26ce3 100644 --- a/tests/test_conf.py +++ b/tests/test_conf.py @@ -13,11 +13,11 @@ class TestWuttaCoreposConfigExtension(TestCase): config = WuttaConfig() # no engines by default - self.assertFalse(hasattr(config, 'core_office_op_engine')) - self.assertFalse(hasattr(config, 'core_office_trans_engine')) - self.assertFalse(hasattr(config, 'core_office_arch_engine')) - self.assertFalse(hasattr(config, 'core_lane_op_engine')) - self.assertFalse(hasattr(config, 'core_lane_trans_engine')) + self.assertFalse(hasattr(config, "core_office_op_engine")) + self.assertFalse(hasattr(config, "core_office_trans_engine")) + self.assertFalse(hasattr(config, "core_office_arch_engine")) + self.assertFalse(hasattr(config, "core_lane_op_engine")) + self.assertFalse(hasattr(config, "core_lane_trans_engine")) ext = mod.WuttaCoreposConfigExtension() ext.configure(config) self.assertIsNone(config.core_office_op_engine) @@ -27,10 +27,10 @@ class TestWuttaCoreposConfigExtension(TestCase): self.assertIsNone(config.core_lane_trans_engine) # but config can change that - config.setdefault('corepos.db.office_op.default.url', 'sqlite://') - config.setdefault('corepos.db.lane_trans.default.url', 'sqlite://') + config.setdefault("corepos.db.office_op.default.url", "sqlite://") + config.setdefault("corepos.db.lane_trans.default.url", "sqlite://") ext.configure(config) self.assertIsNotNone(config.core_office_op_engine) - self.assertEqual(str(config.core_office_op_engine.url), 'sqlite://') + self.assertEqual(str(config.core_office_op_engine.url), "sqlite://") self.assertIsNotNone(config.core_lane_trans_engine) - self.assertEqual(str(config.core_lane_trans_engine.url), 'sqlite://') + self.assertEqual(str(config.core_lane_trans_engine.url), "sqlite://") diff --git a/tests/test_handler.py b/tests/test_handler.py index f751f22..b597044 100644 --- a/tests/test_handler.py +++ b/tests/test_handler.py @@ -18,75 +18,91 @@ class TestCoreposHandler(ConfigTestCase): def test_get_model_office_op(self): from corepos.db.office_op import model + handler = self.make_handler() op_model = handler.get_model_office_op() self.assertIs(op_model, model) def test_get_model_office_trans(self): from corepos.db.office_trans import model + handler = self.make_handler() trans_model = handler.get_model_office_trans() self.assertIs(trans_model, model) def test_get_model_office_arch(self): from corepos.db.office_arch import model + handler = self.make_handler() arch_model = handler.get_model_office_arch() self.assertIs(arch_model, model) def test_get_model_lane_op(self): from corepos.db.lane_op import model + handler = self.make_handler() op_model = handler.get_model_lane_op() self.assertIs(op_model, model) def test_get_model_lane_trans(self): from corepos.db.lane_trans import model + handler = self.make_handler() trans_model = handler.get_model_lane_trans() self.assertIs(trans_model, model) def test_make_session_office_op(self): handler = self.make_handler() - engine = sa.create_engine('sqlite://') - with patch.object(self.config, 'core_office_op_engines', create=True, - new={'default': engine}): + engine = sa.create_engine("sqlite://") + with patch.object( + self.config, "core_office_op_engines", create=True, new={"default": engine} + ): op_session = handler.make_session_office_op() self.assertIsInstance(op_session, orm.Session) self.assertIs(op_session.bind, engine) def test_make_session_office_trans(self): handler = self.make_handler() - engine = sa.create_engine('sqlite://') - with patch.object(self.config, 'core_office_trans_engines', create=True, - new={'default': engine}): + engine = sa.create_engine("sqlite://") + with patch.object( + self.config, + "core_office_trans_engines", + create=True, + new={"default": engine}, + ): trans_session = handler.make_session_office_trans() self.assertIsInstance(trans_session, orm.Session) self.assertIs(trans_session.bind, engine) def test_make_session_office_arch(self): handler = self.make_handler() - engine = sa.create_engine('sqlite://') - with patch.object(self.config, 'core_office_arch_engines', create=True, - new={'default': engine}): + engine = sa.create_engine("sqlite://") + with patch.object( + self.config, + "core_office_arch_engines", + create=True, + new={"default": engine}, + ): arch_session = handler.make_session_office_arch() self.assertIsInstance(arch_session, orm.Session) self.assertIs(arch_session.bind, engine) def test_make_session_lane_op(self): handler = self.make_handler() - engine = sa.create_engine('sqlite://') - with patch.object(self.config, 'core_lane_op_engines', create=True, - new={'default': engine}): + engine = sa.create_engine("sqlite://") + with patch.object( + self.config, "core_lane_op_engines", create=True, new={"default": engine} + ): op_session = handler.make_session_lane_op() self.assertIsInstance(op_session, orm.Session) self.assertIs(op_session.bind, engine) def test_make_session_lane_trans(self): handler = self.make_handler() - engine = sa.create_engine('sqlite://') - with patch.object(self.config, 'core_lane_trans_engines', create=True, - new={'default': engine}): + engine = sa.create_engine("sqlite://") + with patch.object( + self.config, "core_lane_trans_engines", create=True, new={"default": engine} + ): trans_session = handler.make_session_lane_trans() self.assertIsInstance(trans_session, orm.Session) self.assertIs(trans_session.bind, engine) @@ -101,9 +117,11 @@ class TestCoreposHandler(ConfigTestCase): self.assertRaises(ConfigurationError, handler.get_office_url, require=True) # config can specify (traliing slash is stripped) - self.config.setdefault('corepos.office.url', 'http://localhost/fannie/') - self.assertEqual(handler.get_office_url(), 'http://localhost/fannie') - self.assertEqual(handler.get_office_url(require=True), 'http://localhost/fannie') + self.config.setdefault("corepos.office.url", "http://localhost/fannie/") + self.assertEqual(handler.get_office_url(), "http://localhost/fannie") + self.assertEqual( + handler.get_office_url(require=True), "http://localhost/fannie" + ) def test_get_office_department_url(self): handler = self.make_handler() @@ -112,8 +130,11 @@ class TestCoreposHandler(ConfigTestCase): self.assertIsNone(handler.get_office_department_url(7)) # typical - self.config.setdefault('corepos.office.url', 'http://localhost/fannie/') - self.assertEqual(handler.get_office_department_url(7), 'http://localhost/fannie/item/departments/DepartmentEditor.php?did=7') + self.config.setdefault("corepos.office.url", "http://localhost/fannie/") + self.assertEqual( + handler.get_office_department_url(7), + "http://localhost/fannie/item/departments/DepartmentEditor.php?did=7", + ) def test_get_office_employee_url(self): handler = self.make_handler() @@ -122,8 +143,11 @@ class TestCoreposHandler(ConfigTestCase): self.assertIsNone(handler.get_office_employee_url(7)) # typical - self.config.setdefault('corepos.office.url', 'http://localhost/fannie/') - self.assertEqual(handler.get_office_employee_url(7), 'http://localhost/fannie/admin/Cashiers/CashierEditor.php?emp_no=7') + self.config.setdefault("corepos.office.url", "http://localhost/fannie/") + self.assertEqual( + handler.get_office_employee_url(7), + "http://localhost/fannie/admin/Cashiers/CashierEditor.php?emp_no=7", + ) def test_get_office_likecode_url(self): handler = self.make_handler() @@ -132,18 +156,24 @@ class TestCoreposHandler(ConfigTestCase): self.assertIsNone(handler.get_office_likecode_url(7)) # typical - self.config.setdefault('corepos.office.url', 'http://localhost/fannie/') - self.assertEqual(handler.get_office_likecode_url(7), 'http://localhost/fannie/item/likecodes/LikeCodeEditor.php?start=7') + self.config.setdefault("corepos.office.url", "http://localhost/fannie/") + self.assertEqual( + handler.get_office_likecode_url(7), + "http://localhost/fannie/item/likecodes/LikeCodeEditor.php?start=7", + ) def test_get_office_product_url(self): handler = self.make_handler() # null - self.assertIsNone(handler.get_office_product_url('07430500132')) + self.assertIsNone(handler.get_office_product_url("07430500132")) # typical - self.config.setdefault('corepos.office.url', 'http://localhost/fannie/') - self.assertEqual(handler.get_office_product_url('07430500132'), 'http://localhost/fannie/item/ItemEditorPage.php?searchupc=07430500132') + self.config.setdefault("corepos.office.url", "http://localhost/fannie/") + self.assertEqual( + handler.get_office_product_url("07430500132"), + "http://localhost/fannie/item/ItemEditorPage.php?searchupc=07430500132", + ) def test_get_office_vendor_url(self): handler = self.make_handler() @@ -152,5 +182,8 @@ class TestCoreposHandler(ConfigTestCase): self.assertIsNone(handler.get_office_vendor_url(7)) # typical - self.config.setdefault('corepos.office.url', 'http://localhost/fannie/') - self.assertEqual(handler.get_office_vendor_url(7), 'http://localhost/fannie/item/vendors/VendorIndexPage.php?vid=7') + self.config.setdefault("corepos.office.url", "http://localhost/fannie/") + self.assertEqual( + handler.get_office_vendor_url(7), + "http://localhost/fannie/item/vendors/VendorIndexPage.php?vid=7", + ) diff --git a/tests/web/views/corepos/test_members.py b/tests/web/views/corepos/test_members.py index b3da7b0..9c4f557 100644 --- a/tests/web/views/corepos/test_members.py +++ b/tests/web/views/corepos/test_members.py @@ -29,16 +29,18 @@ class TestMemberView(WebTestCase): def test_configure_grid(self): view = self.make_view() grid = view.make_grid(model_class=view.model_class) - self.assertNotIn('first_name', grid.renderers) - self.assertNotIn('first_name', grid.linked_columns) - with patch.object(self.request, 'is_root', new=True): + self.assertNotIn("first_name", grid.renderers) + self.assertNotIn("first_name", grid.linked_columns) + with patch.object(self.request, "is_root", new=True): view.configure_grid(grid) - self.assertIn('first_name', grid.renderers) - self.assertIn('first_name', grid.linked_columns) + self.assertIn("first_name", grid.renderers) + self.assertIn("first_name", grid.linked_columns) def test_render_customer_attr(self): view = self.make_view() member = op_model.MemberInfo() customer = op_model.CustomerClassic(first_name="Fred") member.customers.append(customer) - self.assertEqual(view.render_customer_attr(member, 'first_name', 'nope'), "Fred") + self.assertEqual( + view.render_customer_attr(member, "first_name", "nope"), "Fred" + ) diff --git a/tests/web/views/corepos/test_products.py b/tests/web/views/corepos/test_products.py index 8870208..e2e988e 100644 --- a/tests/web/views/corepos/test_products.py +++ b/tests/web/views/corepos/test_products.py @@ -16,6 +16,6 @@ class TestProductView(WebTestCase): def test_configure_grid(self): view = self.make_view() grid = view.make_grid(model_class=view.model_class) - self.assertNotIn('upc', grid.linked_columns) + self.assertNotIn("upc", grid.linked_columns) view.configure_grid(grid) - self.assertIn('upc', grid.linked_columns) + self.assertIn("upc", grid.linked_columns)