mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
93 lines
2.8 KiB
Python
Executable File
93 lines
2.8 KiB
Python
Executable File
from django.contrib import admin
|
|
|
|
from django.db.models.query import QuerySet
|
|
from django.http import HttpRequest, HttpResponseRedirect
|
|
from django.urls import path
|
|
|
|
from libraries.tasks import import_new_versions_tasks
|
|
|
|
from . import models
|
|
from .models import Version
|
|
|
|
|
|
class VersionFileInline(admin.StackedInline):
|
|
model = models.VersionFile
|
|
autocomplete_fields = ("version",)
|
|
verbose_name = "VersionFile"
|
|
verbose_name_plural = "VersionFiles"
|
|
extra = 0
|
|
|
|
|
|
@admin.register(models.Version)
|
|
class VersionAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"name",
|
|
"release_date",
|
|
"active",
|
|
"beta",
|
|
"fully_imported",
|
|
"full_release",
|
|
]
|
|
list_filter = ["active", "full_release", "beta"]
|
|
ordering = ["-release_date", "-name"]
|
|
search_fields = ["name", "description"]
|
|
date_hierarchy = "release_date"
|
|
inlines = [VersionFileInline]
|
|
change_list_template = "admin/version_change_list.html"
|
|
|
|
def get_queryset(self, request: HttpRequest) -> QuerySet:
|
|
# we want all versions here, including not fully_imported
|
|
return Version.objects.with_partials()
|
|
|
|
def get_urls(self):
|
|
urls = super().get_urls()
|
|
my_urls = [
|
|
path(
|
|
"new_versions/",
|
|
self.admin_site.admin_view(self.import_new_releases),
|
|
name="import_new_releases",
|
|
),
|
|
]
|
|
return my_urls + urls
|
|
|
|
def import_new_releases(self, request):
|
|
import_new_versions_tasks.delay(user_id=request.user.id)
|
|
msg = "New releases are being imported. You will receive an email when the task finishes." # noqa: E501
|
|
self.message_user(request, msg)
|
|
return HttpResponseRedirect("../")
|
|
|
|
|
|
class ResultInline(admin.StackedInline):
|
|
model = models.ReviewResult
|
|
autocomplete_fields = ("review",)
|
|
verbose_name = "Result"
|
|
verbose_name_plural = "Results"
|
|
extra = 0
|
|
|
|
|
|
@admin.register(models.Review)
|
|
class ReviewAdmin(admin.ModelAdmin):
|
|
list_display = ["submission", "review_dates", "get_results"]
|
|
search_fields = ["submission"]
|
|
inlines = [ResultInline]
|
|
|
|
def get_results(self, obj):
|
|
return " | ".join(obj.results.values_list("short_description", flat=True))
|
|
|
|
def get_queryset(self, request: HttpRequest) -> QuerySet:
|
|
return super().get_queryset(request).prefetch_related("results")
|
|
|
|
|
|
@admin.register(models.ReviewResult)
|
|
class ReviewResultAdmin(admin.ModelAdmin):
|
|
list_display = ["review", "short_description"]
|
|
|
|
def get_queryset(self, request: HttpRequest) -> QuerySet:
|
|
return super().get_queryset(request).select_related("review")
|
|
|
|
|
|
@admin.register(models.ReportConfiguration)
|
|
class ReportConfigurationAdmin(admin.ModelAdmin):
|
|
list_display = ["version"]
|
|
filter_horizontal = ["financial_committee_members"]
|