1234567891011121314151617181920212223242526272829303132333435 |
- import json
- from pathlib import Path
- from pycs import db
- from pycs.database.base import NamedBaseModel
- class LabelProvider(NamedBaseModel):
- """
- database class for label providers
- """
- description = db.Column(db.String)
- root_folder = db.Column(db.String, nullable=False, unique=True)
- # relationships to other models
- projects = db.relationship("Project", backref="label_provider", lazy="dynamic")
- serialize_rules = ('-projects',)
- @classmethod
- def discover(cls, root: Path, config_name: str = "configuration.json"):
- for folder in Path(root).glob("*"):
- with open(folder / config_name) as f:
- config = json.load(f)
- # extract data
- name = config['name']
- description = config.get('description', None)
- provider, _ = cls.get_or_create(root_folder=str(folder))
- provider.name = name
- provider.description = description
- db.session.commit()
|