Use template filter for consistent removal of 'None links'

Plus cleaner template markup! More HTML-in-Python tho, which always feels a bit CSS-in-JS
This commit is contained in:
2020-09-28 10:31:43 +01:00
parent 6936b94ce6
commit c38105a76e
3 changed files with 18 additions and 13 deletions

View File

@@ -1,4 +1,6 @@
{% extends request.is_ajax|yesno:"base_ajax.html,base_rigs.html" %}
{% load linkornone from filters %}
{% block title %}{% if object.is_rig %}N{{ object.pk|stringformat:"05d" }}{% else %}{{ object.pk }}{% endif %} | {{object.name}}{% endblock %}
{% block content %}
@@ -32,13 +34,9 @@
{% endif %}
</dd>
<dt class="col-sm-6">Email</dt>
<dd class="col-sm-6">
<a href="mailto:{{object.person.email}}" target="_blank">
<span class="overflow-ellipsis">{{ object.person.email }}</span>
</a>
</dd>
<dd class="col-sm-6">{{ object.person.email|linkornone:'mailto' }}</dd>
<dt class="col-sm-6">Phone Number</dt>
<dd class="col-sm-6"><a href="tel:{{object.person.phone}}">{{ object.person.phone }}</a></dd>
<dd class="col-sm-6">{{ object.person.phone|linkornone:'tel' }}</a></dd>
</dl>
</div>
</div>
@@ -55,12 +53,10 @@
</a>
{% endif %}
</dd>
<dt class="col-sm-6">Email</dt>
<dd class="col-sm-6">{{ object.organisation.email|linkornone:'mailto' }}</dd>
<dt class="col-sm-6">Phone Number</dt>
<dd class="col-sm-6">
<a href="tel:{{object.person.phone}}">
{{ object.organisation.phone }}
</a>
</dd>
<dd class="col-sm-6">{{ object.organisation.phone|linkornone:'tel' }}</a></dd>
<dt class="col-sm-6">Has SU Account</dt>
<dd class="col-sm-6">{{ event.organisation.union_account|yesno|capfirst }}</dd>
</dl>

View File

@@ -178,3 +178,11 @@ def namewithnotes(obj, url, autoescape=True):
return mark_safe(obj.name + " <a href='{}'><span class='far fa-sticky-note'></span></a>".format(reverse_lazy(url, kwargs={'pk': obj.pk})))
else:
return obj.name
@register.filter(needs_autoescape=True)
def linkornone(attr, namespace, autoescape=True):
if attr is not None:
return mark_safe("<a href='{}://{}' target='_blank'><span class='overflow-ellipsis'>{}</span></a>".format(namespace, attr, str(attr)))
else:
return "None"

View File

@@ -1,6 +1,7 @@
{% load url_replace from filters %}
{% load orderby from filters %}
{% load paginator from filters %}
{% load linkornone from filters %}
<div class="row justify-content-end">
<form class="form-inline">
{% csrf_token %}
@@ -34,8 +35,8 @@
{% for object in object_list %}
<tr id="row_item">
<th scope="row" class="align-middle" id="cell_name">{{ object.name }}</th>
<td class="align-middle">{{ object.email }}</td>
<td class="align-middle">{% if object.phone %}<a href="tel:{{ object.phone }}">{%endif%}{{ object.phone }}{% if object.phone %}</a>{%endif%}</td>
<td class="align-middle">{{ object.email|linkornone:'mailto' }}</td>
<td class="align-middle">{{ object.phone|linkornone:'tel' }}</td>
<td class="align-middle">{{ object.notes|yesno|capfirst }}</td>
{% if union_account %}
<td>{{ object.union_account|yesno|capfirst }}</td>