def place_insert(origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None if origin and origin.system_type == 'place': title = 'feature' form = build_form(FeatureForm, 'Feature') elif origin and origin.system_type == 'feature': title = 'stratigraphic unit' form = build_form(FeatureForm, 'Stratigraphic Unit') elif origin and origin.system_type == 'stratigraphic unit': title = 'find' form = build_form(FeatureForm, 'Find') else: title = 'place' form = build_form(PlaceForm, 'Place') if origin \ and origin.system_type not in ['place', 'feature', 'stratigraphic unit'] \ and hasattr(form, 'insert_and_continue'): del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, origin=origin)) if title == 'place': form.alias.append_entry('') gis_data = GisMapper.get_all() place = None feature = None if origin and origin.system_type == 'stratigraphic unit': feature = origin.get_linked_entity('P46', True) place = feature.get_linked_entity('P46', True) elif origin and origin.system_type == 'feature': place = origin.get_linked_entity('P46', True) return render_template('place/insert.html', form=form, title=title, place=place, gis_data=gis_data, feature=feature, origin=origin)
def place_insert(origin_id: OptionalTyping[int] = None) -> str: origin = EntityMapper.get_by_id(origin_id) if origin_id else None geonames_buttons = False if origin and origin.system_type == 'place': title = 'feature' form = build_form(FeatureForm, 'Feature') elif origin and origin.system_type == 'feature': title = 'stratigraphic unit' form = build_form(FeatureForm, 'Stratigraphic Unit') elif origin and origin.system_type == 'stratigraphic unit': title = 'find' form = build_form(FeatureForm, 'Find') else: title = 'place' form = build_form(PlaceForm, 'Place') geonames_buttons = True if current_user.settings[ 'module_geonames'] else False if origin and origin.system_type not in ['place', 'feature', 'stratigraphic unit'] \ and hasattr(form, 'insert_and_continue'): del form.insert_and_continue if hasattr(form, 'geonames_id') and not current_user.settings['module_geonames']: del form.geonames_id, form.geonames_precision # pragma: no cover if form.validate_on_submit(): return redirect(save(form, origin=origin)) if title == 'place': form.alias.append_entry('') gis_data = GisMapper.get_all() place = None feature = None if origin and origin.system_type == 'stratigraphic unit': feature = origin.get_linked_entity('P46', True) place = feature.get_linked_entity('P46', True) elif origin and origin.system_type == 'feature': place = origin.get_linked_entity('P46', True) overlays = None if origin and origin.class_.code == 'E18' and current_user.settings[ 'module_map_overlay']: overlays = OverlayMapper.get_by_object(origin) return render_template('place/insert.html', form=form, title=title, place=place, origin=origin, gis_data=gis_data, feature=feature, geonames_buttons=geonames_buttons, overlays=overlays)
def hierarchy_update(id_): root = g.nodes[id_] if root.system: abort(403) form = build_form(HierarchyForm, 'hierarchy', root) form.forms.choices = NodeMapper.get_form_choices(root) if root.value_type: del form.multiple elif root.multiple: form.multiple.render_kw = {'disabled': 'disabled'} if form.validate_on_submit(): if form.name.data != root.name and NodeMapper.get_nodes(form.name.data): flash(_('error name exists'), 'error') return redirect(url_for('node_index') + '#tab-' + str(root.id)) save(form, root) flash(_('info update'), 'info') return redirect(url_for('node_index') + '#tab-' + str(root.id)) form.multiple = root.multiple table = {'id': 'used_forms', 'show_pager': False, 'data': [], 'sort': 'sortList: [[0, 0]]', 'header': ['form', 'count']} for form_id, form_ in root.forms.items(): url = url_for('hierarchy_remove_form', id_=root.id, remove_id=form_id) link = '<a href="' + url + '">' + uc_first(_('remove')) + '</a>' count = NodeMapper.get_form_count(root, form_id) table['data'].append([form_['name'], format_number(count) if count else link]) return render_template('hierarchy/update.html', node=root, form=form, table=table, forms=[form.id for form in form.forms])
def hierarchy_update(id_: int) -> str: root = g.nodes[id_] if root.system: abort(403) form = build_form(HierarchyForm, 'hierarchy', root) # type: HierarchyForm form.forms.choices = NodeMapper.get_form_choices(root) if root.value_type: del form.multiple elif root.multiple: form.multiple.render_kw = {'disabled': 'disabled'} if form.validate_on_submit(): if form.name.data != root.name and NodeMapper.get_nodes(form.name.data): flash(_('error name exists'), 'error') return redirect(url_for('node_index') + '#tab-' + str(root.id)) save(form, root) flash(_('info update'), 'info') return redirect(url_for('node_index') + '#tab-' + str(root.id)) form.multiple = root.multiple table = Table(['form', 'count'], paging=False) for form_id, form_ in root.forms.items(): url = url_for('hierarchy_remove_form', id_=root.id, remove_id=form_id) link = '<a href="' + url + '">' + uc_first(_('remove')) + '</a>' count = NodeMapper.get_form_count(root, form_id) table.rows.append([form_['name'], format_number(count) if count else link]) return render_template('hierarchy/update.html', node=root, form=form, table=table, forms=[form.id for form in form.forms])
def relation_insert(origin_id): origin = EntityMapper.get_by_id(origin_id) form = build_form(RelationForm, 'Actor Actor Relation') form.origin_id.data = origin.id if form.validate_on_submit(): g.cursor.execute('BEGIN') try: for actor_id in ast.literal_eval(form.actor.data): if form.inverse.data: link_id = LinkMapper.insert(actor_id, 'OA7', origin.id, form.description.data) else: link_id = origin.link('OA7', actor_id, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') flash(_('entity created'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') if form.continue_.data == 'yes': return redirect(url_for('relation_insert', origin_id=origin_id)) return redirect(url_for('actor_view', id_=origin.id) + '#tab-relation') return render_template('relation/insert.html', origin=origin, form=form)
def note_insert(entity_id: int) -> str: entity = EntityMapper.get_by_id(entity_id) form = build_form(NoteForm, 'note-form') if form.validate_on_submit(): save(form, entity=entity) return redirect(url_for(entity.view_name + '_view', id_=entity.id)) return render_template('note/insert.html', form=form, entity=entity)
def event_update(id_): event = EntityMapper.get_by_id(id_) event.set_dates() form = build_form(EventForm, 'Event', event, request) if event.class_.code != 'E8': del form.given_place form.event_id.data = event.id if form.validate_on_submit(): if was_modified(form, event): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link( logger.get_log_for_advanced_view(event.id)['modifier']) return render_template('event/update.html', form=form, event=event, modifier=modifier) save(form, event) return redirect(url_for('event_view', id_=id_)) super_event = event.get_linked_entity('P117') form.event.data = super_event.id if super_event else '' place = event.get_linked_entity('P7') form.place.data = place.get_linked_entity('P53', True).id if place else '' if event.class_.code == 'E8': # Form data for acquisition form.given_place.data = [ entity.id for entity in event.get_linked_entities('P24') ] return render_template('event/update.html', form=form, event=event)
def involvement_update(id_, origin_id): link_ = LinkMapper.get_by_id(id_) event = EntityMapper.get_by_id(link_.domain.id) actor = EntityMapper.get_by_id(link_.range.id) origin = event if origin_id == event.id else actor form = build_form(ActorForm, 'Involvement', link_, request) form.save.label.text = _('save') del form.actor, form.event, form.insert_and_continue form.activity.choices = [('P11', g.properties['P11'].name)] if event.class_.code in ['E7', 'E8', 'E12']: form.activity.choices.append(('P14', g.properties['P14'].name)) if event.class_.code == 'E8': form.activity.choices.append(('P22', g.properties['P22'].name)) form.activity.choices.append(('P23', g.properties['P23'].name)) if form.validate_on_submit(): g.cursor.execute('BEGIN') try: link_.delete() link_id = event.link(form.activity.data, actor, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') tab = 'actor' if origin.view_name == 'event' else 'event' return redirect(url_for(origin.view_name + '_view', id_=origin.id) + '#tab-' + tab) form.activity.data = link_.property.code form.description.data = link_.description link_.set_dates() form.populate_dates(link_) return render_template('involvement/update.html', origin=origin, form=form, linked_object=event if origin_id != event.id else actor)
def actor_update(id_: int) -> str: actor = EntityMapper.get_by_id(id_, nodes=True, aliases=True) code_class = {'E21': 'Person', 'E74': 'Group', 'E40': 'Legal Body'} form = build_form(ActorForm, code_class[actor.class_.code], actor, request) if form.validate_on_submit(): if was_modified(form, actor): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link( logger.get_log_for_advanced_view(actor.id)['modifier']) return render_template('actor/update.html', form=form, actor=actor, modifier=modifier) save(form, actor) return redirect(url_for('actor_view', id_=id_)) residence = actor.get_linked_entity('P74') form.residence.data = residence.get_linked_entity( 'P53', True).id if residence else '' first = actor.get_linked_entity('OA8') form.begins_in.data = first.get_linked_entity('P53', True).id if first else '' last = actor.get_linked_entity('OA9') form.ends_in.data = last.get_linked_entity('P53', True).id if last else '' for alias in actor.aliases.values(): form.alias.append_entry(alias) form.alias.append_entry('') if actor.class_.code == 'E21': form.begins_in.label.text = _('born in') form.ends_in.label.text = _('died in') return render_template('actor/update.html', form=form, actor=actor)
def relation_update(id_, origin_id): link_ = LinkMapper.get_by_id(id_) domain = EntityMapper.get_by_id(link_.domain.id) range_ = EntityMapper.get_by_id(link_.range.id) origin = range_ if origin_id == range_.id else domain related = range_ if origin_id == domain.id else domain form = build_form(RelationForm, 'Actor Actor Relation', link_, request) del form.actor, form.insert_and_continue, form.origin_id if form.validate_on_submit(): g.cursor.execute('BEGIN') try: link_.delete() if form.inverse.data: link_id = related.link('OA7', origin, form.description.data) else: link_id = origin.link('OA7', related, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') flash(_('info update'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') return redirect(url_for('actor_view', id_=origin.id) + '#tab-relation') if origin.id == range_.id: form.inverse.data = True form.save.label.text = _('save') link_.set_dates() form.populate_dates(link_) return render_template('relation/update.html', origin=origin, form=form, related=related)
def actor_update(id_): actor = EntityMapper.get_by_id(id_) actor.set_dates() code_class = {'E21': 'Person', 'E74': 'Group', 'E40': 'Legal Body'} form = build_form(ActorForm, code_class[actor.class_.code], actor, request) if form.validate_on_submit(): if was_modified(form, actor): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link( logger.get_log_for_advanced_view(actor.id)['modifier']) return render_template('actor/update.html', form=form, actor=actor, modifier=modifier) save(form, actor) return redirect(url_for('actor_view', id_=id_)) residence = actor.get_linked_entity('P74') form.residence.data = residence.get_linked_entity( 'P53', True).id if residence else '' first = actor.get_linked_entity('OA8') form.appears_first.data = first.get_linked_entity('P53', True).id if first else '' last = actor.get_linked_entity('OA9') form.appears_last.data = last.get_linked_entity('P53', True).id if last else '' for alias in [x.name for x in actor.get_linked_entities('P131')]: form.alias.append_entry(alias) form.alias.append_entry('') return render_template('actor/update.html', form=form, actor=actor)
def relation_update(id_, origin_id): link_ = LinkMapper.get_by_id(id_) domain = EntityMapper.get_by_id(link_.domain.id) range_ = EntityMapper.get_by_id(link_.range.id) origin = range_ if origin_id == range_.id else domain related = range_ if origin_id == domain.id else domain form = build_form(RelationForm, 'Actor Actor Relation', link_, request) del form.actor, form.insert_and_continue, form.origin_id if form.validate_on_submit(): g.cursor.execute('BEGIN') try: link_.delete() if form.inverse.data: link_id = related.link('OA7', origin, form.description.data) else: link_id = origin.link('OA7', related, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') flash(_('info update'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') return redirect(url_for('actor_view', id_=origin.id) + '#tab-relation') if origin.id == range_.id: form.inverse.data = True form.save.label.text = _('save') link_.set_dates() form.populate_dates(link_) return render_template('relation/update.html', origin=origin, form=form, related=related)
def member_insert(origin_id: int) -> str: origin = EntityMapper.get_by_id(origin_id) form = build_form(MemberForm, 'Member') del form.group form.origin_id.data = origin.id if form.validate_on_submit(): g.cursor.execute('BEGIN') try: for actor in EntityMapper.get_by_ids( ast.literal_eval(form.actor.data)): link_ = LinkMapper.get_by_id( origin.link('P107', actor, form.description.data)) link_.set_dates(form) link_.type = get_link_type(form) link_.update() g.cursor.execute('COMMIT') flash(_('entity created'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') if form.continue_.data == 'yes': return redirect(url_for('member_insert', origin_id=origin_id)) return redirect(url_for('actor_view', id_=origin.id) + '#tab-member') return render_template('member/insert.html', origin=origin, form=form)
def member_update(id_, origin_id): link_ = LinkMapper.get_by_id(id_) domain = EntityMapper.get_by_id(link_.domain.id) range_ = EntityMapper.get_by_id(link_.range.id) origin = range_ if origin_id == range_.id else domain form = build_form(MemberForm, 'Member', link_, request) del form.actor, form.group, form.insert_and_continue if form.validate_on_submit(): g.cursor.execute('BEGIN') try: link_.delete() link_id = domain.link('P107', range_, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') tab = '#tab-member-of' if origin.id == range_.id else '#tab-member' return redirect(url_for('actor_view', id_=origin.id) + tab) form.save.label.text = _('save') link_.set_dates() form.populate_dates(link_) related = range_ if origin_id == domain.id else domain return render_template('member/update.html', origin=origin, form=form, related=related)
def member_update(id_, origin_id): link_ = LinkMapper.get_by_id(id_) domain = EntityMapper.get_by_id(link_.domain.id) range_ = EntityMapper.get_by_id(link_.range.id) origin = range_ if origin_id == range_.id else domain related = range_ if origin_id == domain.id else domain form = build_form(MemberForm, 'Member', link_, request) del form.actor, form.group, form.insert_and_continue if form.validate_on_submit(): g.cursor.execute('BEGIN') try: link_.delete() link_id = domain.link('P107', range_, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') tab = '#tab-member-of' if origin.id == range_.id else '#tab-member' return redirect(url_for('actor_view', id_=origin.id) + tab) form.save.label.text = _('save') link_.set_dates() form.populate_dates(link_) return render_template('member/update.html', origin=origin, form=form, related=related)
def source_insert(origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(SourceForm, 'Source') if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, origin=origin)) return render_template('source/insert.html', form=form, origin=origin)
def note_update(entity_id: int) -> str: entity = EntityMapper.get_by_id(entity_id) form = build_form(NoteForm, 'note-form') if form.validate_on_submit(): save(form, entity=entity, insert=False) return redirect(url_for(entity.view_name + '_view', id_=entity.id)) form.description.data = UserMapper.get_note(entity) return render_template('note/update.html', form=form, entity=entity)
def source_insert(origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(SourceForm, 'Source') if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, origin=origin)) return render_template('source/insert.html', form=form, origin=origin)
def reference_insert(code, origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(ReferenceForm, uc_first('Information Carrier' if code == 'carrier' else code)) if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) return render_template('reference/insert.html', form=form, code=code, origin=origin)
def event_insert(code, origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(EventForm, 'Event') if code != 'E8': del form.given_place if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) return render_template('event/insert.html', form=form, code=code, origin=origin)
def source_insert(origin_id: Optional[int] = None) -> str: origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(SourceForm, 'Source') if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, origin=origin)) if origin and origin.class_.code == 'E84': form.information_carrier.data = [origin_id] return render_template('source/insert.html', form=form, origin=origin)
def translation_update(id_: int) -> str: translation = EntityMapper.get_by_id(id_, nodes=True) source = translation.get_linked_entity('P73', True) form = build_form(TranslationForm, 'Source translation', translation, request) if form.validate_on_submit(): save(form, translation) flash(_('info update'), 'info') return redirect(url_for('translation_view', id_=translation.id)) return render_template('translation/update.html', translation=translation, source=source, form=form)
def translation_insert(source_id: int) -> str: source = EntityMapper.get_by_id(source_id) form = build_form(TranslationForm, 'Source translation') if form.validate_on_submit(): translation = save(form, source=source) flash(_('entity created'), 'info') if form.continue_.data == 'yes': return redirect(url_for('translation_insert', source_id=source.id)) return redirect(url_for('translation_view', id_=translation.id)) return render_template('translation/insert.html', source=source, form=form)
def actor_insert(code, origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None code_class = {'E21': 'Person', 'E74': 'Group', 'E40': 'Legal Body'} form = build_form(ActorForm, code_class[code]) if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) form.alias.append_entry('') if origin: del form.insert_and_continue return render_template('actor/insert.html', form=form, code=code, origin=origin)
def file_insert(origin_id: Optional[int] = None) -> str: origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(FileForm, 'File') if form.validate_on_submit(): return redirect(save(form, origin=origin)) writeable = True if os.access(app.config['UPLOAD_FOLDER_PATH'], os.W_OK) else False return render_template('file/insert.html', form=form, origin=origin, writeable=writeable)
def reference_insert(code, origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form_code = 'Information Carrier' if code == 'carrier' else uc_first(code) form = build_form(ReferenceForm, uc_first(form_code)) if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) return render_template('reference/insert.html', form=form, code=code, origin=origin)
def file_insert(origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(FileForm, 'File') if form.validate_on_submit(): file_ = request.files['file'] if not file_: # pragma: no cover flash(_('no file to upload'), 'error') elif not allowed_file(file_.filename): flash(_('file type not allowed'), 'error') else: return redirect(save(form, origin=origin)) return render_template('file/insert.html', form=form, origin=origin)
def place_update(id_): object_ = EntityMapper.get_by_id(id_) object_.set_dates() location = object_.get_linked_entity('P53') if object_.system_type == 'feature': form = build_form(FeatureForm, 'Feature', object_, request, location) elif object_.system_type == 'stratigraphic unit': form = build_form(FeatureForm, 'Stratigraphic Unit', object_, request, location) elif object_.system_type == 'find': form = build_form(FeatureForm, 'Find', object_, request, location) else: form = build_form(PlaceForm, 'Place', object_, request, location) if form.validate_on_submit(): if was_modified(form, object_): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link(logger.get_log_for_advanced_view(object_.id)['modifier']) return render_template( 'place/update.html', form=form, object_=object_, modifier=modifier) save(form, object_, location) return redirect(url_for('place_view', id_=id_)) for alias in [x.name for x in object_.get_linked_entities('P1')]: form.alias.append_entry(alias) if object_.system_type == 'place': form.alias.append_entry('') gis_data = GisMapper.get_all(object_.id) place = None feature = None stratigraphic_unit = None if object_.system_type == 'find': stratigraphic_unit = object_.get_linked_entity('P46', True) feature = stratigraphic_unit.get_linked_entity('P46', True) place = feature.get_linked_entity('P46', True) if object_.system_type == 'stratigraphic unit': feature = object_.get_linked_entity('P46', True) place = feature.get_linked_entity('P46', True) elif object_.system_type == 'feature': place = object_.get_linked_entity('P46', True) return render_template('place/update.html', form=form, object_=object_, gis_data=gis_data, place=place, feature=feature, stratigraphic_unit=stratigraphic_unit)
def actor_insert(code, origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None code_class = {'E21': 'Person', 'E74': 'Group', 'E40': 'Legal Body'} form = build_form(ActorForm, code_class[code]) if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) form.alias.append_entry('') if origin: del form.insert_and_continue return render_template('actor/insert.html', form=form, code=code, origin=origin)
def event_insert(code, origin_id=None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form(EventForm, 'Event') if code != 'E8': del form.given_place if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) return render_template('event/insert.html', form=form, code=code, origin=origin)
def hierarchy_insert(param): form = build_form(HierarchyForm, 'hierarchy') form.forms.choices = NodeMapper.get_form_choices() if param == 'value': del form.multiple if form.validate_on_submit(): if NodeMapper.get_nodes(form.name.data): flash(_('error name exists'), 'error') return render_template('hierarchy/insert.html', form=form) node = save(form, value_type=True if param == 'value' else False) flash(_('entity created'), 'info') return redirect(url_for('node_index') + '#tab-' + str(node.id)) return render_template('hierarchy/insert.html', form=form, param=param)
def hierarchy_insert(param: str) -> str: form = build_form(HierarchyForm, 'hierarchy') # type: HierarchyForm form.forms.choices = NodeMapper.get_form_choices() if param == 'value': del form.multiple if form.validate_on_submit(): if NodeMapper.get_nodes(form.name.data): flash(_('error name exists'), 'error') return render_template('hierarchy/insert.html', form=form) node = save(form, value_type=True if param == 'value' else False) flash(_('entity created'), 'info') return redirect(url_for('node_index') + '#tab-' + str(node.id)) return render_template('hierarchy/insert.html', form=form, param=param)
def source_update(id_): source = EntityMapper.get_by_id(id_) form = build_form(SourceForm, 'Source', source, request) if form.validate_on_submit(): if was_modified(form, source): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link(logger.get_log_for_advanced_view(source.id)['modifier']) return render_template( 'source/update.html', form=form, source=source, modifier=modifier) save(form, source) return redirect(url_for('source_view', id_=id_)) return render_template('source/update.html', form=form, source=source)
def source_update(id_): source = EntityMapper.get_by_id(id_) form = build_form(SourceForm, 'Source', source, request) if form.validate_on_submit(): if was_modified(form, source): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link(logger.get_log_for_advanced_view(source.id)['modifier']) return render_template('source/update.html', form=form, source=source, modifier=modifier) save(form, source) return redirect(url_for('source_view', id_=id_)) return render_template('source/update.html', form=form, source=source)
def actor_insert(code: str, origin_id: Optional[int] = None): origin = EntityMapper.get_by_id(origin_id) if origin_id else None code_class = {'E21': 'Person', 'E74': 'Group', 'E40': 'Legal Body'} form = build_form(ActorForm, code_class[code]) if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) form.alias.append_entry('') if origin: del form.insert_and_continue if code == 'E21': form.begins_in.label.text = _('born in') form.ends_in.label.text = _('died in') return render_template('actor/insert.html', form=form, code=code, origin=origin)
def reference_insert(code: str, origin_id: Optional[int] = None) -> str: origin = EntityMapper.get_by_id(origin_id) if origin_id else None form = build_form( ReferenceForm, 'External Reference' if code == 'external_reference' else code) if code == 'external_reference': form.name.validators = [InputRequired(), URL()] form.name.label.text = 'URL' if origin: del form.insert_and_continue if form.validate_on_submit(): return redirect(save(form, code=code, origin=origin)) return render_template('reference/insert.html', form=form, code=code, origin=origin)
def file_update(id_: int) -> str: file = EntityMapper.get_by_id(id_, nodes=True) form = build_form(FileForm, 'File', file, request) del form.file if form.validate_on_submit(): if was_modified(form, file): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link( logger.get_log_for_advanced_view(file.id)['modifier']) return render_template('file/update.html', form=form, file=file, modifier=modifier) save(form, file) return redirect(url_for('file_view', id_=id_)) return render_template('file/update.html', form=form, file=file)
def involvement_insert(origin_id: int) -> str: origin = EntityMapper.get_by_id(origin_id) form = build_form(ActorForm, 'Involvement') if origin.view_name == 'event': del form.event else: del form.actor form.activity.choices = [('P11', g.properties['P11'].name_inverse)] if origin.class_.code in ['E7', 'E8']: form.activity.choices.append(('P14', g.properties['P14'].name_inverse)) if origin.class_.code == 'E8': form.activity.choices.append(('P22', g.properties['P22'].name_inverse)) form.activity.choices.append(('P23', g.properties['P23'].name_inverse)) if form.validate_on_submit(): g.cursor.execute('BEGIN') try: if origin.view_name == 'event': for actor in EntityMapper.get_by_ids( ast.literal_eval(form.actor.data)): link_ = LinkMapper.get_by_id( origin.link(form.activity.data, actor, form.description.data)) link_.set_dates(form) link_.type = get_link_type(form) link_.update() else: for event in EntityMapper.get_by_ids( ast.literal_eval(form.event.data)): link_ = LinkMapper.get_by_id( event.link(form.activity.data, origin, form.description.data)) link_.set_dates(form) link_.type = get_link_type(form) link_.update() g.cursor.execute('COMMIT') flash(_('entity created'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') if form.continue_.data == 'yes': return redirect(url_for('involvement_insert', origin_id=origin_id)) tab = 'actor' if origin.view_name == 'event' else 'event' return redirect( url_for(origin.view_name + '_view', id_=origin.id) + '#tab-' + tab) return render_template('involvement/insert.html', origin=origin, form=form)
def object_update(id_: int) -> str: object_ = EntityMapper.get_by_id(id_, nodes=True) form = build_form(InformationCarrierForm, object_.system_type.title(), object_, request) if form.validate_on_submit(): if was_modified(form, object_): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link( logger.get_log_for_advanced_view(object_.id)['modifier']) return render_template('object/update.html', form=form, object_=object_, modifier=modifier) save(form, object_) return redirect(url_for('object_view', id_=id_)) return render_template('object/update.html', form=form, object_=object_)
def event_update(id_: int) -> str: event = EntityMapper.get_by_id(id_, nodes=True) form = prepare_form(build_form(EventForm, 'Event', event, request), event.class_.code) form.event_id.data = event.id if form.validate_on_submit(): if was_modified(form, event): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link( logger.get_log_for_advanced_view(event.id)['modifier']) return render_template('event/update.html', form=form, event=event, modifier=modifier) save(form, event) return redirect(url_for('event_view', id_=id_)) super_event = event.get_linked_entity('P117') form.event.data = super_event.id if super_event else '' if event.class_.code == 'E9': # Form data for move place_from = event.get_linked_entity('P27') form.place_from.data = place_from.get_linked_entity( 'P53', True).id if place_from else '' place_to = event.get_linked_entity('P26') form.place_to.data = place_to.get_linked_entity( 'P53', True).id if place_to else '' person_data = [] object_data = [] for entity in event.get_linked_entities('P25'): if entity.class_.code == 'E21': person_data.append(entity.id) elif entity.class_.code == 'E84': object_data.append(entity.id) form.person.data = person_data form.object.data = object_data else: place = event.get_linked_entity('P7') form.place.data = place.get_linked_entity('P53', True).id if place else '' if event.class_.code == 'E8': # Form data for acquisition form.given_place.data = [ entity.id for entity in event.get_linked_entities('P24') ] return render_template('event/update.html', form=form, event=event)
def member_insert(origin_id): origin = EntityMapper.get_by_id(origin_id) form = build_form(MemberForm, 'Member') del form.group form.origin_id.data = origin.id if form.validate_on_submit(): g.cursor.execute('BEGIN') try: for actor in EntityMapper.get_by_ids(ast.literal_eval(form.actor.data)): link_id = origin.link('P107', actor, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') flash(_('entity created'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') if form.continue_.data == 'yes': return redirect(url_for('member_insert', origin_id=origin_id)) return redirect(url_for('actor_view', id_=origin.id) + '#tab-member') return render_template('member/insert.html', origin=origin, form=form)
def event_update(id_): event = EntityMapper.get_by_id(id_) event.set_dates() form = build_form(EventForm, 'Event', event, request) if event.class_.code != 'E8': del form.given_place form.event_id.data = event.id if form.validate_on_submit(): if was_modified(form, event): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link(logger.get_log_for_advanced_view(event.id)['modifier']) return render_template('event/update.html', form=form, event=event, modifier=modifier) save(form, event) return redirect(url_for('event_view', id_=id_)) super_event = event.get_linked_entity('P117') form.event.data = super_event.id if super_event else '' place = event.get_linked_entity('P7') form.place.data = place.get_linked_entity('P53', True).id if place else '' if event.class_.code == 'E8': # Form data for acquisition form.given_place.data = [entity.id for entity in event.get_linked_entities('P24')] return render_template('event/update.html', form=form, event=event)
def actor_update(id_): actor = EntityMapper.get_by_id(id_) actor.set_dates() code_class = {'E21': 'Person', 'E74': 'Group', 'E40': 'Legal Body'} form = build_form(ActorForm, code_class[actor.class_.code], actor, request) if form.validate_on_submit(): if was_modified(form, actor): # pragma: no cover del form.save flash(_('error modified'), 'error') modifier = link(logger.get_log_for_advanced_view(actor.id)['modifier']) return render_template('actor/update.html', form=form, actor=actor, modifier=modifier) save(form, actor) return redirect(url_for('actor_view', id_=id_)) residence = actor.get_linked_entity('P74') form.residence.data = residence.get_linked_entity('P53', True).id if residence else '' first = actor.get_linked_entity('OA8') form.appears_first.data = first.get_linked_entity('P53', True).id if first else '' last = actor.get_linked_entity('OA9') form.appears_last.data = last.get_linked_entity('P53', True).id if last else '' for alias in [x.name for x in actor.get_linked_entities('P131')]: form.alias.append_entry(alias) form.alias.append_entry('') return render_template('actor/update.html', form=form, actor=actor)
def involvement_insert(origin_id): origin = EntityMapper.get_by_id(origin_id) form = build_form(ActorForm, 'Involvement') if origin.view_name == 'event': del form.event else: del form.actor form.activity.choices = [('P11', g.properties['P11'].name_inverse)] if origin.class_.code in ['E7', 'E8', 'E12']: form.activity.choices.append(('P14', g.properties['P14'].name_inverse)) if origin.class_.code == 'E8': form.activity.choices.append(('P22', g.properties['P22'].name_inverse)) form.activity.choices.append(('P23', g.properties['P23'].name_inverse)) if form.validate_on_submit(): g.cursor.execute('BEGIN') try: if origin.view_name == 'event': for actor in EntityMapper.get_by_ids(ast.literal_eval(form.actor.data)): link_id = origin.link(form.activity.data, actor, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) else: for event in EntityMapper.get_by_ids(ast.literal_eval(form.event.data)): link_id = event.link(form.activity.data, origin, form.description.data) DateMapper.save_link_dates(link_id, form) NodeMapper.save_link_nodes(link_id, form) g.cursor.execute('COMMIT') flash(_('entity created'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') if form.continue_.data == 'yes': return redirect(url_for('involvement_insert', origin_id=origin_id)) tab = 'actor' if origin.view_name == 'event' else 'event' return redirect(url_for(origin.view_name + '_view', id_=origin.id) + '#tab-' + tab) return render_template('involvement/insert.html', origin=origin, form=form)