From 05b57ccc1a3e3ce9e3ffbfd5865fbae8d280de08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Tue, 30 May 2017 22:27:45 +0200 Subject: [PATCH] proposal form --- cfp/apps.py | 5 ++--- cfp/forms.py | 12 ++++++++++++ cfp/signals.py | 21 +++++++++++++++++++++ cfp/templates/cfp/complete.html | 19 +++++++++++++++++++ cfp/templates/cfp/propose.html | 19 +++++++++++++++++++ cfp/urls.py | 4 +++- cfp/views.py | 14 ++++++++++++++ ponyconf/templates/base.html | 1 + ponyconf/urls.py | 4 ++-- 9 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 cfp/forms.py create mode 100644 cfp/signals.py create mode 100644 cfp/templates/cfp/complete.html create mode 100644 cfp/templates/cfp/propose.html create mode 100644 cfp/views.py diff --git a/cfp/apps.py b/cfp/apps.py index 6933c94..e9f8694 100644 --- a/cfp/apps.py +++ b/cfp/apps.py @@ -6,6 +6,5 @@ class CFPConfig(AppConfig): name = 'cfp' def ready(self): - pass - #import cfp.signals # noqa - #post_migrate.connect(proposals.signals.call_first_site_post_save, sender=self) + import cfp.signals # noqa + post_migrate.connect(cfp.signals.call_first_site_post_save, sender=self) diff --git a/cfp/forms.py b/cfp/forms.py new file mode 100644 index 0000000..f5fdd73 --- /dev/null +++ b/cfp/forms.py @@ -0,0 +1,12 @@ +from django import forms +from django.forms.models import modelform_factory + +from .models import Participant, Talk + + +class ProposeForm(forms.Form): + pass + + +ParticipantForm = modelform_factory(Participant, fields=['email']) +TalkForm = modelform_factory(Talk, fields=['title']) diff --git a/cfp/signals.py b/cfp/signals.py new file mode 100644 index 0000000..bed73a4 --- /dev/null +++ b/cfp/signals.py @@ -0,0 +1,21 @@ +from django.db.models.signals import post_save +from django.dispatch import receiver +from django.contrib.sites.models import Site +from django.conf import settings + +from .models import Conference + + +@receiver(post_save, sender=Site, dispatch_uid="Create Conference for Site") +@disable_for_loaddata +def create_conference(sender, instance, **kwargs): + Conference.objects.get_or_create(site=instance) + + +def call_first_site_post_save(apps, **kwargs): + try: + site = Site.objects.get(id=getattr(settings, 'SITE_ID', 1)) + except Site.DoesNotExist: + pass + else: + site.save() diff --git a/cfp/templates/cfp/complete.html b/cfp/templates/cfp/complete.html new file mode 100644 index 0000000..e0dea3f --- /dev/null +++ b/cfp/templates/cfp/complete.html @@ -0,0 +1,19 @@ +{% extends 'base.html' %} + +{% load ponyconf_tags i18n %} + +{% block proposetab %} class="active"{% endblock %} + +{% block content %} + + +
+
+

Merci pour votre participation !

+
+
+{% endblock %} diff --git a/cfp/templates/cfp/propose.html b/cfp/templates/cfp/propose.html new file mode 100644 index 0000000..114bed1 --- /dev/null +++ b/cfp/templates/cfp/propose.html @@ -0,0 +1,19 @@ +{% extends 'base.html' %} + +{% load ponyconf_tags i18n %} + +{% block proposetab %} class="active"{% endblock %} + +{% block content %} + + +
+
+ {% include "_form.html" %} +
+
+{% endblock %} diff --git a/cfp/urls.py b/cfp/urls.py index c2c6c06..895f01c 100644 --- a/cfp/urls.py +++ b/cfp/urls.py @@ -1,8 +1,10 @@ from django.conf.urls import url -#from proposals import views +from . import views urlpatterns = [ + url(r'^propose/$', views.ProposeView.as_view(), name='propose'), + url(r'^thanks/$', views.CompleteView.as_view(), name='propose-complete'), #url(r'^markdown/$', views.markdown_preview, name='markdown'), #url(r'^$', views.home, name='home'), #url(r'^staff/$', views.staff, name='staff'), diff --git a/cfp/views.py b/cfp/views.py new file mode 100644 index 0000000..85a1c01 --- /dev/null +++ b/cfp/views.py @@ -0,0 +1,14 @@ +from django.views.generic import FormView, TemplateView +from django.core.urlresolvers import reverse_lazy + +from .forms import ProposeForm + + +class ProposeView(FormView): + form_class = ProposeForm + template_name = 'cfp/propose.html' + success_url = reverse_lazy('propose-complete') + + +class CompleteView(TemplateView): + template_name = 'cfp/complete.html' diff --git a/ponyconf/templates/base.html b/ponyconf/templates/base.html index 112aa69..8b8f877 100644 --- a/ponyconf/templates/base.html +++ b/ponyconf/templates/base.html @@ -18,6 +18,7 @@