Example #1
0
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))
Example #2
0
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)
Example #3
0
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
Example #4
0
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