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()