Model.py 960 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import json
  2. from pycs import db
  3. from pycs.database.base import NamedBaseModel
  4. class Model(NamedBaseModel):
  5. """
  6. database class for ML Models
  7. """
  8. description = db.Column(db.String)
  9. root_folder = db.Column(db.String, nullable=False, unique=True)
  10. supports_encoded = db.Column(db.String, nullable=False)
  11. # relationships to other models
  12. projects = db.relationship("Project", backref="model", lazy=True)
  13. @property
  14. def supports(self):
  15. return json.loads(self.supports_encoded)
  16. def copy_to(self, new_name: str, new_root_folder: str):
  17. model = Model.query.get(root_folder=new_root_folder)
  18. is_new = False
  19. if model is None:
  20. model = Model.new(root_folder=new_root_folder)
  21. is_new = True
  22. model.name = name
  23. model.description = self.description
  24. model.supports_encoded = self.supports_encoded
  25. self.commit()
  26. return model, is_new