コード例 #1
0
ファイル: apps.py プロジェクト: strogo/djpcms
 def render(self, djp, wrapper, prefix, for_model=None, ajax=False, method="get", **kwargs):
     appmodel, ok = app_model_from_ct(for_model)
     if not ok:
         return appmodel
     filters = appmodel.search_fields
     if not filters:
         return u""
     request = djp.request
     search_url = appmodel.searchurl(request)
     if not search_url:
         return u""
     model = appmodel.model
     initial = dict((request.GET or request.POST).items())
     form = forms.modelform_factory(model, appmodel.form, fields=filters, exclude=[])
     form.layout = FormLayout()
     f = UniForm(form(initial=initial), method=method, action=search_url)
     if ajax:
         f.addClass(djp.css.ajax)
     f.inputs.append(input(value="filter", name="_filter"))
     return f.render()
コード例 #2
0
ファイル: appsite.py プロジェクト: strogo/djpcms
    def get_form(
        self,
        djp,
        form_class,
        addinputs=True,
        form_withrequest=None,
        form_ajax=None,
        forceform=False,
        instance=None,
        **kwargs
    ):
        """Build a form. This method is called by editing/adding views.
It can be overridden to twick its behaviour.

:parameter djp: instance of :class:`djpcms.views.response.DjpResponse`.
:parameter form_class: form class to use.
:parameter addinputs: boolean flag indicating if submit inputs should be added. Default ``True``.
:parameter form_withrequest: if form_class requires the request object to be passed to its constructor. Default ``None``.
:parameter form_ajax: if form uses AJAX. Default ``False``.
:parameter instance: Instance of model or ``None`` or ``False``. If ``False`` no instance will be
                     passed to the form constructor. If ``None`` the instance will be obtained from
                     ``djp``. Default ``None``.
"""
        template = self.form_template
        if callable(template):
            template = template(djp)

        if instance == False:
            instance = None
        else:
            instance = instance or djp.instance
        if instance:
            model = instance.__class__
        else:
            model = kwargs.pop("model", None)
            if not model:
                model = getattr(self, "model", None)
        request = djp.request
        form_withrequest = form_withrequest if form_withrequest is not None else self.form_withrequest
        form_ajax = form_ajax if form_ajax is not None else self.form_ajax

        form_class = form_class or self.form or forms.ModelForm

        if isinstance(form_class, type):
            if forceform or not hasattr(form_class, "_meta"):
                mform = form_class
            else:
                if form_class._meta.model == model:
                    mform = form_class
                else:
                    mform = forms.modelform_factory(model, form_class)

        return get_form(
            djp,
            mform,
            instance=instance,
            addinputs=self.submit if addinputs else None,
            model=model,
            form_ajax=form_ajax,
            form_withrequest=form_withrequest,
            template=template,
            **kwargs
        )