|
11 | 11 | from django.contrib.admin.util import quote
|
12 | 12 | from django.conf import settings
|
13 | 13 |
|
14 |
| -from ..models import Book, Person, Poll |
| 14 | +from ..models import Book, Person, Poll, State |
15 | 15 |
|
16 | 16 |
|
17 | 17 | today = datetime(2021, 1, 1, 10, 0)
|
18 | 18 | tomorrow = today + timedelta(days=1)
|
19 | 19 |
|
20 | 20 |
|
21 |
| -def get_history_url(model, history_index=None): |
| 21 | +def get_history_url(obj, history_index=None, site="admin"): |
22 | 22 | try:
|
23 |
| - info = model._meta.app_label, model._meta.module_name |
| 23 | + app, model = obj._meta.app_label, obj._meta.module_name |
24 | 24 | except AttributeError:
|
25 |
| - info = model._meta.app_label, model._meta.model_name |
| 25 | + app, model = obj._meta.app_label, obj._meta.model_name |
26 | 26 | if history_index is not None:
|
27 |
| - history = model.history.order_by('history_id')[history_index] |
28 |
| - return reverse('admin:%s_%s_simple_history' % info, |
29 |
| - args=[quote(model.pk), quote(history.history_id)]) |
| 27 | + history = obj.history.order_by('history_id')[history_index] |
| 28 | + return reverse( |
| 29 | + "{site}:{app}_{model}_simple_history".format( |
| 30 | + site=site, app=app, model=model), |
| 31 | + args=[quote(obj.pk), quote(history.history_id)], |
| 32 | + ) |
30 | 33 | else:
|
31 |
| - return reverse('admin:%s_%s_history' % info, args=[quote(model.pk)]) |
| 34 | + return reverse("{site}:{app}_{model}_history".format( |
| 35 | + site=site, app=app, model=model), args=[quote(obj.pk)]) |
32 | 36 |
|
33 | 37 |
|
34 | 38 | class AdminSiteTest(WebTest):
|
@@ -181,3 +185,11 @@ def test_middleware_saves_user(self):
|
181 | 185 | self.assertEqual(historical_poll.history_user, self.user,
|
182 | 186 | "Middleware should make the request available to "
|
183 | 187 | "retrieve history_user.")
|
| 188 | + |
| 189 | + def test_other_admin(self): |
| 190 | + """Demonstrate error viewing the historical admin page for a |
| 191 | + model not registered with the default site 'admin'. |
| 192 | + """ |
| 193 | + self.login() |
| 194 | + state = State.objects.create() |
| 195 | + self.app.get(get_history_url(state, site="other_admin")) |
0 commit comments