In progress: Jeeves communication is now based on SQLAlchemy

This commit is contained in:
Marcus Lindvall 2019-04-05 16:50:38 +02:00
parent 0fdc029153
commit 28726fee01
21 changed files with 637 additions and 78 deletions

View file

@ -7,7 +7,7 @@
"""
from models import Articles, Customers, InvoiceRows, OrderRows
from models.meta import Articles, Customers, InvoiceRows, OrderRows
from sqlalchemy import desc
from sqlalchemy.inspection import inspect
@ -19,9 +19,10 @@ class Process():
"""docstring for Process"""
def __init__(self, jvs_query, db_session):
super(Process, self).__init__()
# Refactor code to use RawSession instead of raw jvs queries
self.query = jvs_query
self.session = db_session
self.logger = logging.getLogger("PyJeeves.process")
self.logger = logging.getLogger("PyJeeves." + __name__)
def _update_model(self, model, kwargs):
for k, v in kwargs.items():
@ -47,6 +48,7 @@ class Process():
if _data:
self.logger.info("Syncing %s" % jvs_tbl)
nth_item = 0
for item in _data:
_filter_kwargs = {k: item.get(k) for k in _p_keys}
_existing = self.session.query(model).\
@ -57,6 +59,12 @@ class Process():
else:
_new = model(**item)
self.session.add(_new)
if nth_item % 1000 == 0 and nth_item != 0:
self.session.commit()
nth_item += 1
self.session.commit()
else:
self.logger.info("No sync made for %s" % jvs_tbl)
@ -65,4 +73,3 @@ class Process():
self._sync_model(Articles, 'Articles')
self._sync_model(InvoiceRows, 'InvoiceRows')
self._sync_model(OrderRows, 'OrderRows')
self.session.commit()