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

26 lines
901 B
Python

class SteelMixin(CalculatorMixin):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@classmethod
def get_by_key(cls, name, spec, material, source, date):
spec = spec or ''
material = material or ''
source = source or ''
query = cls.query
query = query.filter(cls.name == name).filter(cls.spec == spec).filter(cls.material == material)
query = query.filter(cls.source == source).filter(cls.date == date)
return query.one_or_none()
def upsert(self):
result = self.get_by_key(self.name, self.spec, self.material, self.source, self.date)
if not result:
session = db.session
session.add(self)
session.commit()
else:
session = db.session
self.id = result.id
session.add(result)
session.commit()