diff --git a/pt_site/admin.py b/pt_site/admin.py index 2b33a75..3790d4c 100644 --- a/pt_site/admin.py +++ b/pt_site/admin.py @@ -4,7 +4,6 @@ from datetime import datetime import qbittorrentapi import transmission_rpc from django.contrib import admin, messages -from django.db import transaction from django.http import JsonResponse from django.utils.html import format_html from import_export.admin import ImportExportModelAdmin @@ -203,6 +202,7 @@ class StatusInlines(admin.TabularInline): ordering = ['-created_at'] # 自定义模板,删除外键显示 template = 'admin/pt_site/inline_status/tabular.html' + can_delete = False # 禁止添加按钮 def has_add_permission(self, request, obj=None): diff --git a/ptools/settings.py b/ptools/settings.py index 0de2503..255893c 100644 --- a/ptools/settings.py +++ b/ptools/settings.py @@ -47,6 +47,8 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'import_export', 'django_apscheduler', + 'util', + 'util.templatetags', 'pt_site', 'pt_test', 'auto_pt', diff --git a/templates/admin/pt_site/inline_status/tabular.html b/templates/admin/pt_site/inline_status/tabular.html index 19fbcce..08d324a 100644 --- a/templates/admin/pt_site/inline_status/tabular.html +++ b/templates/admin/pt_site/inline_status/tabular.html @@ -1,59 +1,81 @@ +{% load size %} {% load i18n admin_urls static admin_modify %} +
- + + + + {{ field.name }}{% if field.required %} required{% endif %}{% if field.widget.is_hidden %} hidden{% endif %}">{{ field.label|capfirst }} + {% if field.help_text %} + ({{ field.help_text|striptags }}){% endif %} + + {% endfor %} + {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %} + {% translate "Delete?" %}{% endif %} + + + + + {% for inline_admin_form in inline_admin_formset %} + {% if inline_admin_form.form.non_field_errors %} + + {{ inline_admin_form.form.non_field_errors }} + + {% endif %} + + + {% if inline_admin_form.needs_explicit_pk_field %} + {{ inline_admin_form.pk_field.field }}{% endif %} + {% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %} + + {% for fieldset in inline_admin_form %} + {% for line in fieldset %} + {% for field in line %} + + {% if field.is_readonly %} + {% if field.field.name == 'downloaded' or field.field.name == 'uploaded' or field.field.name == 'seed_vol' %} +

{{ field.contents | file_2_size }}

+ {% else %} +

{{ field.contents }}

+ {% endif %} + {% else %} + {{ field.field.errors.as_ul }} + {{ field.field }} + {% endif %} + + {% endfor %} + {% endfor %} + {% endfor %} + {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %} + {% if inline_admin_form.original %} + {{ inline_admin_form.deletion_field.field }}{% endif %} + {% endif %} + + {% endfor %} + + + +
diff --git a/util/__init__.py b/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/util/admin.py b/util/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/util/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/util/apps.py b/util/apps.py new file mode 100644 index 0000000..70d62cc --- /dev/null +++ b/util/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UtilConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'util' diff --git a/util/migrations/__init__.py b/util/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/util/models.py b/util/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/util/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/util/templatetags/__init__.py b/util/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/util/templatetags/size.py b/util/templatetags/size.py new file mode 100644 index 0000000..730a7f5 --- /dev/null +++ b/util/templatetags/size.py @@ -0,0 +1,10 @@ +from django import template + +from pt_site.UtilityTool import FileSizeConvert + +register = template.Library() + + +@register.filter(name='file_2_size') +def file_2_size(value): + return FileSizeConvert.parse_2_file_size(int(value)) diff --git a/util/tests.py b/util/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/util/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/util/views.py b/util/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/util/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here.