Example #1
0
    def post(self, request, object_id):
        model_fields = [f.name for f in self.opts.fields]
        fields = [f for f in request.POST.keys() if f in model_fields]
        defaults = {
            "form": self.form,
            "fields": fields,
            "formfield_callback": self.formfield_for_dbfield,
        }
        form_class = modelform_factory(self.model, **defaults)
        form = form_class(instance=self.org_obj,
                          data=request.POST,
                          files=request.FILES)

        result = {}
        if form.is_valid():
            form.save(commit=True)
            result['result'] = 'success'
            result['new_data'] = form.cleaned_data
            result['new_html'] = dict([(f, self.get_new_field_html(f))
                                       for f in fields])
        else:
            result['result'] = 'error'
            result['errors'] = JsonErrorDict(form.errors, form).as_json()

        return self.render_response(result)
Example #2
0
    def post_response(self):

        #失败示例
        #self.message_user('Le code du dossier ne dois contenir que des chiffres', 'error')
        #return self.get_response()

        #成功示例
        if not self.request.is_ajax() or self.request.GET.get('_ajax'):
            self.message_user(u'账户明细导入成功', 'success')
            return self.get_redirect_url()
        else:
            #ajax提交成功示例
            self.message_user(u'账户明细导入成功', 'success')
            return self.render_response({
                'result': 'success',
            })

            #ajax提交失败示例
            from xadmin.plugins.ajax import JsonErrorDict
            form = self.form_obj
            result = {}
            if form.is_valid():
                result['result'] = 'success'
            else:
                result['result'] = 'error'
                result['errors'] = JsonErrorDict(form.errors, form).as_json()
            return self.render_response(result)
Example #3
0
    def post(self, request, *args, **kwargs):
        self.instance_forms()
        self.setup_forms()

        if self.valid_forms():
            ret = self.save_forms()
            if isinstance(ret, basestring):
                self.message_user(ret, 'error')
                return self.get_response()
            if isinstance(ret, HttpResponse):
                return ret
            response = self.post_response()
            if isinstance(response, basestring):
                return HttpResponseRedirect(response)
            else:
                return response
        else:
            if self.request.is_ajax() or self.request.GET.get('_ajax'):
                result = {}
                result['result'] = 'error'
                result['errors'] = JsonErrorDict(self.form_obj.errors,
                                                 self.form_obj).as_json()
                return self.render_response(result)

        return self.get_response()
Example #4
0
    def post(self, request, object_id):

        self.org_obj = self.get_object(unquote(object_id))

        if not self.has_change_permission(self.org_obj):
            raise PermissionDenied

        if self.org_obj is None:
            raise Http404(
                _('%(name)s object with primary key %(key)r does not exist.') %
                {
                    'name': force_unicode(self.opts.verbose_name),
                    'key': escape(object_id)
                })

        pk = getattr(self.org_obj, self.org_obj._meta.pk.attname)
        model_fields = [str(pk) + '-' + f.name for f in self.opts.fields]
        fields = [
            f[len(str(pk)) + 1:] for f in request.POST.keys()
            if f in model_fields
        ]

        defaults = {
            "form": forms.ModelForm,
            "fields": fields,
            "formfield_callback": self.formfield_for_dbfield,
        }
        form_class = modelform_factory(self.model, **defaults)
        form = form_class(instance=self.org_obj,
                          data=request.POST,
                          files=request.FILES)
        form.prefix = str(pk)

        result = {}
        if form.is_valid():
            form.save(commit=True)
            result['result'] = 'success'
            result['new_data'] = form.cleaned_data
            result['new_html'] = dict([(f, self.get_new_field_html(f))
                                       for f in fields])
        else:
            result['result'] = 'error'
            result['errors'] = JsonErrorDict(form.errors, form).as_json()

        return self.render_response(result)
Example #5
0
 def get_error_list(self):
     """
     获取表单的错误信息列表。
     """
     return JsonErrorDict(self.form_obj.errors, self.form_obj).as_json()