Model.py 1007 B

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