Esempio n. 1
0
 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)
Esempio n. 2
0
 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})
Esempio n. 3
0
 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]
Esempio n. 4
0
 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)
Esempio n. 5
0
 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'])
Esempio n. 6
0
 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]
Esempio n. 7
0
 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})
Esempio n. 8
0
 def get_forms(self) -> Dict[int, Dict[str, Any]]:
     return {
         row['id']: {
             'name': row['name']
         }
         for row in Db.get_forms(self.id)
     }
Esempio n. 9
0
 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
Esempio n. 10
0
 def add_forms(self, form: FlaskForm) -> None:
     Db.add_forms(self.id, form.forms.data)
Esempio n. 11
0
 def get_all() -> Dict[int, ReferenceSystem]:
     return {row['id']: ReferenceSystem(row) for row in Db.get_all()}
Esempio n. 12
0
 def delete_links_from_entity(entity: Entity) -> None:
     Db.delete_links_from_entity(entity.id)
Esempio n. 13
0
 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)
Esempio n. 14
0
 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