init
This commit is contained in:
25
web/commons/models/mixin/steel.py
Normal file
25
web/commons/models/mixin/steel.py
Normal file
@@ -0,0 +1,25 @@
|
||||
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()
|
Reference in New Issue
Block a user