Django

Code

Changeset 8846

Show
Ignore:
Timestamp:
09/02/08 01:10:14 (4 months ago)
Author:
brosner
Message:

Fixed #8787 -- Fixed failing admin_widgets tests. This fixes ManyToManyRawIdWidget? which was broken with [8823]. Thanks Alex Gaynor.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/admin/widgets.py

    r8823 r8846  
    106106 
    107107    def render(self, name, value, attrs=None): 
    108         from django.contrib.admin.views.main import TO_FIELD_VAR 
    109108        related_url = '../../../%s/%s/' % (self.rel.to._meta.app_label, self.rel.to._meta.object_name.lower()) 
    110         params = {} 
    111         if self.rel.limit_choices_to
    112             params.update(dict([(k, ','.join(v)) for k, v in self.rel.limit_choices_to.items()])
    113         params.update({TO_FIELD_VAR: self.rel.get_related_field().name}) 
    114         url = '?' + '&'.join(['%s=%s' % (k, v) for k, v in params.items()]) 
     109        params = self.url_parameters() 
     110        if params
     111            url = '?' + '&'.join(['%s=%s' % (k, v) for k, v in params.items()]
     112        else: 
     113            url = '' 
    115114        if not attrs.has_key('class'): 
    116115          attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript looks for this hook. 
     
    124123            output.append(self.label_for_value(value)) 
    125124        return mark_safe(u''.join(output)) 
    126  
     125     
     126    def base_url_parameters(self): 
     127        params = {} 
     128        if self.rel.limit_choices_to: 
     129            params.update(dict([(k, ','.join(v)) for k, v in self.rel.limit_choices_to.items()])) 
     130        return params     
     131     
     132    def url_parameters(self): 
     133        from django.contrib.admin.views.main import TO_FIELD_VAR 
     134        params = self.base_url_parameters() 
     135        params.update({TO_FIELD_VAR: self.rel.get_related_field().name}) 
     136        return params 
     137             
    127138    def label_for_value(self, value): 
    128139        key = self.rel.get_related_field().name 
     
    145156            value = '' 
    146157        return super(ManyToManyRawIdWidget, self).render(name, value, attrs) 
    147  
     158     
     159    def url_parameters(self): 
     160        return self.base_url_parameters() 
     161     
    148162    def label_for_value(self, value): 
    149163        return '' 
  • django/trunk/tests/regressiontests/admin_widgets/models.py

    r8823 r8846  
    7070>>> w = ForeignKeyRawIdWidget(rel) 
    7171>>> print conditional_escape(w.render('test', band.pk, attrs={})) 
    72 <input type="text" name="test" value="1" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/band/" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Linkin Park</strong> 
     72<input type="text" name="test" value="1" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/band/?t=id" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Linkin Park</strong> 
    7373 
    7474>>> m1 = Member.objects.create(pk=1, name='Chester') 
     
    101101>>> w = ForeignKeyRawIdWidget(rel) 
    102102>>> print w.render('test', core.parent_id, attrs={}) 
    103 <input type="text" name="test" value="86" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="/admin_media/img/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Apple</strong> 
     103<input type="text" name="test" value="86" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Apple</strong> 
    104104""" % { 
    105105    'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX,