Django

Code

Changeset 5588

Show
Ignore:
Timestamp:
07/03/07 00:45:00 (1 year ago)
Author:
jkocherhans
Message:

newforms-admin: Changed BoundInlineObject? and templates to treat deletion, ordering, and pk fields as special cases for convenience. Also, changed StackedInline? not to show a form row for the pk field.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin/django/contrib/admin/options.py

    r5574 r5588  
    650650    def __iter__(self): 
    651651        for form, original in zip(self.formset.change_forms, self.formset.get_inline_objects()): 
    652             yield BoundInlineObject(form, original, self.inline_admin) 
     652            yield BoundInlineObject(self.formset, form, original, self.inline_admin) 
    653653        for form in self.formset.add_forms: 
    654             yield BoundInlineObject(form, None, self.inline_admin) 
     654            yield BoundInlineObject(self.formset, form, None, self.inline_admin) 
    655655 
    656656    def fields(self): 
    657         # HACK: each form instance has some extra fields. Getting those fields 
    658         # from the form class will take some rearranging. Get them from the  
    659         # first form instance for now. 
    660         return list(self.formset.forms[0]) 
     657        return self.formset.form_class.base_fields.values() 
    661658 
    662659    def verbose_name(self): 
     
    667664 
    668665class BoundInlineObject(object): 
    669     def __init__(self, form, original, inline_admin): 
     666    def __init__(self, formset, form, original, inline_admin): 
     667        self.formset = formset 
    670668        self.inline_admin = inline_admin 
    671669        self.base_form = form 
     
    683681        """ 
    684682        if self.inline_admin.fields is None: 
    685             default_fields = [f for f in self.base_form.fields] 
     683            default_fields = [f for f in self.base_form.base_fields] 
    686684            yield Fieldset(fields=default_fields) 
    687685        else: 
    688686            for name, options in self.opts.fields: 
    689687                yield Fieldset(name, options['fields'], classes=options.get('classes', '').split(' '), description=options.get('description')) 
     688 
     689    def pk_field(self): 
     690        return BoundField(self.base_form, self.formset._pk_field_name, False) 
     691 
     692    def deletion_field(self): 
     693        from django.newforms.formsets import DELETION_FIELD_NAME 
     694        return BoundField(self.base_form, DELETION_FIELD_NAME, False) 
     695 
     696    def ordering_field(self): 
     697        from django.newforms.formsets import ORDERING_FIELD_NAME 
     698        return BoundField(self.base_form, ORDERING_FIELD_NAME, False) 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/edit_inline_stacked.html

    r5473 r5588  
    2020          </div> 
    2121      {% endfor %} 
     22      {{ bound_inline_object.pk_field.field }} 
     23      {% if bound_inline.formset.deletable %}<div class="form-row">{{ bound_inline_object.deletion_field.field }} {{ bound_inline_object.deletion_field.label_tag }}</div>{% endif %} 
    2224      </fieldset> 
    2325  {% endfor %} 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/edit_inline_tabular.html

    r5473 r5588  
    44   <table> 
    55     <thead><tr> 
     6     {% if bound_inline.formset.deletable %}<th>Delete?</th>{% endif %} 
    67     {% for field in bound_inline.fields %} 
    78       {% if not field.is_hidden %} 
     
    2223         
    2324        <tr class="{% cycle row1,row2 %}"> 
     25        {{ bound_inline_object.pk_field.field }} 
     26        {% if bound_inline.formset.deletable %}<td>{{ bound_inline_object.deletion_field.field }}</td>{% endif %} 
    2427        {% for bfset in bound_inline_object.form %} 
    2528          {% for line in bfset %} 
    2629            {% for field in line %} 
    27                
    28               {% if not field.field.is_hidden %} 
    29                 <td>{{ field.field }}</td> 
    30               {% else %} 
    31                 {{ field.field }} 
    32               {% endif %} 
     30              <td>{{ field.field }}</td> 
    3331            {% endfor %} 
    3432          {% endfor %} 
  • django/branches/newforms-admin/django/newforms/models.py

    r5576 r5588  
    268268    def add_fields(self, form, index): 
    269269        """Add a hidden field for the object's primary key.""" 
    270         form.fields[self.model._meta.pk.attname] = IntegerField(required=False, widget=HiddenInput) 
     270        self._pk_field_name = self.model._meta.pk.attname 
     271        form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput) 
    271272        super(BaseModelFormSet, self).add_fields(form, index) 
    272273