Пример #1
0
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
Пример #2
0
    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