Started using 'sqlservice'. Added support for many new tables.
This commit is contained in:
parent
9b7d7db996
commit
b77a7069ce
12 changed files with 390 additions and 125 deletions
|
|
@ -1,2 +1,4 @@
|
|||
from .location import Location
|
||||
from .article import Article
|
||||
from .article import Article, ArticleCategory
|
||||
from .company import Company
|
||||
from .pricelist import PriceList
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from pyjeeves.models.raw import Articles
|
||||
from pyjeeves.models.raw import Article as ArticleModel, ProductClass, ArticleClass, CommodityGroup
|
||||
from sqlalchemy.sql.expression import and_
|
||||
from sqlalchemy.orm.exc import NoResultFound
|
||||
|
||||
from pyjeeves import logging
|
||||
logger = logging.getLogger("PyJeeves." + __name__)
|
||||
|
|
@ -9,36 +10,51 @@ logger = logging.getLogger("PyJeeves." + __name__)
|
|||
|
||||
# Relocate Jeeves modules to separate folder and let a "master" module handle imports, and setup.
|
||||
class Article():
|
||||
"""Handles dispatch locations in Jeeves"""
|
||||
def __init__(self):
|
||||
super(Article, self).__init__()
|
||||
"""Handles articles in Jeeves"""
|
||||
|
||||
@staticmethod
|
||||
def get(art_no):
|
||||
""" Query an article by number """
|
||||
return Articles.query.filter_by(
|
||||
ArtNr=art_no
|
||||
).one()
|
||||
try:
|
||||
return ArticleModel.query.filter_by(
|
||||
ArtNr=art_no
|
||||
).one()
|
||||
except NoResultFound:
|
||||
raise KeyError
|
||||
|
||||
@staticmethod
|
||||
def get_all(filter_=and_(Articles.ItemStatusCode == 0, Articles.ArtKod != 2)):
|
||||
def get_all(filter_=and_(ArticleModel.ItemStatusCode == 0, ArticleModel.ArtKod != 2)):
|
||||
# .filter_by(ItemStatusCode=0, ArtKod=2)
|
||||
return Articles.query.filter(filter_).all()
|
||||
return ArticleModel.query.filter(filter_).all()
|
||||
|
||||
|
||||
class ArticleCategory():
|
||||
"""Handles article categories, such as classes and groups in Jeeves"""
|
||||
|
||||
@staticmethod
|
||||
def get_all():
|
||||
# .filter_by(ItemStatusCode=0, ArtKod=2)
|
||||
prod_classes = ProductClass.query.all()
|
||||
art_classes = ArticleClass.query.all()
|
||||
com_groups = CommodityGroup.query.all()
|
||||
|
||||
return {'ProductClasses': prod_classes,
|
||||
'ArticleClasses': art_classes, 'CommodityGroups': com_groups}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# print([column.key for column in Companies.__table__.columns])
|
||||
# print([column.key for column in Company.__table__.columns])
|
||||
|
||||
logger.info("Starting TEST")
|
||||
# session = RawSession()
|
||||
|
||||
logger.info("Testing gettings an article")
|
||||
# c1 = session.query(Companies).filter_by(FtgNr="179580").first()
|
||||
# print(Articles)
|
||||
c1 = Articles.query.filter_by(ArtNr="2103").first()
|
||||
# c1 = session.query(Company).filter_by(FtgNr="179580").first()
|
||||
# print(ArticleModel)
|
||||
c1 = ArticleModel.query.filter_by(ArtNr="2103").first()
|
||||
print(c1)
|
||||
logger.info(c1.json)
|
||||
|
||||
print (
|
||||
len(Article.get_all())
|
||||
print(
|
||||
len(ArticleModel.get_all())
|
||||
)
|
||||
|
|
|
|||
55
pyjeeves/repositories/company.py
Normal file
55
pyjeeves/repositories/company.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from pyjeeves.models.raw import Company as CompanyModel, Customer as CustomerModel
|
||||
from sqlalchemy.sql.expression import and_
|
||||
|
||||
from pyjeeves import logging
|
||||
logger = logging.getLogger("PyJeeves." + __name__)
|
||||
|
||||
|
||||
# Relocate Jeeves modules to separate folder and let a "master" module handle imports, and setup.
|
||||
class Company():
|
||||
"""Handles companies in Jeeves"""
|
||||
|
||||
@staticmethod
|
||||
def get(ftg_nr):
|
||||
""" Query an article by number """
|
||||
return CompanyModel.query.filter_by(
|
||||
FtgNr=ftg_nr
|
||||
).one()
|
||||
|
||||
@staticmethod
|
||||
def get_all_active_customers():
|
||||
cust = CustomerModel.query.filter(and_(CustomerModel.Makulerad == 0)).all()
|
||||
return [c.CompanyModel for c in cust]
|
||||
|
||||
@staticmethod
|
||||
def get_list(ftg_nr=[]):
|
||||
return CompanyModel.query.filter(
|
||||
CompanyModel.FtgNr.in_(ftg_nr)
|
||||
).all()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# print([column.key for column in CompanyModel.__table__.columns])
|
||||
|
||||
logger.info("Starting TEST")
|
||||
# session = RawSession()
|
||||
|
||||
logger.info("Testing gettings a company")
|
||||
# c1 = session.query(CompanyModel).filter_by(FtgNr="179580").first()
|
||||
# print(CompanyModel)
|
||||
|
||||
# print(CompanyModel.get_list(['406569', '179580', '2440070', '179584']))
|
||||
from pprint import pprint
|
||||
pprint(CompanyModel.get('179584').to_dict())
|
||||
|
||||
# c1 = CompanyModel.query.filter_by(FtgNr="406569").first()
|
||||
# print(c1)
|
||||
# logger.info(c1.json)
|
||||
|
||||
# print(
|
||||
# len(CompanyModel.get_all_active_customers())
|
||||
# )
|
||||
|
||||
# print(CompanyModel.get_all_active_customers()[0].CompanyModel)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from pyjeeves.models.raw import Companies, DelivLoc
|
||||
from pyjeeves.models.raw import Company, DelivLoc
|
||||
|
||||
from pyjeeves import logging
|
||||
logger = logging.getLogger("PyJeeves." + __name__)
|
||||
|
|
@ -9,6 +9,7 @@ logger = logging.getLogger("PyJeeves." + __name__)
|
|||
# Relocate Jeeves modules to separate folder and let a "master" module handle imports, and setup.
|
||||
class Location():
|
||||
"""Handles dispatch locations in Jeeves"""
|
||||
|
||||
def __init__(self):
|
||||
super(Location, self).__init__()
|
||||
self.associated_company = '' # Company with new/existing locations
|
||||
|
|
@ -30,7 +31,7 @@ class Location():
|
|||
def create_lev_location(self, ftgnr='', name='', address='',
|
||||
postal_code='', city='', gln='', invoice_ref='', phone=''):
|
||||
|
||||
_loc = Companies(
|
||||
_loc = Company(
|
||||
FtgNr=str(ftgnr), FtgNamn=name, FtgPostadr5=address,
|
||||
FtgLevPostNr=postal_code, FtgPostLevAdr3=city,
|
||||
EAN_Loc_Code=gln, FtgPostAdr1=invoice_ref, ComNr=phone,
|
||||
|
|
@ -49,21 +50,21 @@ class Location():
|
|||
for deliv_loc in self._deliv_locs:
|
||||
deliv_loc.merge()
|
||||
# self.session.merge(deliv_loc) # Create "connnections" between Customer and Location.
|
||||
Companies.commit()
|
||||
Company.commit()
|
||||
# self.session.commit()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# print([column.key for column in Companies.__table__.columns])
|
||||
# print([column.key for column in Company.__table__.columns])
|
||||
|
||||
logger.info("Starting TEST")
|
||||
# session = RawSession()
|
||||
|
||||
logger.info("Testing gettings a company")
|
||||
# c1 = session.query(Companies).filter_by(FtgNr="179580").first()
|
||||
print(Companies)
|
||||
c1 = Companies.query.filter_by(FtgNr="179580").first()
|
||||
# c1 = session.query(Company).filter_by(FtgNr="179580").first()
|
||||
print(Company)
|
||||
c1 = Company.query.filter_by(FtgNr="179580").first()
|
||||
logger.info(c1.json)
|
||||
# RawSession.remove()
|
||||
# from sqlalchemy.inspection import inspect
|
||||
# print (inspect(Companies).columns.items())
|
||||
# print (inspect(Company).columns.items())
|
||||
|
|
|
|||
22
pyjeeves/repositories/pricelist.py
Normal file
22
pyjeeves/repositories/pricelist.py
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from pyjeeves.models.raw import PriceList as PriceListModel
|
||||
from sqlalchemy.orm.exc import NoResultFound
|
||||
|
||||
from pyjeeves import logging
|
||||
logger = logging.getLogger("PyJeeves." + __name__)
|
||||
|
||||
|
||||
# Relocate Jeeves modules to separate folder and let a "master" module handle imports, and setup.
|
||||
class PriceList():
|
||||
"""Handles price lists in Jeeves"""
|
||||
|
||||
@staticmethod
|
||||
def get(price_list_no):
|
||||
""" Query a price list by number """
|
||||
try:
|
||||
return PriceListModel.query.filter_by(
|
||||
PrisLista=price_list_no
|
||||
).one()
|
||||
except NoResultFound:
|
||||
raise KeyError
|
||||
Loading…
Add table
Add a link
Reference in a new issue