Files
material-api/web/commons/models/mixin/calculator.py
2024-05-29 10:21:31 +08:00

29 lines
933 B
Python

class CalculatorMixin:
date = None
@classmethod
def query_by_month(cls, query, year, month):
last_month_year, last_month = Helper.get_last_month(year, month)
query = query.filter(cls.date >= datetime.date(last_month_year, last_month, 26))
query = query.filter(cls.date <= datetime.date(year, month, 25))
return query
def upsert(self, *args, **kwargs):
result = self.get_by_key(*args, **kwargs)
if not result:
session = db.session
session.add(self)
session.commit()
else:
session = db.session
self.id = result.id
session.add(result)
session.commit()
@classmethod
def get_last_date_from(cls, date):
query = cls.query.filter(cls.date <= date)
query = query.with_entities(func.max(cls.date))
result = query.one_or_none()
return result[0]