diff --git a/app/settings.py b/app/settings.py index 630691a..def99cb 100644 --- a/app/settings.py +++ b/app/settings.py @@ -135,6 +135,7 @@ TEMPLATE_LOADERS = ( 'django.template.loaders.app_directories.Loader', ) + MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', @@ -317,6 +318,11 @@ CMS_TEMPLATES = ( ('about.html', 'About company section'), ) +DJANGOCMS_FORMS_TEMPLATES = ( + ('djangocms_forms/form_template/default.html', 'Default'), + ('form_template/consultation.html', 'Consultation'), +) + CMS_PERMISSION = True diff --git a/djangocms_forms/cms_plugins.py b/djangocms_forms/cms_plugins.py index 77608f5..561c0b6 100644 --- a/djangocms_forms/cms_plugins.py +++ b/djangocms_forms/cms_plugins.py @@ -8,7 +8,7 @@ from django.utils.translation import ugettext_lazy as _ from .conf import settings from .forms import FormBuilder, FormDefinitionAdminForm, FormFieldInlineForm -from .models import FormDefinition, FormField +from .models import FormDefinition, FormField, FormSubmission class FormFieldInline(admin.StackedInline): @@ -115,3 +115,25 @@ class FormPlugin(CMSPluginBase): plugin_pool.register_plugin(FormPlugin) + + +class FormResultsPlugin(CMSPluginBase): + name = 'Form Results' + module = settings.DJANGOCMS_FORMS_PLUGIN_MODULE + cache = False + render_template = 'djangocms_forms/form_template/results.html' + + def render(self, context, instance, placeholder): + context = super(FormResultsPlugin, self).render(context, instance, placeholder) + request = context['request'] + + if request.session.get('last-completed-form-id', False): + try: + form_instance = FormSubmission.objects.get(id=request.session.get('last-completed-form-id', False)) + context['results'] = form_instance + except (FormSubmission.DoesNotExist): + pass + + return context + +plugin_pool.register_plugin(FormResultsPlugin) diff --git a/djangocms_forms/forms.py b/djangocms_forms/forms.py index d9a2583..7e9c5f8 100644 --- a/djangocms_forms/forms.py +++ b/djangocms_forms/forms.py @@ -269,6 +269,7 @@ class FormBuilder(forms.Form): for data in form_data: if data['name'] == 'end_session': request.session[form_slug] = None + request.session['last-completed-form-id'] = form_instance.id return except (FormSubmission.DoesNotExist): pass @@ -282,6 +283,16 @@ class FormBuilder(forms.Form): request.session[form_slug] = form_instance.id def email_submission(self, form_data, request, referrer): + # Отправляем, только если конец сессии + send = False + for data in form_data: + if data['name'] == 'end_session': + request.session[form_slug] = None + send = True + + if not send: + return + mail_to = re.compile('\s*[,;]+\s*').split(self.form_definition.email_to) mail_from = self.form_definition.email_from or None mail_subject = self.form_definition.email_subject or \ diff --git a/djangocms_forms/templates/djangocms_forms/form_template/results.html b/djangocms_forms/templates/djangocms_forms/form_template/results.html new file mode 100644 index 0000000..b88ca63 --- /dev/null +++ b/djangocms_forms/templates/djangocms_forms/form_template/results.html @@ -0,0 +1,4 @@ +{% load cms_tags djangocms_forms_tags i18n sekizai_tags staticfiles %} + +