141 lines
3.4 KiB
Python
141 lines
3.4 KiB
Python
from django import forms
|
|
from django.contrib import admin
|
|
|
|
from .models import DownloadRelease, ImportTemplate
|
|
|
|
|
|
class DownloadReleaseAdminForm(forms.ModelForm):
|
|
class Meta:
|
|
model = DownloadRelease
|
|
fields = "__all__"
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.fields["sha256"].required = True
|
|
self.fields["size_bytes"].required = True
|
|
|
|
|
|
@admin.register(DownloadRelease)
|
|
class DownloadReleaseAdmin(admin.ModelAdmin):
|
|
form = DownloadReleaseAdminForm
|
|
list_display = (
|
|
"platform",
|
|
"version",
|
|
"is_current",
|
|
"force_update",
|
|
"download_source",
|
|
"size_bytes",
|
|
"sha256_short",
|
|
"updated_at",
|
|
)
|
|
list_filter = ("platform", "is_current", "force_update")
|
|
search_fields = ("version", "sha256", "external_url", "file")
|
|
readonly_fields = ("created_at", "updated_at")
|
|
fieldsets = (
|
|
(
|
|
"版本信息",
|
|
{
|
|
"fields": (
|
|
"platform",
|
|
"version",
|
|
"is_current",
|
|
"force_update",
|
|
"release_notes",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"下载配置",
|
|
{
|
|
"fields": (
|
|
"file",
|
|
"external_url",
|
|
"size_bytes",
|
|
"sha256",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"时间",
|
|
{
|
|
"fields": (
|
|
"created_at",
|
|
"updated_at",
|
|
)
|
|
},
|
|
),
|
|
)
|
|
|
|
@admin.display(description="下载来源")
|
|
def download_source(self, obj):
|
|
if obj.external_url:
|
|
return "外部链接"
|
|
if obj.file:
|
|
return "本地文件"
|
|
return "未配置"
|
|
|
|
@admin.display(description="SHA256")
|
|
def sha256_short(self, obj):
|
|
if not obj.sha256:
|
|
return "-"
|
|
return f"{obj.sha256[:12]}..."
|
|
|
|
|
|
@admin.register(ImportTemplate)
|
|
class ImportTemplateAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"name",
|
|
"is_current",
|
|
"download_source",
|
|
"sha256_short",
|
|
"updated_at",
|
|
)
|
|
list_filter = ("is_current",)
|
|
search_fields = ("name", "sha256", "external_url", "file", "notes")
|
|
readonly_fields = ("created_at", "updated_at")
|
|
fieldsets = (
|
|
(
|
|
"模板信息",
|
|
{
|
|
"fields": (
|
|
"name",
|
|
"is_current",
|
|
"notes",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"下载配置",
|
|
{
|
|
"fields": (
|
|
"file",
|
|
"external_url",
|
|
"sha256",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"时间",
|
|
{
|
|
"fields": (
|
|
"created_at",
|
|
"updated_at",
|
|
)
|
|
},
|
|
),
|
|
)
|
|
|
|
@admin.display(description="下载来源")
|
|
def download_source(self, obj):
|
|
if obj.external_url:
|
|
return "外部链接"
|
|
if obj.file:
|
|
return "本地文件"
|
|
return "未配置"
|
|
|
|
@admin.display(description="SHA256")
|
|
def sha256_short(self, obj):
|
|
if not obj.sha256:
|
|
return "-"
|
|
return f"{obj.sha256[:12]}..."
|