Skip to content

Commit 7132e99

Browse files
committed
Use ModelAdmin.opts for correct reverse in admin
Make sure to use ModelAdmin.opts in admin.py in order to get the correct app_label and model_name. This is important when a subclass (e.g. of Newsletter) is used
1 parent 57ac58d commit 7132e99

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

newsletter/admin.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,16 +168,17 @@ def submit(self, request, object_id):
168168
if submission.sent or submission.prepared:
169169
messages.info(request, _("Submission already sent."))
170170
change_url = reverse(
171-
'admin:newsletter_submission_change', args=[object_id]
171+
'admin:%s_%s_change' % (self.opts.app_label, self.opts.model_name), args=[object_id]
172172
)
173+
173174
return HttpResponseRedirect(change_url)
174175

175176
submission.prepared = True
176177
submission.save()
177178

178179
messages.info(request, _("Your submission is being sent."))
179180

180-
changelist_url = reverse('admin:newsletter_submission_changelist')
181+
changelist_url = reverse('admin:%s_%s_changelist' % (self.opts.app_label, self.opts.model_name))
181182
return HttpResponseRedirect(changelist_url)
182183

183184
""" URLs """
@@ -305,9 +306,10 @@ def preview_text(self, request, object_id):
305306

306307
def submit(self, request, object_id):
307308
submission = Submission.from_message(self._getobj(request, object_id))
309+
opts = submission._meta
308310

309311
change_url = reverse(
310-
'admin:newsletter_submission_change', args=[submission.id])
312+
'admin:%s_%s_change' % (opts.app_label, opts.model_name), args=[submission.id])
311313

312314
return HttpResponseRedirect(change_url)
313315

@@ -346,6 +348,7 @@ def get_urls(self):
346348

347349
class SubscriptionAdmin(NewsletterAdminLinkMixin, ExtendibleModelAdminMixin,
348350
admin.ModelAdmin):
351+
newsletter_class = Newsletter
349352
form = SubscriptionAdminForm
350353
list_display = (
351354
'name', 'email', 'admin_newsletter', 'admin_subscribe_date',
@@ -439,7 +442,7 @@ def subscribers_import(self, request):
439442
form.cleaned_data['newsletter'].pk
440443

441444
confirm_url = reverse(
442-
'admin:newsletter_subscription_import_confirm'
445+
'admin:%s_%s_import_confirm' % (self.opts.app_label, self.opts.model_name)
443446
)
444447
return HttpResponseRedirect(confirm_url)
445448
else:
@@ -453,13 +456,12 @@ def subscribers_import(self, request):
453456

454457
def subscribers_import_confirm(self, request):
455458
# If no addresses are in the session, start all over.
456-
457459
if 'addresses' not in request.session:
458-
import_url = reverse('admin:newsletter_subscription_import')
460+
import_url = reverse('admin:%s_%s_import' % (self.opts.app_label, self.opts.model_name))
459461
return HttpResponseRedirect(import_url)
460462

461463
addresses = request.session['addresses']
462-
newsletter = Newsletter.objects.get(
464+
newsletter = self.newsletter_class.objects.get(
463465
pk=request.session['newsletter_pk']
464466
)
465467

@@ -488,7 +490,7 @@ def subscribers_import_confirm(self, request):
488490
)
489491

490492
changelist_url = reverse(
491-
'admin:newsletter_subscription_changelist'
493+
'admin:%s_%s_changelist' % (self.opts.app_label, self.opts.model_name)
492494
)
493495
return HttpResponseRedirect(changelist_url)
494496
else:

0 commit comments

Comments
 (0)