Fixing fields in notification emails and lists contents
parent
2d69b244b6
commit
3ca137bed0
|
@ -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>
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue