From a7c02a24e2ba6a0a643af25104bdacd88fb306d7 Mon Sep 17 00:00:00 2001 From: Klaas van Schelven Date: Tue, 16 Apr 2024 13:31:08 +0200 Subject: [PATCH] Show 'seen in releases' in the UI --- issues/templates/issues/base.html | 24 ++++++++++++++++++------ releases/models.py | 4 ---- theme/templatetags/issues.py | 25 +++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/issues/templates/issues/base.html b/issues/templates/issues/base.html index 4e7a554..a98232e 100644 --- a/issues/templates/issues/base.html +++ b/issues/templates/issues/base.html @@ -1,5 +1,6 @@ {% extends "base.html" %} {% load static %} +{% load issues %} {% block title %}{{ issue.title }} ยท {{ block.super }}{% endblock %} {% block content %} @@ -140,27 +141,38 @@
-
Nr. of events
+
Nr. of events:
{{ issue.event_count }}
{% if issue.event_count > 1 %}
-
First seen
+
First seen:
{{ issue.first_seen|date:"j M G:i" }}
-
-
Last seen
+
+
Last seen:
{{ issue.last_seen|date:"j M G:i" }}
{% else %} -
-
Seen at
+
+
Seen at:
{{ issue.first_seen|date:"j M G:i" }}
{% endif %} + {% if issue.get_events_at %} +
+
Seen in releases:
+
+ {% for version in issue.get_events_at %} + {{ version|shortsha }}{% if not forloop.last %},{% endif %} + {% endfor %} +
+
+ {% endif %} +
diff --git a/releases/models.py b/releases/models.py index b914b2c..852a7c7 100644 --- a/releases/models.py +++ b/releases/models.py @@ -15,10 +15,6 @@ from issues.models import Issue, TurningPoint, TurningPointKind RE_PACKAGE_VERSION = re.compile('((?P.*)[@])?(?P.*)') -# We don't actually parse for HEX yet (it's simply non-semver to us) but if we do we could use the following lengths: -# 12 | 16 | 20 | 32 | 40 | 64 - - def is_valid_semver(full_version): try: version = RE_PACKAGE_VERSION.match(full_version).groupdict()["version"] diff --git a/theme/templatetags/issues.py b/theme/templatetags/issues.py index 4441cae..990c6e2 100644 --- a/theme/templatetags/issues.py +++ b/theme/templatetags/issues.py @@ -1,3 +1,4 @@ +import re from django import template from pygments import highlight from pygments.lexers import PythonLexer @@ -89,3 +90,27 @@ def firstlineno(value): if value.get("lineno") is None: return None return value['lineno'] - len(value.get('pre_context', [])) + + +SHA_RE = re.compile(r"[0-9a-f]+") + + +@register.filter(name='issha') +def issha(value): + """does this look like a sha?""" + if len(value) not in [12, 16, 20, 32, 40, 64]: + return False + + if not SHA_RE.fullmatch(value): + return False + + return True + + +@register.filter(name='shortsha') +def shortsha(value): + """_if_ this value looks like a version hash, make it short""" + if not issha(value): + return value + + return value[:12]