Files
cmhub/apps/portal/admin.py
T

141 lines
3.4 KiB
Python
Raw Normal View History

from django import forms
2026-07-02 09:07:15 +08:00
from django.contrib import admin
2026-07-08 16:29:48 +08:00
from .models import DownloadRelease, ImportTemplate
2026-07-06 23:18:08 +08:00
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
2026-07-06 23:18:08 +08:00
@admin.register(DownloadRelease)
class DownloadReleaseAdmin(admin.ModelAdmin):
form = DownloadReleaseAdminForm
2026-07-06 23:18:08 +08:00
list_display = (
"platform",
"version",
"is_current",
2026-07-08 15:38:59 +08:00
"force_update",
2026-07-06 23:18:08 +08:00
"download_source",
2026-07-13 17:04:59 +08:00
"size_bytes",
2026-07-06 23:18:08 +08:00
"sha256_short",
"updated_at",
)
2026-07-08 15:38:59 +08:00
list_filter = ("platform", "is_current", "force_update")
2026-07-06 23:18:08 +08:00
search_fields = ("version", "sha256", "external_url", "file")
readonly_fields = ("created_at", "updated_at")
fieldsets = (
(
"版本信息",
{
"fields": (
"platform",
"version",
"is_current",
2026-07-08 15:38:59 +08:00
"force_update",
2026-07-06 23:18:08 +08:00
"release_notes",
)
},
),
(
"下载配置",
{
"fields": (
"file",
"external_url",
2026-07-13 17:04:59 +08:00
"size_bytes",
2026-07-06 23:18:08 +08:00
"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]}..."
2026-07-08 16:29:48 +08:00
@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]}..."