Merge pull request #88 from jrief/fix-mix-polymorphic-with-parler

django-polymorphic does not work with django-parler
fix_request_path_info
Diederik van der Boor 2014-07-21 11:38:56 +02:00
commit e9b7c57e31
2 changed files with 20 additions and 2 deletions

View File

@ -16,14 +16,18 @@ matrix:
env: DJANGO=django==1.4.5 env: DJANGO=django==1.4.5
- python: "3.2" - python: "3.2"
env: DJANGO=django==1.4.5 env: DJANGO=django==1.4.5
install: install:
- "pip install $DJANGO coverage==3.6 --use-mirrors" - pip install $DJANGO coverage==3.6
script: script:
- coverage run --source=polymorphic runtests.py - coverage run --source=polymorphic runtests.py
- coverage report -m - coverage report -m
after_success: after_success:
- "pip install coveralls==0.2 --use-mirrors" - pip install coveralls==0.2
- coveralls - coveralls
branches: branches:
only: only:
- master - master

View File

@ -15,8 +15,16 @@ from django.shortcuts import render_to_response
from django.template.context import RequestContext from django.template.context import RequestContext
from django.utils import six from django.utils import six
from django.utils.encoding import force_text from django.utils.encoding import force_text
from django.utils.http import urlencode
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ 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__ = ( __all__ = (
'PolymorphicModelChoiceForm', 'PolymorphicParentModelAdmin', 'PolymorphicModelChoiceForm', 'PolymorphicParentModelAdmin',
@ -227,6 +235,12 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin):
return self.add_type_view(request) return self.add_type_view(request)
else: else:
real_admin = self._get_real_admin_by_ct(ct_id) 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) return real_admin.add_view(request, form_url, extra_context)