mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #19505 -- A more flexible implementation for customizable admin redirect urls.
Work by Julien Phalip.
Refs #8001, #18310, #19505. See also 0b908b92a2.
This commit is contained in:
committed by
Ramiro Morales
parent
4a71b84266
commit
35d1cd0b28
@@ -1,7 +1,9 @@
|
||||
from functools import update_wrapper
|
||||
|
||||
from django.contrib import admin
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db import models
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
|
||||
|
||||
@@ -49,41 +51,38 @@ class ActionAdmin(admin.ModelAdmin):
|
||||
) + self.remove_url(view_name)
|
||||
|
||||
|
||||
admin.site.register(Action, ActionAdmin)
|
||||
|
||||
|
||||
class Person(models.Model):
|
||||
nick = models.CharField(max_length=20)
|
||||
|
||||
|
||||
class PersonAdmin(admin.ModelAdmin):
|
||||
"""A custom ModelAdmin that customizes the deprecated post_url_continue
|
||||
argument to response_add()"""
|
||||
def response_add(self, request, obj, post_url_continue='../%s/continue/',
|
||||
continue_url=None, add_url=None, hasperm_url=None,
|
||||
noperm_url=None):
|
||||
return super(PersonAdmin, self).response_add(request, obj,
|
||||
post_url_continue,
|
||||
continue_url, add_url,
|
||||
hasperm_url, noperm_url)
|
||||
|
||||
|
||||
admin.site.register(Person, PersonAdmin)
|
||||
|
||||
|
||||
class City(models.Model):
|
||||
name = models.CharField(max_length=20)
|
||||
|
||||
class PersonAdmin(admin.ModelAdmin):
|
||||
|
||||
class CityAdmin(admin.ModelAdmin):
|
||||
"""A custom ModelAdmin that redirects to the changelist when the user
|
||||
presses the 'Save and add another' button when adding a model instance."""
|
||||
def response_add(self, request, obj,
|
||||
add_another_url='admin:admin_custom_urls_city_changelist',
|
||||
**kwargs):
|
||||
return super(CityAdmin, self).response_add(request, obj,
|
||||
add_another_url=add_another_url,
|
||||
**kwargs)
|
||||
def response_post_save(self, request, obj):
|
||||
return HttpResponseRedirect(
|
||||
reverse('admin:admin_custom_urls_person_history', args=[obj.pk]))
|
||||
|
||||
|
||||
admin.site.register(City, CityAdmin)
|
||||
class Car(models.Model):
|
||||
name = models.CharField(max_length=20)
|
||||
|
||||
class CarAdmin(admin.ModelAdmin):
|
||||
|
||||
def response_add(self, request, obj, post_url_continue=None):
|
||||
return super(CarAdmin, self).response_add(
|
||||
request, obj, post_url_continue=reverse('admin:admin_custom_urls_car_history', args=[obj.pk]))
|
||||
|
||||
|
||||
class CarDeprecated(models.Model):
|
||||
""" This class must be removed in Django 1.6 """
|
||||
name = models.CharField(max_length=20)
|
||||
|
||||
class CarDeprecatedAdmin(admin.ModelAdmin):
|
||||
""" This class must be removed in Django 1.6 """
|
||||
def response_add(self, request, obj, post_url_continue=None):
|
||||
return super(CarDeprecatedAdmin, self).response_add(
|
||||
request, obj, post_url_continue='../%s/history/')
|
||||
|
||||
|
||||
admin.site.register(Action, ActionAdmin)
|
||||
admin.site.register(Person, PersonAdmin)
|
||||
admin.site.register(Car, CarAdmin)
|
||||
admin.site.register(CarDeprecated, CarDeprecatedAdmin)
|
||||
Reference in New Issue
Block a user