60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
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__)
|
|
|
|
|
|
# Relocate Jeeves modules to separate folder and let a "master" module handle imports, and setup.
|
|
class Article():
|
|
"""Handles articles in Jeeves"""
|
|
|
|
@staticmethod
|
|
def get(art_no):
|
|
""" Query an article by number """
|
|
try:
|
|
return ArticleModel.query.filter_by(
|
|
ArtNr=art_no
|
|
).one()
|
|
except NoResultFound:
|
|
raise KeyError
|
|
|
|
@staticmethod
|
|
def get_all(filter_=and_(ArticleModel.ItemStatusCode == 0, ArticleModel.ArtKod != 2)):
|
|
# .filter_by(ItemStatusCode=0, ArtKod=2)
|
|
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 Company.__table__.columns])
|
|
|
|
logger.info("Starting TEST")
|
|
# session = RawSession()
|
|
|
|
logger.info("Testing gettings an article")
|
|
# 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(ArticleModel.get_all())
|
|
)
|