4
4
from django .contrib .auth .models import User , Group
5
5
from django .utils .html import format_html
6
6
from django .utils .translation import gettext_lazy as _
7
+ from django .urls import path , reverse
7
8
8
9
from .models import O_Feed , T_Feed
9
10
from .custom_admin_site import core_admin_site
19
20
)
20
21
from .tasks import update_original_feed , update_translated_feed
21
22
from utils .modelAdmin_utils import valid_icon
23
+ from .views import import_opml
22
24
23
25
24
26
class O_FeedAdmin (admin .ModelAdmin ):
@@ -40,6 +42,21 @@ class O_FeedAdmin(admin.ModelAdmin):
40
42
actions = [o_feed_force_update , o_feed_export_as_opml , o_feed_batch_modify ]
41
43
list_per_page = 20
42
44
45
+ def get_urls (self ):
46
+ urls = super ().get_urls ()
47
+ custom_urls = [
48
+ path ('import_opml/' , self .admin_site .admin_view (import_opml ), name = 'core_o_feed_import_opml' ),
49
+ ]
50
+ return custom_urls + urls
51
+
52
+ def changelist_view (self , request , extra_context = None ):
53
+ extra_context = extra_context or {}
54
+ extra_context ['import_opml_button' ] = format_html (
55
+ '<a class="button" href="{}">导入OPML</a>' ,
56
+ reverse ('admin:core_o_feed_import_opml' )
57
+ )
58
+ return super ().changelist_view (request , extra_context = extra_context )
59
+
43
60
def save_formset (self , request , form , formset , change ):
44
61
instances = formset .save (commit = False )
45
62
for instance in instances :
0 commit comments