fix: add startup workaround for CORE model imports, to avoid error
still not 100% clear why this has started happening but clearly has something to do with changes to wuttjamaican / rattail config startup sequence..
This commit is contained in:
parent
494cae2433
commit
3514b47776
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2023 Lance Edgar
|
||||
# Copyright © 2010-2024 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -24,6 +24,7 @@
|
|||
Tailbone Provider for CORE-POS Integration
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.orm import sessionmaker, scoped_session
|
||||
from zope.sqlalchemy import register
|
||||
|
||||
|
@ -71,6 +72,37 @@ class TailboneCorePosProvider(TailboneProvider):
|
|||
register(Session)
|
||||
ExtraCoreTransArchiveSessions[key] = Session
|
||||
|
||||
# must import all sqlalchemy models before things get rolling,
|
||||
# otherwise can have errors about continuum TransactionMeta class
|
||||
# not yet mapped, when relevant pages are first requested...
|
||||
# cf. https://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/database/sqlalchemy.html#importing-all-sqlalchemy-models
|
||||
# hat tip to https://stackoverflow.com/a/59241485
|
||||
if rattail_config.core_office_op_engine:
|
||||
app = rattail_config.get_app()
|
||||
corepos = app.get_corepos_handler()
|
||||
|
||||
# nb. use fake db to avoid true cxn errors, since the only
|
||||
# point of this is to load the models
|
||||
engine = sa.create_engine('sqlite://')
|
||||
|
||||
# office_op
|
||||
core_model = corepos.get_model_office_op()
|
||||
core_session = corepos.make_session_office_op(bind=engine)
|
||||
try:
|
||||
core_session.query(core_model.Store).first()
|
||||
except sa.exc.OperationalError:
|
||||
pass
|
||||
core_session.close()
|
||||
|
||||
# office_trans
|
||||
core_model = corepos.get_model_office_trans()
|
||||
core_session = corepos.make_session_office_trans(bind=engine)
|
||||
try:
|
||||
core_session.query(core_model.TransactionDetail).first()
|
||||
except sa.exc.OperationalError:
|
||||
pass
|
||||
core_session.close()
|
||||
|
||||
def get_provided_views(self):
|
||||
return {
|
||||
|
||||
|
|
Loading…
Reference in a new issue