def add_new_model(request, app, model_name, form=None): normal_model_name = normalize_model_name(model_name) model = get_model(app, normal_model_name) form = form if form else model.get_form_class() if not form: form = get_model_form(normal_model_name) if request.method == 'POST': form = form(request.POST, request.FILES) if form.is_valid(): form.instance.user = request.user form.instance.site = request.user.site try: new_obj = form.save() except ValidationError as error: new_obj = None if new_obj: return HttpResponse( '<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' % (escape(new_obj._get_pk_val()), escape(new_obj))) else: form = form() page_context = {'app': app, 'form': form, 'field': normal_model_name, 'is_popup': True} return render_to_response('picker/popup.html', page_context, context_instance=RequestContext(request))
def add_new_model(request, model_name, form=None): normal_model_name = normalize_model_name(model_name) print normal_model_name if not form: form = get_model_form(normal_model_name) if request.method == 'POST': form = form(request.POST) if form.is_valid(): try: new_obj = form.save() except forms.ValidationError: new_obj = None if new_obj: return HttpResponse( '<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' % (escape(new_obj._get_pk_val()), escape(new_obj)) ) else: form = form() page_context = {'form': form, 'field': normal_model_name} return render(request, 'add_another/popup.html', page_context)
def add(request): """ Process the add form. """ model = get_model(request.POST["app"], request.POST["model"]) if not can("add", model, request.user): return {"valid": True, "permissionerror":"You don't have permission to add!"} obj = model() form = get_model_form(obj, request.POST["fields"], data=request.POST,\ files=request.FILES, parent_model_related_name=request.POST["parent_model_related_name"],\ parent_model=request.POST["parent_model"], \ parent_id = request.POST["parent_id"]) if form.is_valid(): saved_obj=form.save() 'Create change message' try: model_admin = ModelAdmin(model, admin.site) message = model_admin.construct_change_message(request, form, None) model_admin.log_change(request, saved_obj, message) except Exception: pass data = { 'id': saved_obj.id, 'valid': True, } else: "from django_ajax_validation" errors = form.errors formfields = dict([(fieldname, form[fieldname]) for fieldname in form.fields.keys()]) final_errors = {} for key, val in errors.iteritems(): if '__all__' in key: final_errors[key] = val else:# not isinstance(formfields[key].field): html_id = formfields[key].field.widget.attrs.get('id') or formfields[key].auto_id html_id = formfields[key].field.widget.id_for_label(html_id) final_errors[html_id] = val data = { 'valid': False, 'errors': final_errors, } return data
def edit(request): """ Process the inline editing form. """ try: model = get_model(request.POST["app"], request.POST["model"]) if not can("change", model, request.user): return {"valid": True, "permissionerror":"You don't have permission to edit!"} obj = model.objects.get(id=request.POST["id"]) form = get_model_form(obj, request.POST["fields"], data=request.POST, files=request.FILES) except Exception: pass if form.is_valid(): form.save() model_admin = ModelAdmin(model, admin.site) message = model_admin.construct_change_message(request, form, None) model_admin.log_change(request, obj, message) data = { 'valid': True } else: "from django_ajax_validation" errors = form.errors formfields = dict([(fieldname, form[fieldname]) for fieldname in form.fields.keys()]) # pprint (errors) final_errors = {} for key, val in errors.iteritems(): if '__all__' in key: final_errors[key] = val elif not isinstance(formfields[key].field): html_id = formfields[key].field.widget.attrs.get('id') or formfields[key].auto_id html_id = formfields[key].field.widget.id_for_label(html_id) final_errors[html_id] = val data = { 'valid': False, 'errors': final_errors, } return data