11from django .apps import apps
2- from django .urls import re_path as url
32from django .contrib import admin
4- from django .http import HttpResponseRedirect
5- from django .template .response import TemplateResponse
6- from django .urls import path , reverse
7- from django .utils .html import format_html
3+ from django .urls import path
84
95from oauth2_provider .models import AccessToken
106
1511 CeleryTaskResult ,
1612 FeatureFlag ,
1713 IndexBackfill ,
18- RawDatum ,
1914 ShareUser ,
2015 SiteBanner ,
2116 Source ,
@@ -51,26 +46,6 @@ class ShareUserAdmin(admin.ModelAdmin):
5146 search_fields = ['username' ]
5247
5348
54- @linked_fk ('suid' )
55- class RawDatumAdmin (admin .ModelAdmin ):
56- show_full_result_count = False
57- list_select_related = ('suid__source_config' , )
58- list_display = ('id' , 'identifier' , 'source_config_label' , 'datestamp' , 'date_created' , 'date_modified' , )
59- readonly_fields = ('datum__pre' , 'sha256' )
60- exclude = ('datum' ,)
61- paginator = TimeLimitedPaginator
62-
63- def identifier (self , obj ):
64- return obj .suid .identifier
65-
66- def source_config_label (self , obj ):
67- return obj .suid .source_config .label
68-
69- def datum__pre (self , instance ):
70- return format_html ('<pre>{}</pre>' , instance .datum )
71- datum__pre .short_description = 'datum' # type: ignore[attr-defined]
72-
73-
7449class AccessTokenAdmin (admin .ModelAdmin ):
7550 raw_id_fields = ('user' ,)
7651 list_display = ('token' , 'user' , 'scope' )
@@ -91,11 +66,10 @@ def save_model(self, request, obj, form, change):
9166
9267@linked_fk ('source' )
9368class SourceConfigAdmin (admin .ModelAdmin ):
94- list_display = ('label' , 'source_' , 'version' , 'enabled' , 'button_actions' )
69+ list_display = ('label' , 'source_' , 'version' , 'enabled' ,)
9570 list_select_related = ('source' ,)
96- readonly_fields = ('button_actions' ,)
9771 search_fields = ['label' , 'source__name' , 'source__long_title' ]
98- actions = ['schedule_full_ingest ' ]
72+ actions = ['schedule_derive ' ]
9973
10074 def source_ (self , obj ):
10175 return obj .source .long_title
@@ -104,42 +78,10 @@ def enabled(self, obj):
10478 return not obj .disabled
10579 enabled .boolean = True # type: ignore[attr-defined]
10680
107- @admin .action (description = 'schedule re-ingest of all raw data for each source config' )
108- def schedule_full_ingest (self , request , queryset ):
81+ @admin .action (description = 'schedule re-derive of all cards for each selected source config' )
82+ def schedule_derive (self , request , queryset ):
10983 for _id in queryset .values_list ('id' , flat = True ):
110- digestive_tract .task__schedule_extract_and_derive_for_source_config .delay (_id )
111-
112- def get_urls (self ):
113- return [
114- url (
115- r'^(?P<config_id>.+)/ingest/$' ,
116- self .admin_site .admin_view (self .start_ingest ),
117- name = 'source-config-ingest'
118- )
119- ] + super ().get_urls ()
120-
121- def button_actions (self , obj ):
122- return format_html (
123- ' ' .join ((
124- ('<a class="button" href="{ingest_href}">Ingest</a>' if not obj .disabled else '' ),
125- )),
126- ingest_href = reverse ('admin:source-config-ingest' , args = [obj .pk ]),
127- )
128- button_actions .short_description = 'Buttons' # type: ignore[attr-defined]
129-
130- def start_ingest (self , request , config_id ):
131- config = self .get_object (request , config_id )
132- if request .method == 'POST' :
133- digestive_tract .task__schedule_extract_and_derive_for_source_config .delay (config .pk )
134- url = reverse (
135- 'admin:share_sourceconfig_changelist' ,
136- current_app = self .admin_site .name ,
137- )
138- return HttpResponseRedirect (url )
139- else :
140- context = self .admin_site .each_context (request )
141- context ['source_config' ] = config
142- return TemplateResponse (request , 'admin/start-ingest.html' , context )
84+ digestive_tract .task__schedule_derive_for_source_config .delay (_id )
14385
14486
14587@linked_fk ('user' )
@@ -157,26 +99,16 @@ def access_token(self, obj):
15799@linked_fk ('source_config' )
158100@linked_fk ('focus_identifier' )
159101@linked_many ('formattedmetadatarecord_set' , defer = ('formatted_metadata' ,))
160- @linked_many ('raw_data' , defer = ('datum' ,))
161102@linked_many ('indexcard_set' )
162103class SourceUniqueIdentifierAdmin (admin .ModelAdmin ):
163104 readonly_fields = ('identifier' ,)
164105 paginator = TimeLimitedPaginator
165- actions = ('reingest' , ' delete_cards_for_suid' )
106+ actions = ('delete_cards_for_suid' , )
166107 list_filter = (SourceConfigFilter ,)
167108 list_select_related = ('source_config' ,)
168109 show_full_result_count = False
169110 search_fields = ('identifier' ,)
170111
171- def reingest (self , request , queryset ):
172- _raw_id_queryset = (
173- RawDatum .objects
174- .latest_by_suid_queryset (queryset )
175- .values_list ('id' , flat = True )
176- )
177- for _raw_id in _raw_id_queryset :
178- digestive_tract .task__extract_and_derive .delay (raw_id = _raw_id )
179-
180112 def delete_cards_for_suid (self , request , queryset ):
181113 for suid in queryset :
182114 digestive_tract .expel_suid (suid )
@@ -220,7 +152,6 @@ class FeatureFlagAdmin(admin.ModelAdmin):
220152admin_site .register (CeleryTaskResult , CeleryTaskResultAdmin )
221153admin_site .register (FeatureFlag , FeatureFlagAdmin )
222154admin_site .register (IndexBackfill , IndexBackfillAdmin )
223- admin_site .register (RawDatum , RawDatumAdmin )
224155admin_site .register (ShareUser , ShareUserAdmin )
225156admin_site .register (SiteBanner , SiteBannerAdmin )
226157admin_site .register (Source , SourceAdmin )
0 commit comments