def get_table(view: str) -> Table: table = Table(g.table_headers[view]) if view == 'file': table.header = ['date'] + table.header file_stats = get_file_stats() for entity in Entity.get_by_class('file', nodes=True): date = 'N/A' if entity.id in file_stats: date = format_date( datetime.datetime.utcfromtimestamp( file_stats[entity.id]['date'])) table.rows.append([ date, link(entity), entity.print_standard_type(), convert_size(file_stats[entity.id]['size']) if entity.id in file_stats else 'N/A', file_stats[entity.id]['ext'] if entity.id in file_stats else 'N/A', entity.description ]) elif view == 'reference_system': for system in g.reference_systems.values(): table.rows.append([ link(system), system.count if system.count else '', external_url(system.website_url), external_url(system.resolver_url), system.placeholder, link(g.nodes[system.precision_default_id]) if system.precision_default_id else '', system.description ]) else: classes = ['place'] if view == 'place' else g.view_class_mapping[view] entities = Entity.get_by_class(classes, nodes=True) table.rows = [get_base_table_data(item) for item in entities] return table
def __init__(self, name: str, origin: Optional[Entity] = None) -> None: self.name = name self.title = uc_first(_(name.replace('_', ' '))) self.origin = origin if not origin: return id_ = origin.id buttons: List[str] = [] table = Table(g.table_headers[name]) view = origin.class_.view class_ = origin.class_ if name == 'reference': table.header = table.header + ['page'] if name == 'actor': if view == 'place': table.header = [ 'actor', 'property', 'class', 'first', 'last', 'description' ] elif view == 'file': buttons = [ button('link', url_for('file_add', id_=id_, view=name)) ] elif view == 'reference': buttons = [ button('link', url_for('reference_add', id_=id_, view=name)) ] elif view == 'source': buttons = [ button('link', url_for('source_add', id_=id_, view=name)) ] elif view == 'event': table.header = [ 'actor', 'class', 'involvement', 'first', 'last', 'description' ] buttons = [ button('link', url_for('involvement_insert', origin_id=id_)) ] for item in g.view_class_mapping['actor']: buttons.append( button(g.classes[item].label, url_for('insert', class_=item, origin_id=id_))) elif name == 'artifact': buttons = [ button('link', url_for('source_add', id_=id_, view='artifact')), button(g.classes['artifact'].label, url_for('insert', class_='artifact', origin_id=id_)) ] elif name == 'entities': buttons = [ button(_('move entities'), url_for('node_move_entities', id_=id_)) ] elif name == 'event': if view == 'file': buttons = [ button('link', url_for('file_add', id_=id_, view='event')) ] elif view == 'actor': table.header = [ 'event', 'class', 'involvement', 'first', 'last', 'description' ] buttons = [ button('link', url_for('involvement_insert', origin_id=id_)) ] elif view == 'source': buttons = [ button('link', url_for('source_add', id_=id_, view='event')) ] elif view == 'reference': buttons = [ button('link', url_for('reference_add', id_=id_, view='event')) ] for item in g.view_class_mapping['event']: buttons.append( button(g.classes[item].label, url_for('insert', class_=item, origin_id=id_))) if view == 'artifact': buttons = [ button(g.classes['move'].label, url_for('insert', class_='move', origin_id=id_)) ] elif name == 'feature': if current_user.settings[ 'module_sub_units'] and class_.name == 'place': buttons = [ button(g.classes[name].label, url_for('insert', class_=name, origin_id=id_)) ] elif name == 'find': if current_user.settings[ 'module_sub_units'] and class_.name == 'stratigraphic_unit': buttons = [ button(g.classes[name].label, url_for('insert', class_=name, origin_id=id_)) ] elif name == 'file': if view == 'reference': buttons = [ button('link', url_for('reference_add', id_=id_, view=name)) ] else: table.header += [_('main image')] buttons = [button('link', url_for('entity_add_file', id_=id_))] buttons.append( button(g.classes[name].label, url_for('insert', class_=name, origin_id=id_))) elif name == 'human_remains': if current_user.settings[ 'module_sub_units'] and class_.name == 'stratigraphic_unit': buttons = [ button(g.classes[name].label, url_for('insert', origin_id=id_, class_=name)) ] elif name == 'member': buttons = [button('link', url_for('member_insert', origin_id=id_))] elif name == 'member_of': buttons = [ button( 'link', url_for('member_insert', origin_id=id_, code='membership')) ] elif name == 'note': if util.is_authorized('contributor'): buttons = [ button(_('note'), url_for('note_insert', entity_id=id_)) ] elif name == 'place': if class_.name == 'file': buttons = [ button('link', url_for('file_add', id_=id_, view=name)) ] elif view == 'reference': buttons = [ button('link', url_for('reference_add', id_=id_, view=name)) ] elif view == 'source': buttons = [ button('link', url_for('source_add', id_=id_, view=name)) ] buttons.append( button(g.classes[name].label, url_for('insert', class_=name, origin_id=id_))) elif name == 'reference': buttons = [ button('link', url_for('entity_add_reference', id_=id_)) ] for item in g.view_class_mapping['reference']: buttons.append( button(g.classes[item].label, url_for('insert', class_=item, origin_id=id_))) elif name == 'relation': buttons = [ button('link', url_for('relation_insert', origin_id=id_)) ] for item in g.view_class_mapping['actor']: buttons.append( button(g.classes[item].label, url_for('insert', class_=item, origin_id=id_))) elif name == 'source': if class_.name == 'file': buttons = [ button(_('link'), url_for('file_add', id_=id_, view=name)) ] elif view == 'reference': buttons = [ button('link', url_for('reference_add', id_=id_, view=name)) ] else: buttons = [ button('link', url_for('entity_add_source', id_=id_)) ] buttons.append( button(g.classes['source'].label, url_for('insert', class_=name, origin_id=id_))) elif name == 'subs': table.header = [_('name'), _('count'), _('info')] if view == 'event': table.header = g.table_headers['event'] elif name == 'stratigraphic_unit': if current_user.settings[ 'module_sub_units'] and class_.name == 'feature': buttons = [ button(g.classes['stratigraphic_unit'].label, url_for('insert', class_=name, origin_id=id_)) ] elif name == 'text': buttons = [ button(_('text'), url_for('translation_insert', source_id=id_)) ] self.table = table if is_authorized('contributor'): self.buttons = buttons