X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/fbad74041c87c94038eafc7f38bb2e5a0c708cc6..f325ff6e5a40a972e6732c09b87e077adf2c2e35:/admin/widgets.py diff --git a/admin/widgets.py b/admin/widgets.py index 7a47c63..aa0aa30 100644 --- a/admin/widgets.py +++ b/admin/widgets.py @@ -1,6 +1,6 @@ from django import forms from django.conf import settings -from django.contrib.admin.widgets import FilteredSelectMultiple +from django.contrib.admin.widgets import FilteredSelectMultiple, url_params_from_lookup_dict from django.utils.translation import ugettext as _ from django.utils.safestring import mark_safe from django.utils.text import truncate_words @@ -10,28 +10,34 @@ from django.utils.html import escape class ModelLookupWidget(forms.TextInput): # is_hidden = False - def __init__(self, content_type, attrs=None): + def __init__(self, content_type, attrs=None, limit_choices_to=None): self.content_type = content_type + self.limit_choices_to = limit_choices_to super(ModelLookupWidget, self).__init__(attrs) def render(self, name, value, attrs=None): related_url = '../../../%s/%s/' % (self.content_type.app_label, self.content_type.model) + params = url_params_from_lookup_dict(self.limit_choices_to) + if params: + url = u'?' + u'&'.join([u'%s=%s' % (k, v) for k, v in params.items()]) + else: + url = u'' if attrs is None: attrs = {} - if not attrs.has_key('class'): + if "class" not in attrs: attrs['class'] = 'vForeignKeyRawIdAdminField' - output = super(ModelLookupWidget, self).render(name, value, attrs) - output += '' % (related_url, name) - output += '%s' % (settings.ADMIN_MEDIA_PREFIX, _('Lookup')) - output += '' + output = [super(ModelLookupWidget, self).render(name, value, attrs)] + output.append('' % (related_url, url, name)) + output.append('%s' % (settings.ADMIN_MEDIA_PREFIX, _('Lookup'))) + output.append('') if value: value_class = self.content_type.model_class() try: value_object = value_class.objects.get(pk=value) - output += ' %s' % escape(truncate_words(value_object, 14)) + output.append(' %s' % escape(truncate_words(value_object, 14))) except value_class.DoesNotExist: pass - return mark_safe(output) + return mark_safe(u''.join(output)) class TagFilteredSelectMultiple(FilteredSelectMultiple):