Django

Code

Show
Ignore:
Timestamp:
03/17/08 18:51:23 (10 months ago)
Author:
jkocherhans
Message:

newforms-admin: Collapsed some of the add/change hooks into a single get method that takes an optional obj argument. Backwards incompatible.

Files:

Legend:

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

    r7270 r7275  
    198198    declared_fieldsets = property(_declared_fieldsets) 
    199199 
    200     def fieldsets_add(self, request): 
    201         "Hook for specifying fieldsets for the add form." 
    202         raise NotImplementedError 
    203      
    204     def fieldsets_change(self, request, obj): 
    205         "Hook for specifying fieldsets for the change form." 
    206         raise NotImplementedError 
    207  
    208200class ModelAdmin(BaseModelAdmin): 
    209201    "Encapsulates all admin options and functionality for a given model." 
    210202    __metaclass__ = forms.MediaDefiningClass 
    211      
     203 
    212204    list_display = ('__str__',) 
    213205    list_display_links = () 
     
    270262        return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js]) 
    271263    media = property(_media) 
    272      
     264 
    273265    def has_add_permission(self, request): 
    274266        "Returns True if the given request has permission to add an object." 
     
    301293        """ 
    302294        Returns a QuerySet of all model instances that can be edited by the 
    303         admin site. 
     295        admin site. This is used by changelist_view. 
    304296        """ 
    305297        ordering = self.ordering or () # otherwise we might try to *None, which is bad ;) 
    306298        return self.model._default_manager.get_query_set().order_by(*ordering) 
    307299 
    308     def queryset_add(self, request): 
    309         """ 
    310         Returns a QuerySet of all model instances that can be edited by the 
    311         admin site in the "add" stage. 
    312         """ 
    313         return self.queryset(request) 
    314  
    315     def queryset_change(self, request): 
    316         """ 
    317         Returns a QuerySet of all model instances that can be edited by the 
    318         admin site in the "change" stage. 
    319         """ 
    320         return self.queryset(request) 
    321  
    322     def fieldsets_add(self, request): 
     300    def get_fieldsets(self, request, obj=None): 
    323301        "Hook for specifying fieldsets for the add form." 
    324302        if self.declared_fieldsets: 
    325303            return self.declared_fieldsets 
    326         form = self.form_add(request) 
     304        form = self.get_form(request) 
    327305        return [(None, {'fields': form.base_fields.keys()})] 
    328306 
    329     def fieldsets_change(self, request, obj): 
    330         "Hook for specifying fieldsets for the change form." 
    331         if self.declared_fieldsets: 
    332             return self.declared_fieldsets 
    333         form = self.form_change(request, obj) 
    334         return [(None, {'fields': form.base_fields.keys()})] 
    335  
    336     def form_add(self, request): 
    337         """ 
    338         Returns a Form class for use in the admin add view. 
     307    def get_form(self, request, obj=None): 
     308        """ 
     309        Returns a Form class for use in the admin add view. This is used by 
     310        add_view and change_view. 
    339311        """ 
    340312        if self.declared_fieldsets: 
     
    344316        return _modelform_factory(self.model, fields=fields, formfield_callback=self.formfield_for_dbfield) 
    345317 
    346     def form_change(self, request, obj): 
    347         """ 
    348         Returns a Form class for use in the admin change view. 
    349         """ 
    350         if self.declared_fieldsets: 
    351             fields = flatten_fieldsets(self.declared_fieldsets) 
    352         else: 
    353             fields = None 
    354         return _modelform_factory(self.model, fields=fields, formfield_callback=self.formfield_for_dbfield) 
     318    def get_formsets(self, request, obj=None): 
     319        for inline in self.inline_instances: 
     320            yield inline.get_formset(request, obj) 
    355321 
    356322    def save_add(self, request, model, form, formsets, post_url_continue): 
     
    492458            post_url = '../../../' 
    493459 
    494         ModelForm = self.form_add(request) 
     460        ModelForm = self.get_form(request) 
    495461        inline_formsets = [] 
    496462        obj = self.model() 
    497463        if request.method == 'POST': 
    498464            form = ModelForm(request.POST, request.FILES) 
    499             for FormSet in self.formsets_add(request): 
     465            for FormSet in self.get_formsets(request): 
    500466                inline_formset = FormSet(data=request.POST, files=request.FILES, instance=obj) 
    501467                inline_formsets.append(inline_formset) 
     
    504470        else: 
    505471            form = ModelForm(initial=request.GET) 
    506             for FormSet in self.formsets_add(request): 
     472            for FormSet in self.get_formsets(request): 
    507473                inline_formset = FormSet(instance=obj) 
    508474                inline_formsets.append(inline_formset) 
    509475 
    510         adminForm = AdminForm(form, list(self.fieldsets_add(request)), self.prepopulated_fields) 
     476        adminForm = AdminForm(form, list(self.get_fieldsets(request)), self.prepopulated_fields) 
    511477        media = self.media + adminForm.media 
    512478        for fs in inline_formsets: 
     
    515481        inline_admin_formsets = [] 
    516482        for inline, formset in zip(self.inline_instances, inline_formsets): 
    517             fieldsets = list(inline.fieldsets_add(request)) 
     483            fieldsets = list(inline.get_fieldsets(request)) 
    518484            inline_admin_formset = InlineAdminFormSet(inline, formset, fieldsets) 
    519485            inline_admin_formsets.append(inline_admin_formset) 
     
    552518            return self.add_view(request, form_url='../../add/') 
    553519 
    554         ModelForm = self.form_change(request, obj) 
     520        ModelForm = self.get_form(request, obj) 
    555521        inline_formsets = [] 
    556522        if request.method == 'POST': 
    557523            form = ModelForm(request.POST, request.FILES, instance=obj) 
    558             for FormSet in self.formsets_change(request, obj): 
     524            for FormSet in self.get_formsets(request, obj): 
    559525                inline_formset = FormSet(request.POST, request.FILES, instance=obj) 
    560526                inline_formsets.append(inline_formset) 
     
    564530        else: 
    565531            form = ModelForm(instance=obj) 
    566             for FormSet in self.formsets_change(request, obj): 
     532            for FormSet in self.get_formsets(request, obj): 
    567533                inline_formset = FormSet(instance=obj) 
    568534                inline_formsets.append(inline_formset) 
     
    582548                #oldform.order_objects.extend(orig_list) 
    583549                 
    584         adminForm = AdminForm(form, self.fieldsets_change(request, obj), self.prepopulated_fields) 
     550        adminForm = AdminForm(form, self.get_fieldsets(request, obj), self.prepopulated_fields) 
    585551        media = self.media + adminForm.media 
    586552        for fs in inline_formsets: 
     
    589555        inline_admin_formsets = [] 
    590556        for inline, formset in zip(self.inline_instances, inline_formsets): 
    591             fieldsets = list(inline.fieldsets_change(request, obj)) 
     557            fieldsets = list(inline.get_fieldsets(request, obj)) 
    592558            inline_admin_formset = InlineAdminFormSet(inline, formset, fieldsets) 
    593559            inline_admin_formsets.append(inline_admin_formset) 
     
    703669        return render_to_response(template_list, extra_context, context_instance=template.RequestContext(request)) 
    704670 
    705     def formsets_add(self, request): 
    706         for inline in self.inline_instances: 
    707             yield inline.formset_add(request) 
    708  
    709     def formsets_change(self, request, obj): 
    710         for inline in self.inline_instances: 
    711             yield inline.formset_change(request, obj) 
    712  
    713671class InlineModelAdmin(BaseModelAdmin): 
    714672    """ 
     
    736694            self.verbose_name_plural = self.model._meta.verbose_name_plural 
    737695 
    738     def formset_add(self, request): 
    739         """Returns an InlineFormSet class for use in admin add views.""" 
     696    def get_formset(self, request, obj=None): 
     697        """Returns a BaseInlineFormSet class for use in admin add/change views.""" 
    740698        if self.declared_fieldsets: 
    741699            fields = flatten_fieldsets(self.declared_fieldsets) 
     
    744702        return _inlineformset_factory(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra) 
    745703 
    746     def formset_change(self, request, obj): 
    747         """Returns an InlineFormSet class for use in admin change views.""" 
    748         if self.declared_fieldsets: 
    749             fields = flatten_fieldsets(self.declared_fieldsets) 
    750         else: 
    751             fields = None 
    752         return _inlineformset_factory(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra) 
    753  
    754     def fieldsets_add(self, request): 
     704    def get_fieldsets(self, request, obj=None): 
    755705        if self.declared_fieldsets: 
    756706            return self.declared_fieldsets 
    757         form = self.formset_add(request).form 
    758         return [(None, {'fields': form.base_fields.keys()})] 
    759  
    760     def fieldsets_change(self, request, obj): 
    761         if self.declared_fieldsets: 
    762             return self.declared_fieldsets 
    763         form = self.formset_change(request, obj).form 
     707        form = self.get_formset(request).form 
    764708        return [(None, {'fields': form.base_fields.keys()})] 
    765709 
  • django/branches/newforms-admin/django/contrib/admin/views/main.py

    r6782 r7275  
    121121        self.opts = model._meta 
    122122        self.lookup_opts = self.opts 
    123         self.root_query_set = model_admin.queryset_change(request) 
     123        self.root_query_set = model_admin.queryset(request) 
    124124        self.list_display = list_display 
    125125        self.list_display_links = list_display_links 
  • django/branches/newforms-admin/tests/regressiontests/modeladmin/models.py

    r6106 r7275  
    2626>>> ma = ModelAdmin(Band, site) 
    2727 
    28 >>> ma.form_add(request).base_fields.keys() 
     28>>> ma.get_form(request).base_fields.keys() 
    2929['name', 'bio'] 
    3030 
     
    4040 
    4141>>> ma = ModelAdmin(Band, site) 
    42 >>> ma.fieldsets_add(request) 
     42>>> ma.get_fieldsets(request) 
    4343[(None, {'fields': ['name', 'bio']})] 
    44 >>> ma.fieldsets_change(request, band) 
     44>>> ma.get_fieldsets(request, band) 
    4545[(None, {'fields': ['name', 'bio']})] 
    4646 
     
    5353 
    5454>>> ma = BandAdmin(Band, site) 
    55 >>> ma.fieldsets_add(request) 
     55>>> ma.get_fieldsets(request) 
    5656[(None, {'fields': ['name']})] 
    57 >>> ma.fieldsets_change(request, band) 
     57>>> ma.get_fieldsets(request, band) 
    5858[(None, {'fields': ['name']})] 
    5959 
     
    7171 
    7272>>> ma = BandAdmin(Band, site) 
    73 >>> ma.form_add(request).base_fields.keys() 
     73>>> ma.get_form(request).base_fields.keys() 
    7474['name'] 
    75 >>> ma.form_change(request, band).base_fields.keys() 
     75>>> ma.get_form(request, band).base_fields.keys() 
    7676['name'] 
    7777 
     
    8080 
    8181>>> ma = BandAdmin(Band, site) 
    82 >>> ma.form_add(request).base_fields.keys() 
     82>>> ma.get_form(request).base_fields.keys() 
    8383['name'] 
    84 >>> ma.form_change(request, band).base_fields.keys() 
     84>>> ma.get_form(request, band).base_fields.keys() 
    8585['name'] 
    8686