Ejemplo n.º 1
0
def process_form(request,
                 form_definition,
                 extra_context={},
                 disable_redirection=False):
    context = extra_context
    success_message = form_definition.success_message or _(
        'Thank you, the data was submitted successfully.')
    error_message = form_definition.error_message or _(
        'The data could not be submitted, please try again.')
    form_error = False
    form_success = False
    is_submit = False
    # If the form has been submitted...
    if request.method == 'POST' and request.POST.get(
            form_definition.submit_flag_name):
        form = DesignedForm(form_definition, None, request.POST, request.FILES)
        is_submit = True
    if request.method == 'GET' and request.GET.get(
            form_definition.submit_flag_name):
        form = DesignedForm(form_definition, None, request.GET)
        is_submit = True

    if is_submit:
        if form.is_valid():
            # Handle file uploads using storage object
            files = handle_uploaded_files(form_definition, form)

            # Successful submission
            messages.success(request, success_message)
            form_success = True
            if form_definition.log_data:
                form_definition.log(form, request.user)
            if form_definition.mail_to:
                form_definition.send_mail(form, files)
            if form_definition.success_redirect and not disable_redirection:
                return HttpResponseRedirect(form_definition.action or '?')
            if form_definition.success_clear:
                form = DesignedForm(form_definition)  # clear form
        else:
            form_error = True
            messages.error(request, error_message)
    else:
        if form_definition.allow_get_initial:
            form = DesignedForm(form_definition, initial_data=request.GET)
        else:
            form = DesignedForm(form_definition)

    context.update({
        'form_error': form_error,
        'form_success': form_success,
        'form': form,
        'form_definition': form_definition
    })
    context.update(csrf(request))

    if form_definition.display_logged:
        logs = form_definition.logs.all().order_by('created')
        context.update({'logs': logs})

    return context
Ejemplo n.º 2
0
def process_form(request, form_definition, context={}, is_cms_plugin=False):
    success_message = form_definition.success_message or _(
        'Thank you, the data was submitted successfully.')
    error_message = form_definition.error_message or _(
        'The data could not be submitted, please try again.')
    message = None
    form_error = False
    form_success = False
    is_submit = False
    # If the form has been submitted...
    if request.method == 'POST' and request.POST.get(
            form_definition.submit_flag_name):
        form = DesignedForm(form_definition, None, request.POST)
        is_submit = True
    if request.method == 'GET' and request.GET.get(
            form_definition.submit_flag_name):
        form = DesignedForm(form_definition, None, request.GET)
        is_submit = True

    if is_submit:
        if form.is_valid():
            # Successful submission
            messages.success(request, success_message)
            message = success_message
            form_success = True
            if form_definition.log_data:
                form_definition.log(form)
            if form_definition.mail_to:
                form_definition.send_mail(form)
            if form_definition.success_redirect and not is_cms_plugin:
                # TODO Redirection does not work for cms plugin
                return HttpResponseRedirect(form_definition.action or '?')
            if form_definition.success_clear:
                form = DesignedForm(form_definition)  # clear form
        else:
            form_error = True
            messages.error(request, error_message)
            message = error_message
    else:
        if form_definition.allow_get_initial:
            form = DesignedForm(form_definition, initial_data=request.GET)
        else:
            form = DesignedForm(form_definition)

    context.update({
        'message': message,
        'form_error': form_error,
        'form_success': form_success,
        'form': form,
        'form_definition': form_definition
    })
    context.update(csrf(request))
    return context
Ejemplo n.º 3
0
def test_custom_message_template(greeting_form):
    """
    Test that custom message templates work as expected.
    """
    greeting_form.message_template = '{{ greeting }}, friend!'
    form = DesignedForm(greeting_form, data={
        'greeting': 'Hello',
    })
    assert form.is_valid()
    greeting_form.log(form)
    mail = greeting_form.send_mail(form)
    assert mail.body == 'Hello, friend!'