In progress: Jeeves communication is now based on SQLAlchemy
This commit is contained in:
parent
0fdc029153
commit
28726fee01
21 changed files with 637 additions and 78 deletions
104
pyjeeves/models/raw.py
Normal file
104
pyjeeves/models/raw.py
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
pyjeeves.models
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Jeeves raw data models
|
||||
"""
|
||||
# from sqlalchemy import Column, String
|
||||
from sqlalchemy.schema import MetaData, ForeignKey, Column
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.types import Integer, String
|
||||
from sqlalchemy.ext.automap import automap_base
|
||||
from sqlalchemy.sql.expression import and_
|
||||
|
||||
# from pyjeeves.session import raw_engine
|
||||
from . import db
|
||||
|
||||
from pyjeeves import logging
|
||||
from .abc import RawBaseModel
|
||||
|
||||
logger = logging.getLogger("PyJeeves." + __name__)
|
||||
logger.info("Reading Jeeves DB structure")
|
||||
|
||||
meta = MetaData()
|
||||
meta.reflect(bind=db.raw_session.connection(), only=['ar', 'ars', 'fr', 'kus', 'oh', 'lp', 'vg'])
|
||||
|
||||
# Table('fr', meta, implicit_returning=False)
|
||||
|
||||
Base = automap_base(cls=db.Model, name='Model', metadata=meta)
|
||||
|
||||
|
||||
class CommodityGroup(Base, RawBaseModel):
|
||||
__tablename__ = 'vg'
|
||||
column_map = {'VaruGruppKod': 'CommodityGroupNumber', 'VaruGruppBeskr': 'CommodityGroupName'}
|
||||
print_only = ('VaruGruppKod', 'VaruGruppBeskr')
|
||||
print_filter = ('Articles', 'articles_collection')
|
||||
# to_json_filter = ('Articles', 'articles_collection')
|
||||
|
||||
|
||||
class ArticleBalance(Base, RawBaseModel):
|
||||
__tablename__ = 'ars'
|
||||
column_map = {'LagSaldo': 'Balance',
|
||||
'LagResAnt': 'ReservedBalance',
|
||||
'LagsaldoAltEnh': 'BalanceAlternative',
|
||||
'LagResAntAltEnh': 'ReservedAlternativeBalance',
|
||||
'LagStalle': 'StorageLocationNumber'}
|
||||
print_only = ('LagSaldo',
|
||||
'LagResAnt',
|
||||
'LagsaldoAltEnh',
|
||||
'LagResAntAltEnh',
|
||||
'LagStalle')
|
||||
# print_filter = ('Articles', 'articles_collection')
|
||||
# to_json_filter = ('Articles', 'articles_collection')
|
||||
|
||||
ArtNr = Column(Integer, ForeignKey('ar.ArtNr'), primary_key=True)
|
||||
|
||||
|
||||
class Articles(Base, RawBaseModel):
|
||||
__tablename__ = 'ar'
|
||||
|
||||
column_map = {'ArtNr': 'ArticleNumber',
|
||||
'ArtBeskr': 'ArticleName',
|
||||
'LagSaldoArtikel': 'Balance',
|
||||
'EnhetsKod': 'Unit',
|
||||
'ArtListPris': 'ListPrice'}
|
||||
print_only = (
|
||||
'ArtNr',
|
||||
'ArtBeskr',
|
||||
'CommodityGroup',
|
||||
'ArticleBalance',
|
||||
'EnhetsKod',
|
||||
'LagSaldoArtikel',
|
||||
'RowCreatedDt',
|
||||
'ArtListPris')
|
||||
|
||||
ArtNr = Column(Integer, primary_key=True)
|
||||
|
||||
VaruGruppKod = Column(Integer, ForeignKey('vg.VaruGruppKod'), primary_key=True)
|
||||
|
||||
CommodityGroup = relationship(CommodityGroup)
|
||||
ArticleBalance = relationship(ArticleBalance)
|
||||
|
||||
@classmethod
|
||||
def _base_filters(self, obj):
|
||||
return RawBaseModel._base_filters(
|
||||
obj,
|
||||
and_(obj.LagTyp == 0)
|
||||
)
|
||||
|
||||
|
||||
class Companies(Base, RawBaseModel):
|
||||
__tablename__ = 'fr'
|
||||
column_map = {'FtgNr': 'CompanyNumber', 'FtgNamn': 'CompanyName'}
|
||||
print_only = ('CompanyNumber', 'CompanyName')
|
||||
|
||||
FtgNr = Column(String, primary_key=True)
|
||||
|
||||
|
||||
Base.prepare()
|
||||
|
||||
# Base companies for cusomters and suppliers
|
||||
Customers = Base.classes.kus # Customer information
|
||||
Orders = Base.classes.oh # Orders by customers
|
||||
DelivLoc = Base.classes.lp # Connections between a delivery company and customer company
|
||||
Loading…
Add table
Add a link
Reference in a new issue