You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
from minibase.app import db
|
|
from sqlalchemy import case
|
|
|
|
class table_printable:
|
|
def __init__(self, table, link_for_item, item_to_be_linked):
|
|
self.titles = table.__table__.columns.keys()
|
|
self.lines = table.query.all()
|
|
self.link_for_item = link_for_item
|
|
self.item_to_be_linked = item_to_be_linked
|
|
self.paginate = 0
|
|
|
|
|
|
# https://www.youtube.com/watch?v=PSWf2TjTGNY&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=9
|
|
class table_printable_paginate:
|
|
def __init__(self, table, current_page, per_page, link_for_item, item_to_be_linked):
|
|
self.titles = table.__table__.columns.keys()
|
|
self.lines = table.query.paginate(page=current_page, per_page=per_page)
|
|
self.link_for_item = link_for_item
|
|
self.item_to_be_linked = item_to_be_linked
|
|
self.paginate = 1
|
|
|
|
|
|
def queryNameWithDefaultId(table,defId):
|
|
return table.query.order_by(case((table.id == defId, 0),else_=1),table.name.asc())
|
|
|
|
|
|
def queryWithDefaultAttrOrderBy(table, attribute, default, order_by):
|
|
return table.query.order_by(case((attribute == default, 0),else_=1),order_by.asc())
|
|
|
|
|
|
def queryItemWithId(table,defId):
|
|
return table.query.order_by(case((table.id == defId, 0),else_=1),table.name.asc())
|
|
|
|
|
|
def queryIlikeFromTable(table, attribute, data):
|
|
return table.query.filter(attribute.ilike(f'%{data}%')).first()
|
|
|
|
|
|
# Queries Items from table using an attribute, and ordered by the attribute, ascenting or descending
|
|
def queryWithAttrOrder(table, attribute, desc=0):
|
|
if desc:
|
|
return table.query.order_by(attribute.desc()).all()
|
|
else:
|
|
return table.query.order_by(attribute.asc()).all()
|
|
#return table.query.filter_by(attribute=data).order_by(order_by.asc()).all()
|
|
|
|
|
|
def queryItemFromTableDateDesc(table, attribute):
|
|
return table.query.order_by(attribute.asc())
|
|
|
|
|
|
def dbAdd(dbClass):
|
|
db.session.add(dbClass)
|
|
|
|
|
|
def dbCommit():
|
|
db.session.commit()
|
|
|
|
|
|
def dbAddAndCommit(dbClass):
|
|
db.session.add(dbClass)
|
|
db.session.commit()
|