import datetime from sqlalchemy import func from calculators import Helper 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]