Opened 12 years ago

Closed 12 years ago

#18072 closed Cleanup/optimization (fixed)

ChangeList shouldn't use hardcoded urls

Reported by: Mikhail Korobov Owned by: nobody
Component: contrib.admin Version: 1.4
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Some urls are still hardcoded in admin: ChangeList.url_for_result returns implicit relative url https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/main.py#L377

Noticed this while implementing custom AdminSite that shows a changelist of one of the models as an index page (edit links were incorrect):

class RestaurantPanel(admin.AdminSite):
    main_model = None

    @never_cache
    def index(self, request, extra_context=None):
        model_admin = self._registry[self.main_model]
        return model_admin.changelist_view(request, extra_context)

This ChangeList subclass fixed the issue for me:

class FixedChangeList(ChangeList):
    def url_for_result(self, result):
        admin_name = self.model_admin.admin_site.name
        pk = getattr(result, self.pk_attname)

        return reverse("%s:%s_%s_change" % (
            admin_name, self.opts.app_label, self.opts.module_name
        ), args=[pk])

Change History (4)

comment:1 by Ramiro Morales, 12 years ago

Triage Stage: UnreviewedAccepted

comment:2 by ztatum <z.tatum@…>, 12 years ago

Ran into the same problem here. There're also other instances of hardcoded urls in the ModelAdmin.response_add and ModelAdmin.response_change, which I think can go into the same fix.

comment:3 by Julien Phalip, 12 years ago

Type: UncategorizedCleanup/optimization

comment:4 by Ramiro Morales <cramm0@…>, 12 years ago

Resolution: fixed
Status: newclosed

In f51eab796d087439eedcb768cdd312517780940e:

Fixed #18072 -- Made more admin links use reverse() instead of hard-coded relative URLs.

Thanks kmike for the report and initial patch for the changelist->edit
object view link URL.

Other affected links include the delete object one and object history
one (in this case the change had been implemented in commit 5a9e127, this
commit adds admin-quoting of the object PK in a way similar to a222d6e.)

Refs #15294.

Note: See TracTickets for help on using tickets.
Back to Top