{% extends "base.html" %} {% block title %}{{ page_title }}{% endblock %} {% block content %}

Duplicate parties

{% if company %}

{{ counts.candidates }} candidates · {{ counts.approved }} approved · {{ counts.dismissed }} dismissed · {{ counts.review }} to review · {{ counts.merged }} merged{% if counts.failed %} · {{ counts.failed }} failed or stale{% endif %}
Last scan: {% if last_scan %}{{ last_scan|date:"Y-m-d H:i" }}{% else %}never{% endif %}

{% endif %}
{% if company and can_merge %}
{% csrf_token %} {% if request.GET.company %}{% endif %}
{% if last_undoable %}
{% csrf_token %} {% if request.GET.company %}{% endif %}
{% endif %}
{% endif %}
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %} {% if not company %}

No company is linked to your account, so there is no merge queue to show.{% if request.user.is_superuser %} Add ?company=<id> to the address.{% endif %}

{% else %} {% if not can_merge %}

You can review this queue. Approving, dismissing and undoing merges needs the “Can merge and unmerge parties” permission.

{% endif %} {% if runs %}

Apply runs

{% for run in runs %}
{{ run.created_at|date:"Y-m-d H:i" }} · {{ run.get_status_display }} · by {{ run.actor }} · {{ run.applied }} merged{% if run.failed %}, {{ run.failed }} failed{% endif %}{% if run.pending %}, {{ run.pending }} pending{% endif %}
{% if can_merge and run.pending and run.status != "cancelled" %}
{% csrf_token %} {% if request.GET.company %}{% endif %}

Large runs: manage.py unify_apply --run {{ run.pk }}

{% endif %}
{% endfor %} {% endif %}
{% if request.GET.company %}{% endif %}
{% if can_merge %}
{% csrf_token %} {% if request.GET.company %}{% endif %} Only clusters at ≥ 0.95 with no flag, no block and no domain-only link can be selected.
{% endif %} {% for c in clusters %}
{% if can_merge and c.bulk and c.row.mapping_state == "proposed" %} {% endif %}

{{ c.members|length }} parties · confidence {{ c.row.mapping_confidence }}

{{ c.row.get_mapping_state_display }} {% if c.flags %}Needs individual review{% endif %} {% if c.stale %}Stale: a party was merged or removed{% endif %}
    {% for sentence in c.evidence %}
  • {{ sentence }}
  • {% endfor %}
{% csrf_token %} {% if request.GET.company %}{% endif %}
{% for p in c.members %} {% endfor %} {% for line in c.table %} {% for value in line.values %} {% endfor %} {% endfor %}
Field
{{ line.label }}{{ value|default:"—" }}
{% if c.picks and can_merge %}
Values that differ: keep {% for pick in c.picks %}
{% endfor %}
{% endif %} {% if c.blocked %}
Cannot be merged here. {% for reason in c.blocked %} {{ reason }}{% endfor %}
{% endif %} {% if can_merge %}
{% if not c.blocked and not c.stale %} {% endif %} {% if c.next_id %}Skip{% endif %}
{% endif %}
{% empty %}

No duplicate candidates. Last scan {% if last_scan %}{{ last_scan|date:"Y-m-d H:i" }}{% else %}never{% endif %}.

{% endfor %} {% if page.has_other_pages %} {% endif %}

Recent merges

{% for m in recent_merges %}
{{ m.at|date:"Y-m-d H:i" }} · {% for loser in m.losers %}{{ loser.display_name }}{% if not forloop.last %}, {% endif %}{% endfor %} → {{ m.survivor.display_name }} · by {{ m.actor }}
{% if can_merge %}
{% csrf_token %} {% if request.GET.company %}{% endif %}
{% endif %}
{% empty %}

No merges yet.

{% endfor %} {% endif %}
{% include "erp/_list_a11y_script.html" %} {% endblock %}