diff --git a/.travis.yml b/.travis.yml index 175530b..17b28a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,14 +16,18 @@ matrix: env: DJANGO=django==1.4.5 - python: "3.2" env: DJANGO=django==1.4.5 + install: - - "pip install $DJANGO coverage==3.6 --use-mirrors" + - pip install $DJANGO coverage==3.6 + script: - coverage run --source=polymorphic runtests.py - coverage report -m + after_success: - - "pip install coveralls==0.2 --use-mirrors" + - pip install coveralls==0.2 - coveralls + branches: only: - master diff --git a/polymorphic/admin.py b/polymorphic/admin.py index 2d1d13e..9ef4ec5 100644 --- a/polymorphic/admin.py +++ b/polymorphic/admin.py @@ -15,8 +15,16 @@ from django.shortcuts import render_to_response from django.template.context import RequestContext from django.utils import six from django.utils.encoding import force_text +from django.utils.http import urlencode from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ +try: + # Django 1.6 implements this + from django.contrib.admin.templatetags.admin_urls import add_preserved_filters +except ImportError: + def add_preserved_filters(context, form_url): + return form_url + __all__ = ( 'PolymorphicModelChoiceForm', 'PolymorphicParentModelAdmin', @@ -227,6 +235,12 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin): return self.add_type_view(request) else: real_admin = self._get_real_admin_by_ct(ct_id) + # rebuild form_url, otherwise libraries below will override it. + form_url = add_preserved_filters({ + 'preserved_filters': urlencode({'ct_id': ct_id}), + 'opts': self.model._meta}, + form_url + ) return real_admin.add_view(request, form_url, extra_context)