def admin_check_link_duplicates( delete: Optional[str] = None) -> Union[str, Response]: if delete: count = Link.delete_link_duplicates() logger.log('info', 'admin', f"Deleted duplicate links: {count}") flash(f"{_('deleted links')}: {count}", 'info') return redirect(url_for('admin_check_link_duplicates')) table = Table([ 'domain', 'range', 'property_code', 'description', 'type_id', 'begin_from', 'begin_to', 'begin_comment', 'end_from', 'end_to', 'end_comment', 'count']) for row in Link.check_link_duplicates(): table.rows.append([ link(Entity.get_by_id(row['domain_id'])), link(Entity.get_by_id(row['range_id'])), link(g.properties[row['property_code']]), row['description'], link(g.types[row['type_id']]) if row['type_id'] else '', format_date(row['begin_from']), format_date(row['begin_to']), row['begin_comment'], format_date(row['end_from']), format_date(row['end_to']), row['end_comment'], row['count']]) if not table.rows: # Check single types for multiple use table = Table( ['entity', 'class', 'base type', 'incorrect multiple types']) for row in Link.check_single_type_duplicates(): remove_links = [] for type_ in row['offending_types']: url = url_for( 'admin_delete_single_type_duplicate', entity_id=row['entity'].id, type_id=type_.id) remove_links.append( f'<a href="{url}">{uc_first(_("remove"))}</a>' f'{type_.name}') table.rows.append([ link(row['entity']), row['entity'].class_.name, link(g.types[row['type'].id]), '<br><br><br><br><br>'.join(remove_links)]) return render_template( 'admin/check_link_duplicates.html', table=table, title=_('admin'), crumbs=[ [_('admin'), f"{url_for('admin_index')}#tab-data"], _('check link duplicates')])
def admin_check_link_duplicates( delete: Optional[str] = None) -> Union[str, Response]: if delete: count = Link.delete_link_duplicates() logger.log('info', 'admin', f"Deleted duplicate links: {count}") flash(f"{_('deleted links')}: {count}", 'info') return redirect(url_for('admin_check_link_duplicates')) table = Table([ 'domain', 'range', 'property_code', 'description', 'type_id', 'begin_from', 'begin_to', 'begin_comment', 'end_from', 'end_to', 'end_comment', 'count']) for row in Link.check_link_duplicates(): table.rows.append([ link(Entity.get_by_id(row['domain_id'])), link(Entity.get_by_id(row['range_id'])), link(g.properties[row['property_code']]), row['description'], link(g.nodes[row['type_id']]) if row['type_id'] else '', format_date(row['begin_from']), format_date(row['begin_to']), row['begin_comment'], format_date(row['end_from']), format_date(row['end_to']), row['end_comment'], row['count']]) duplicates = False if table.rows: duplicates = True else: # If no exact duplicates check single types for multiple use table = Table( ['entity', 'class', 'base type', 'incorrect multiple types'], rows=Link.check_single_type_duplicates()) return render_template( 'admin/check_link_duplicates.html', table=table, duplicates=duplicates, title=_('admin'), crumbs=[ [_('admin'), f"{url_for('admin_index')}#tab-data"], _('check link duplicates')])