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:
Lars Eggert 2023-07-23 20:09:16 +03:00 committed by GitHub
parent 97c7dd4d67
commit 1d22e39a52
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 50 additions and 24 deletions

View file

@ -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

View file

@ -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 %}

View file

@ -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 %}

View file

@ -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 %}

View file

@ -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 %}

View file

@ -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 %}

View file

@ -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 %}