Example #1
0
    def report_products(cls, orders_ids=list(), subquery=False):
        query = session().query(Product,
                                func.sum(OrderProduct.amount).label('total'))
        query = query.select_from(OrderProduct).join(Product)
        query = query.filter(OrderProduct.order_id.in_(orders_ids))
        query = query.group_by(Product.id)

        if subquery:
            return query.subquery()
        else:
            return query.all()
Example #2
0
    def report_ingredients(cls, products_ids=list(), subquery=False):
        query = session().query(
            Ingredient,
            func.sum(ProductIngredient.amount).label('total'))
        query = query.select_from(ProductIngredient).join(Ingredient)
        query = query.filter(ProductIngredient.product_id.in_(products_ids))
        query = query.group_by(ProductIngredient.ingredient_id)

        if subquery:
            return query.subquery()
        else:
            return query.all()
Example #3
0
    def report_ingredients(cls, orders_ids=list(), subquery=False):
        stmt = cls.report_products(orders_ids=orders_ids, subquery=True)

        query = session().query(
            Ingredient,
            func.sum(stmt.c.total * ProductIngredient.amount),
        )
        query = query.select_from(ProductIngredient).join(Ingredient)
        query = query.join(stmt, ProductIngredient.product_id == stmt.c.id)
        query = query.group_by(Ingredient.id)

        if subquery:
            return query.subquery()
        else:
            return query.all()
Example #4
0
    def save(self):
        if not getattr(self, 'id', None):
            self.created = datetime.utcnow()
            session().add(self)
        else:
            cls = self.__class__
            query = session().query(cls)
            query = query.filter(cls.id == self.id)
            query.update({
                column: getattr(self, column)
                for column in self.__table__.columns.keys()
            })
        self.updated = datetime.utcnow()
        session().commit()

        if 'code' in self.__table__.columns.keys():
            if not self.code:
                self.code = friendly_code.encode(int(self.id))
                session().commit()
Example #5
0
 def get_by_code(cls, code):
     if getattr(cls, 'code', None):
         return session().query(cls).filter(cls.code == code).first()
     else:
         return None
Example #6
0
 def get_by_id(cls, model_id):
     if cls.id:
         return session().query(cls).filter(cls.id == model_id).first()
     else:
         return None
Example #7
0
 def get_all(cls):
     return session().query(cls).all()
Example #8
0
 def delete(self):
     session().delete(self)
     session().commit()
Example #9
0
 def get_by_email(cls, email):
     return session().query(cls).filter(cls.email == email).first()
Example #10
0
 def get_by_product_order(cls, product_id, order_id):
     # return session().query(cls).filter(cls.code == code).first()
     return session().query(cls).filter(cls.product_id == product_id) \
         .filter(cls.order_id == order_id).first()
Example #11
0
 def get_by_order_id(cls, order_id):
     return list(session().query(cls).filter(cls.order_id == order_id))
Example #12
0
 def get_by_product_id(cls, product_id):
     return list(session().query(cls).filter(cls.product_id == product_id))
Example #13
0
 def get_by_product_ingredient(cls, product_id, ingredient_id):
     # return session().query(cls).filter(cls.code == code).first()
     return session().query(cls).filter(cls.product_id == product_id) \
         .filter(cls.ingredient_id == ingredient_id).first()
Example #14
0
 def get_by_ingredient_id(cls, ingredient_id):
     return list(
         session().query(cls).filter(cls.ingredient_id == ingredient_id))