Fixing fields in notification emails and lists contents

remotes/origin/enhancement/email-actions
Alejandro Alonso 2015-02-04 13:06:20 +01:00 committed by David Barragán Merino
parent 2d69b244b6
commit 3ca137bed0
4 changed files with 33 additions and 24 deletions

View File

@ -91,19 +91,23 @@
{% elif field_name in ["tags", "watchers"] %} {% elif field_name in ["tags", "watchers"] %}
{% set values_from = values.0 or [] %} {% set values_from = values.0 or [] %}
{% set values_to = values.1 or [] %} {% set values_to = values.1 or [] %}
{% set values_added = lists_diff(values_to, values_from) %}
{% set values_removed = lists_diff(values_from, values_to) %}
<tr> <tr>
<td valign="middle" rowspan="2" class="update-row-name"> <td valign="middle" rowspan="2" class="update-row-name">
<h3>{{ field_name }}</h3> <h3>{{ verbose_name(obj_class, field_name) }}</h3>
</td> </td>
<td valign="top" class="update-row-from"> <td valign="top" class="update-row-from">
<span>{{ _("from") }}</span><br> {% if values_added %}
<strong>{{ ', '.join(values_from) }}</strong> <span>{{ _("added") }}</span><br>
</td> <strong>{{ ', '.join(values_added) }}</strong>
</tr> {% endif %}
<tr>
<td valign="top"> {% if values_removed %}
<span>{{ _("to") }}</span><br> <span>{{ _("removed") }}</span><br>
<strong>{{ ', '.join(values_to) }}</strong> <strong>{{ ', '.join(values_removed) }}</strong>
{% endif %}
</td> </td>
</tr> </tr>
{# DESCRIPTIONS #} {# DESCRIPTIONS #}
@ -126,7 +130,7 @@
{% elif field_name == "assigned_to" %} {% elif field_name == "assigned_to" %}
<tr> <tr>
<td valign="middle" rowspan="2" class="update-row-name"> <td valign="middle" rowspan="2" class="update-row-name">
<h3>{{ field_name }}</h3> <h3>{{ verbose_name(obj_class, field_name) }}</h3>
</td> </td>
<td valign="top" class="update-row-from"> <td valign="top" class="update-row-from">
{% if values.0 != None and values.0 != "" %} {% if values.0 != None and values.0 != "" %}
@ -154,7 +158,7 @@
<tr> <tr>
<td valign="middle" rowspan="2" class="update-row-name"> <td valign="middle" rowspan="2" class="update-row-name">
<h3>{{ field_name }}</h3> <h3>{{ verbose_name(obj_class, field_name) }}</h3>
</td> </td>
<td valign="top" class="update-row-from"> <td valign="top" class="update-row-from">
<span>{{ _("from") }}</span><br> <span>{{ _("from") }}</span><br>

View File

@ -12,7 +12,7 @@
] %} ] %}
{% for field_name, values in changed_fields.items() %} {% for field_name, values in changed_fields.items() %}
{% if field_name not in excluded_fields %} {% if field_name not in excluded_fields %}
- {{ verbose_name(object, field_name) }}: - {{ verbose_name(obj_class, field_name) }}:
{# POINTS #} {# POINTS #}
{% if field_name == "points" %} {% if field_name == "points" %}
{% for role, points in values.items() %} {% for role, points in values.items() %}
@ -42,17 +42,16 @@
{% endif %} {% endif %}
{# TAGS AND WATCHERS #} {# TAGS AND WATCHERS #}
{% elif field_name in ["tags", "watchers"] %} {% elif field_name in ["tags", "watchers"] %}
* {{ _("to:") }} {{ ', '.join(values.1) }} {% set values_from = values.0 or [] %}
{% if values.0 %} {% set values_to = values.1 or [] %}
* {{ _("from:") }} {{ ', '.join(values.0) }} {% set values_added = lists_diff(values_to, values_from) %}
{% set values_removed = lists_diff(values_from, values_to) %}
{% if values_added %}
* {{ _("added:") }} {{ ', '.join(values_added) }}
{% endif %} {% endif %}
{# * #} {% if values_removed %}
{% else %} * {{ _("removed:") }} {{ ', '.join(values_removed) }}
{% if values.1 != None and values.1 != "" %}
* {{ _("to:") }} {{ values.1|linebreaksbr }}
{% endif %}
{% if values.0 != None and values.0 != "" %}
* {{ _("from:") }} {{ values.0|linebreaksbr }}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}

View File

@ -29,11 +29,15 @@ EXTRA_FIELD_VERBOSE_NAMES = {
@register.global_function @register.global_function
def verbose_name(obj:object, field_name:str) -> str: def verbose_name(obj_class, field_name):
if field_name in EXTRA_FIELD_VERBOSE_NAMES: if field_name in EXTRA_FIELD_VERBOSE_NAMES:
return EXTRA_FIELD_VERBOSE_NAMES[field_name] return EXTRA_FIELD_VERBOSE_NAMES[field_name]
try: try:
return obj._meta.get_field(field_name).verbose_name return obj_class._meta.get_field(field_name).verbose_name
except Exception: except Exception:
return field_name return field_name
@register.global_function
def lists_diff(list1, list2):
return (list(set(list1) - set(list2)))

View File

@ -249,8 +249,10 @@ def send_sync_notifications(notification_id):
history_entries = tuple(notification.history_entries.all().order_by("created_at")) history_entries = tuple(notification.history_entries.all().order_by("created_at"))
obj, _ = get_last_snapshot_for_key(notification.key) obj, _ = get_last_snapshot_for_key(notification.key)
obj_class = get_model_from_key(obj.key)
context = { context = {
"obj_class": obj_class,
"snapshot": obj.snapshot, "snapshot": obj.snapshot,
"project": notification.project, "project": notification.project,
"changer": notification.owner, "changer": notification.owner,