def remove_form(self, form_id: int) -> None: forms = self.get_forms() for link_ in self.get_links('P67'): if link_.range.class_.name == \ forms[form_id]['name']: # pragma: no cover return # Abort if there are linked entities Db.remove_form(self.id, form_id)
def update_system(self, form: FlaskForm) -> None: self.update(form) Db.update_system({ 'entity_id': self.id, 'name': self.name, 'website_url': self.website_url, 'resolver_url': self.resolver_url, 'identifier_example': self.placeholder})
def insert_system(form: FlaskForm) -> Entity: entity = Entity.insert('reference_system', form.name.data, form.description.data) Db.insert_system({ 'entity_id': entity.id, 'name': entity.name, 'website_url': form.website_url.data if form.website_url.data else None, 'resolver_url': form.resolver_url.data if form.resolver_url.data else None}) return ReferenceSystem.get_all()[entity.id]
def update_links(form: FlaskForm, entity: Entity) -> None: for field in form: if field.id.startswith('reference_system_id_'): # Delete and recreate link system = Entity.get_by_id(int(field.id.replace('reference_system_id_', ''))) precision_field = getattr(form, field.id.replace('id_', 'precision_')) Db.remove_link(system.id, entity.id) if field.data: system.link('P67', entity, field.data, type_id=precision_field.data)
def update_system(self, data: dict[str, Any]) -> None: Db.update_system({ 'entity_id': self.id, 'name': self.name, 'website_url': data['reference_system']['website_url'], 'resolver_url': data['reference_system']['resolver_url'], 'identifier_example': data['reference_system']['placeholder']}) if data['reference_system']['classes']: Db.add_classes(self.id, data['reference_system']['classes'])
def insert_system(data: dict[str, str]) -> Entity: entity = Entity.insert( 'reference_system', data['name'], data['description']) Db.insert_system({ 'entity_id': entity.id, 'name': entity.name, 'website_url': data['website_url'] if data['website_url'] else None, 'resolver_url': data['resolver_url'] if data['resolver_url'] else None}) return ReferenceSystem.get_all()[entity.id]
def update_system(self, form: FlaskForm) -> None: self.update(form) precision_default_id = None entity_with_updated_nodes = Entity.get_by_id(self.id, nodes=True) if entity_with_updated_nodes.nodes: # Get default precision id if it was set precision_default_id = list(entity_with_updated_nodes.nodes.keys())[0].id Db.update_system({ 'entity_id': self.id, 'name': self.name, 'website_url': self.website_url, 'resolver_url': self.resolver_url, 'identifier_example': self.placeholder, 'precision_default_id': precision_default_id})
def get_forms(self) -> Dict[int, Dict[str, Any]]: return { row['id']: { 'name': row['name'] } for row in Db.get_forms(self.id) }
def get_form_choices(entity: Union[ReferenceSystem, None]) -> List[Tuple[int, str]]: choices = [] for row in Db.get_form_choices(app.config['EXTERNAL_REFERENCES_FORMS']): if not entity or row['id'] not in entity.forms: if entity and entity.name == 'GeoNames' and row['name'] != 'Place': continue choices.append((row['id'], row['name'])) return choices
def add_forms(self, form: FlaskForm) -> None: Db.add_forms(self.id, form.forms.data)
def get_all() -> Dict[int, ReferenceSystem]: return {row['id']: ReferenceSystem(row) for row in Db.get_all()}
def delete_links_from_entity(entity: Entity) -> None: Db.delete_links_from_entity(entity.id)
def remove_class(self, class_name: str) -> None: for link_ in self.get_links('P67'): if link_.range.class_.name == class_name: # pragma: no cover return # Abort if there are linked entities Db.remove_class(self.id, class_name)
def get_all() -> dict[int, ReferenceSystem]: systems = {row['id']: ReferenceSystem(row) for row in Db.get_all()} for class_ in g.classes.values(): for system_id in class_.reference_systems: systems[system_id].classes.append(class_.name) return systems