Compare commits
2 Commits
de880be761
...
016ba2c716
Author | SHA1 | Date |
---|---|---|
JCWasmx86 | 016ba2c716 | |
JCWasmx86 | ff5e9e653f |
|
@ -722,17 +722,25 @@ class ObjectChangeView(generic.ObjectView):
|
|||
diff_added, diff_removed = deep_compare_dict(prechange_data, instance.postchange_data, exclude=('last_updated'))
|
||||
custom_fields_added = diff_added['custom_fields'] if 'custom_fields' in diff_added else None
|
||||
custom_fields_removed = diff_removed['custom_fields'] if 'custom_fields' in diff_removed else None
|
||||
cfr_list = []
|
||||
if custom_fields_added:
|
||||
for cf, cf_value in prechange_data['custom_fields'].items():
|
||||
cfr_list.append((cf, cf_value, cf in custom_fields_added))
|
||||
cfa_list = []
|
||||
if custom_fields_removed:
|
||||
for cf, cf_value in instance.postchange_data['custom_fields'].items():
|
||||
cfa_list.append((cf, cf_value, cf in custom_fields_removed))
|
||||
else:
|
||||
diff_added = None
|
||||
diff_removed = None
|
||||
custom_fields_added = None
|
||||
custom_fields_removed = None
|
||||
cfa_list = None
|
||||
cfr_list = None
|
||||
|
||||
return {
|
||||
'diff_added': diff_added,
|
||||
'diff_removed': diff_removed,
|
||||
'custom_fields_added': custom_fields_added,
|
||||
'custom_fields_removed': custom_fields_removed,
|
||||
"cfa_list": cfa_list,
|
||||
"cfr_list": cfr_list,
|
||||
'next_change': next_change,
|
||||
'prev_change': prev_change,
|
||||
'related_changes_table': related_changes_table,
|
||||
|
|
|
@ -119,10 +119,11 @@
|
|||
<div class="card-body">
|
||||
{% if object.prechange_data %}
|
||||
<pre class="change-data">{% for k, v in object.prechange_data.items %}{% spaceless %}
|
||||
{% if k != 'custom_fields' or not custom_fields_removed %}
|
||||
{% if k != 'custom_fields' or not cfr_list %}
|
||||
<span{% if k in diff_removed %} class="removed"{% endif %}>{{ k }}: {{ v|json }}</span>
|
||||
{% else %}
|
||||
<span class="removed">{{ k }}: {{ custom_fields_removed|json }}</span>
|
||||
<span>{{ k }}: {</span>{% for cfr_data in cfr_list %}<span{% if cfr_data.2 %} class="removed"{% endif %}> {{ cfr_data.0|json }}: {{ cfr_data.1|json|fixindent }}</span>
|
||||
{% endfor %}<span>}</span>
|
||||
{% endif %}
|
||||
{% endspaceless %}{% endfor %}
|
||||
</pre>
|
||||
|
@ -142,10 +143,11 @@
|
|||
<div class="card-body">
|
||||
{% if object.postchange_data %}
|
||||
<pre class="change-data">{% for k, v in object.postchange_data.items %}{% spaceless %}
|
||||
{% if k != 'custom_fields' or not custom_fields_added %}
|
||||
{% if k != 'custom_fields' or not cfa_list %}
|
||||
<span{% if k in diff_added %} class="added"{% endif %}>{{ k }}: {{ v|json }}</span>
|
||||
{% else %}
|
||||
<span class="added">{{ k }}: {{ custom_fields_added|json }}</span>
|
||||
<span>{{ k }}: {</span>{% for cfa_data in cfa_list %}<span{% if cfa_data.2 %} class="added"{% endif %}> {{ cfa_data.0|json }}: {{ cfa_data.1|json|fixindent }}</span>
|
||||
{% endfor %}<span>}</span>
|
||||
{% endif %}
|
||||
{% endspaceless %}{% endfor %}
|
||||
</pre>
|
||||
|
|
|
@ -20,6 +20,7 @@ __all__ = (
|
|||
'applied_filters',
|
||||
'as_range',
|
||||
'divide',
|
||||
'fixindent',
|
||||
'get_item',
|
||||
'get_key',
|
||||
'humanize_megabytes',
|
||||
|
@ -331,3 +332,19 @@ def applied_filters(context, model, form, query_params):
|
|||
'applied_filters': applied_filters,
|
||||
'save_link': save_link,
|
||||
}
|
||||
|
||||
|
||||
@register.filter
|
||||
def fixindent(value: str) -> str:
|
||||
"""
|
||||
Fixes the indentation of multiline strings so they align well
|
||||
within the changelog view.
|
||||
"""
|
||||
lines = value.splitlines(keepends=True)
|
||||
# For 1 line, the indentation doesn't need to be fixed
|
||||
if len(lines) == 1:
|
||||
return value
|
||||
ret = lines[0]
|
||||
for line in lines[1:]:
|
||||
ret += f' {line}'
|
||||
return ret
|
||||
|
|
Loading…
Reference in New Issue