diff --git a/buildinfo/admin.py b/buildinfo/admin.py
index 90a13f1..c2f1f9a 100644
--- a/buildinfo/admin.py
+++ b/buildinfo/admin.py
@@ -12,6 +12,8 @@
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see .
+import re
+
from django.contrib import admin
from django.utils.html import format_html
from import_export import resources
@@ -25,16 +27,34 @@ class BuildInfoResource(resources.ModelResource):
model = models.BuildInfo
+class DurationListFilter(admin.SimpleListFilter):
+ title = "duration"
+ parameter_name = "range"
+
+ def lookups(self, request, model_admin):
+ vals = [120, 60, 30, 15]
+ return [(f"{val}s", f"higher than {val} secs") for val in vals]
+
+ def queryset(self, request, queryset):
+ if self.value():
+ matched = re.match(r"(\d+)s", self.value())
+ if matched:
+ value = int(matched.group(1)) * 1000
+ return queryset.filter(duration__gte=value)
+
+
@admin.register(models.BuildInfo)
class BuildInfoAdmin(ImportExportModelAdmin):
resource_class = BuildInfoResource
list_filter = (
+ DurationListFilter,
"param_release",
"projectname",
"param_distribution",
"builton",
)
- readonly_fields = ("jenkins_url",)
+ readonly_fields = ["jenkins_url"]
+ ordering = ["-duration"]
def jenkins_url(self, obj):
return format_html("{url}", url=obj.jenkins_url)