fix: Use icons in addition to colors for review-related badges (#6012)
* fix: Use icons in addition to colors for review-related badges * Remove comment * Remove debug print
This commit is contained in:
parent
97c7dd4d67
commit
1d22e39a52
|
@ -842,3 +842,36 @@ def is_valid_url(url):
|
|||
except ValidationError:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
@register.filter
|
||||
def badgeify(blob):
|
||||
"""
|
||||
Add an appropriate bootstrap badge around "text", based on its contents.
|
||||
"""
|
||||
config = [
|
||||
(r"rejected|not ready", "danger", "x-lg"),
|
||||
(r"complete|accepted|ready", "success", ""),
|
||||
(r"has nits|almost ready", "info", "info-lg"),
|
||||
(r"has issues", "warning", "exclamation-lg"),
|
||||
(r"assigned", "info", "person-plus-fill"),
|
||||
(r"will not review|overtaken by events|withdrawn", "secondary", "dash-lg"),
|
||||
]
|
||||
text = str(blob)
|
||||
|
||||
for pattern, color, icon in config:
|
||||
if re.search(pattern, text, flags=re.IGNORECASE):
|
||||
# Shorten the badge text
|
||||
text = re.sub(r"with ", "w/", text, flags=re.IGNORECASE)
|
||||
text = re.sub(r"document", "doc", text, flags=re.IGNORECASE)
|
||||
text = re.sub(r"will not", "won't", text, flags=re.IGNORECASE)
|
||||
|
||||
return mark_safe(
|
||||
f"""
|
||||
<span class="badge rounded-pill text-bg-{color}">
|
||||
<i class="bi bi-{icon}"></i> {text.capitalize()}
|
||||
</span>
|
||||
"""
|
||||
)
|
||||
|
||||
return text
|
||||
|
|
|
@ -54,11 +54,7 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if "no-problem" in doc.get_state.name|slugify %}
|
||||
<span class="text-success">{{ doc.get_state.name}}</span>
|
||||
{% else %}
|
||||
{{ doc.get_state.name }}
|
||||
{% endif %}
|
||||
{{ doc.get_state.name|badgeify }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -149,4 +145,4 @@
|
|||
</script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}">
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,7 +1,7 @@
|
|||
{# Copyright The IETF Trust 2017, All Rights Reserved #}
|
||||
{% load origin django_bootstrap5 %}
|
||||
{% origin %}
|
||||
{% load person_filters %}
|
||||
{% load person_filters ietf_filters %}
|
||||
<table class="my-3 table table-sm table-borderless">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
|
@ -217,9 +217,7 @@
|
|||
State
|
||||
</th>
|
||||
<td>
|
||||
<span class="{% if assignment.state.name|slugify == 'accepted' %}text-success{% endif %}">
|
||||
{{ assignment.state.name }}
|
||||
</span>
|
||||
{{ assignment.state.name|badgeify }}
|
||||
{% if snapshot %}
|
||||
<span class="badge rounded-pill text-bg-warning">
|
||||
Snapshot
|
||||
|
@ -312,8 +310,8 @@
|
|||
<th scope="row">
|
||||
Result
|
||||
</th>
|
||||
<td class="{% if assignment.result.name|slice:5 == 'Ready' %}text-success{% else %}text-danger{% endif %}">
|
||||
{{ assignment.result.name }}
|
||||
<td>
|
||||
{{ assignment.result.name|badgeify }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{% load ietf_filters %}
|
||||
<div class="review-assignment-summary">
|
||||
{% if review_assignment.state_id == "completed" or review_assignment.state_id == "part-completed" %}
|
||||
<a href="{% if review_assignment.review %}{% url 'ietf.doc.views_doc.document_main' review_assignment.review.name %}{% else %}{% url 'ietf.doc.views_review.review_request' review_assignment.review_request.doc.name review_assignment.review_request.pk %}{% endif %}">
|
||||
|
@ -13,15 +14,14 @@
|
|||
<span class="badge rounded-pill text-bg-secondary ms-1">Partially completed</span>
|
||||
{% endif %}
|
||||
{% if review_assignment.result %}
|
||||
<span class="badge rounded-pill {% if review_assignment.result.name|slice:5|slugify == 'ready' %}text-bg-success{% else %}text-bg-info{% endif %} ms-1">
|
||||
{{ review_assignment.result.name }}
|
||||
</span>
|
||||
{{ review_assignment.result.name|badgeify }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<a class="text-body-secondary"
|
||||
href="{% url 'ietf.doc.views_review.review_request' review_assignment.review_request.doc.name review_assignment.review_request.pk %}">
|
||||
{{ review_assignment.review_request.team.acronym|upper }} {{ review_assignment.review_request.type.name }} Review</a>
|
||||
<span class="badge rounded-pill text-bg-secondary ms-1">
|
||||
<i class="bi bi-hourglass-split"></i>
|
||||
Incomplete, due {{ review_assignment.review_request.deadline|date:"Y-m-d" }}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters static person_filters %}
|
||||
{% load ietf_filters static person_filters ietf_filters %}
|
||||
{% block group_subtitle %}Review requests{% endblock %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
|
@ -102,8 +102,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% person_link a.reviewer.person %}
|
||||
{% if a.state_id == "accepted" %}<span class="badge rounded-pill text-bg-success">Accepted</span>{% endif %}
|
||||
{% if a.reviewer_unavailable %}<span class="badge rounded-pill text-bg-danger">Unavailable</span>{% endif %}
|
||||
{{ a.state_id|badgeify }}
|
||||
</td>
|
||||
<td>{{ a.review_request.doc.friendly_state }}</td>
|
||||
<td>
|
||||
|
@ -178,7 +177,7 @@
|
|||
{{ r.request_closed_time|date:"Y-m-d" }}
|
||||
</td>
|
||||
<td>
|
||||
{{ r.state.name }}
|
||||
{{ r.state.name|badgeify }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
@ -242,10 +241,10 @@
|
|||
{% person_link a.reviewer.person %}
|
||||
</td>
|
||||
<td>
|
||||
{{ a.state }}
|
||||
{{ a.state|badgeify }}
|
||||
</td>
|
||||
<td>
|
||||
{% if a.result %}{{ a.result }}{% endif %}
|
||||
{% if a.result %}{{ a.result|badgeify }}{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
<a href="{% url 'ietf.doc.views_review.review_request' name=doc_name request_id=req_pk %}">{{ deadline|date }}</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge rounded-pill text-bg-{% if state.slug == 'completed' or state.slug == 'part-completed' %}success{% elif state.slug == 'no-response' %}danger{% elif state.slug == 'overtaken' %}warning{% elif state.slug == 'requested' or state.slug == 'accepted' %}primary{% else %}secondary{% endif %}">{{ state.name }}</span>
|
||||
{{ state.name|badgeify }}
|
||||
</td>
|
||||
<td>
|
||||
{% if assignment_to_closure_days != None %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load django_bootstrap5 static %}
|
||||
{% load django_bootstrap5 static ietf_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{{ review_wish_form.media.css }}
|
||||
|
@ -101,7 +101,7 @@
|
|||
{% if r.due %}<span class="badge rounded-pill text-bg-warning">{{ r.due }} day{{ r.due|pluralize }}</span>{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge rounded-pill {% if r.state_id == "completed" or r.state_id == "part-completed" %}text-bg-success{% else %}text-bg-secondary{% endif %}">{{ r.state.name }}</span>
|
||||
{{ r.state.name|badgeify }}
|
||||
</td>
|
||||
<td>
|
||||
{% if r.result %}{{ r.result.name }}{% endif %}
|
||||
|
|
Loading…
Reference in a new issue