correct server for requirements
[prawokultury.git] / prawokultury / contact_forms.py
index bb6a54c..7240eb5 100644 (file)
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
 from django.conf import settings
 from django import forms
 from contact.forms import ContactForm
 from contact.models import Contact
 from django.conf import settings
 from django import forms
 from contact.forms import ContactForm
 from contact.models import Contact
+from contact.fields import HeaderField
+from django.utils.functional import lazy
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
+from django.utils.safestring import mark_safe
+from migdal.models import Entry
+
+mark_safe_lazy = lazy(mark_safe, unicode)
 
 
 class RegistrationForm(ContactForm):
     form_tag = 'register'
 
 
 class RegistrationForm(ContactForm):
     form_tag = 'register'
-    form_title = _('Take part!')
-    admin_list = ['name', 'organization', 'title']
 
 
-    name = forms.CharField(label=_('Name'), max_length=128)
+    save_as_tag = '2015'
+    conference_name = u'CopyCamp 2015' 
+    
+    form_title = _('Registration')
+    admin_list = ['first_name', 'last_name', 'organization']
+
+    first_name = forms.CharField(label=_('First name'), max_length=128)
+    last_name = forms.CharField(label=_('Last name'), max_length=128)
     contact = forms.EmailField(label=_('E-mail'), max_length=128)
     organization = forms.CharField(label=_('Organization'), 
             max_length=256, required=False)
     contact = forms.EmailField(label=_('E-mail'), max_length=128)
     organization = forms.CharField(label=_('Organization'), 
             max_length=256, required=False)
-    title = forms.CharField(label=_('Title of presentation'), 
-            max_length=256, required=False, widget = forms.HiddenInput)
-    presentation = forms.FileField(label=_('Presentation'),
-            required=False, widget = forms.HiddenInput)
-    summary = forms.CharField(label=_('Summary of presentation (max. 1800 characters)'),
-            widget=forms.HiddenInput, max_length=1800, required=False)
+    country = forms.CharField(label=_('Country'), max_length=128)
+
+    #days = forms.ChoiceField(
+    #    label = _("I'm planning to show up on"),
+    #    choices=[
+    #        ('both', _('Both days of the conference')),
+    #        ('only-6th', _('November 6th only')),
+    #        ('only-7th', _('November 7th only')),
+    #    ], widget=forms.RadioSelect())
+    
+    agree_mailing = forms.BooleanField(
+        label=_('I am interested in receiving information about the Modern Poland Foundation\'s activities by e-mail'),
+        required=False
+    )
     agree_data = forms.BooleanField(
         label=_('Permission for data processing'),
         help_text=_(u'I hereby grant Modern Poland Foundation (Fundacja Nowoczesna Polska, ul. Marszałkowska 84/92, 00-514 Warszawa) permission to process my personal data (name, e-mail address) for purposes of registration for CopyCamp conference.')
     )
     agree_license = forms.BooleanField(
         label=_('Permission for publication'),
     agree_data = forms.BooleanField(
         label=_('Permission for data processing'),
         help_text=_(u'I hereby grant Modern Poland Foundation (Fundacja Nowoczesna Polska, ul. Marszałkowska 84/92, 00-514 Warszawa) permission to process my personal data (name, e-mail address) for purposes of registration for CopyCamp conference.')
     )
     agree_license = forms.BooleanField(
         label=_('Permission for publication'),
-        help_text=_('I agree to having materials recorded during the conference released under the terms of <a href="http://creativecommons.org/licenses/by-sa/3.0/deed">CC BY-SA</a> license.')
+        help_text=_('I agree to having materials, recorded during the conference, released under the terms of <a href="http://creativecommons.org/licenses/by-sa/3.0/deed">CC BY-SA</a> license and to publishing my image.'),
+        required=False
     )
 
     def __init__(self, *args, **kwargs):
         super(RegistrationForm, self).__init__(*args, **kwargs)
     )
 
     def __init__(self, *args, **kwargs):
         super(RegistrationForm, self).__init__(*args, **kwargs)
-        self.limit_reached = Contact.objects.filter(form_tag=self.form_tag).count() >= settings.REGISTRATION_LIMIT
-        if self.limit_reached:
-            for field in ('title', 'summary'):
-                self.fields[field].required = True
+        self.started = getattr(settings, 'REGISTRATION_STARTED', False)
+        self.limit_reached = Contact.objects.filter(form_tag=self.save_as_tag).count() >= settings.REGISTRATION_LIMIT
+        try:
+            url = Entry.objects.get(slug_pl='regulamin').get_absolute_url()
+            self.fields['agree_toc'] = forms.BooleanField(
+                required = True,
+                label = mark_safe(_('I accept <a href="%s">Terms and Conditions of CopyCamp</a>') % url)
+            )
+        except Entry.DoesNotExist:
+            pass
+
+
+tracks = (
+    _('CopyArt'),
+    _('Models of Remuneration'),
+    _('Copyright and Education'),
+    _('Technology and Innovation'),
+    _('Copyright and Human Rights'),
+    _('Technologies in Social Activism'),
+    _('Copyright Enforcement'),
+    _('Future of Copyright'),
+    _('Copyright Debate')
+)
+
+class RegisterSpeaker(RegistrationForm):
+    form_tag = 'register-speaker'
+    save_as_tag = '2015-speaker'
+    form_title = _('Open call for presentations')
+
+    presentation_thematic_track = forms.ChoiceField(
+        label = _('Please select one thematic track'),
+        choices=[(t,t) for t in tracks], widget=forms.RadioSelect())
+
+    bio = forms.CharField(label=_('Short biographical note (max. 500 characters)'),
+            widget=forms.Textarea, max_length=500, required=True)
+    photo = forms.FileField(label=_('Photo'), required=False)
+    phone = forms.CharField(label=_('Phone number'), max_length=64,
+        required=False,
+        help_text=_('Used only for organizational purposes.'))
+
+    #presentation = forms.BooleanField(label=_('Presentation'), required=False)
+    presentation_title = forms.CharField(label=_('Title of presentation'),
+            max_length=256)
+    #presentation = forms.FileField(label=_('Presentation'),
+    #        required=False)
+    presentation_summary = forms.CharField(label=_('Summary of presentation (max. 1800 characters)'),
+            widget=forms.Textarea, max_length=1800)
+
+    presentation_post_conference_publication = forms.BooleanField(
+        label=_('I am interested in including my paper in the post-conference publication'),
+        required=False
+    )
+
+    #workshop = forms.BooleanField(label=_('Workshop'), required=False)
+    #workshop_title = forms.CharField(label=_('Title of workshop'),
+    #        max_length=256, required=False)
+    #workshop_summary = forms.CharField(label=_('Summary of workshop (max. 1800 characters)'),
+    #        widget=forms.Textarea, max_length=1800, required=False)
+
+
+    def __init__(self, *args, **kw):
+        super(RegisterSpeaker, self).__init__(*args, **kw)
+        self.closed = getattr(settings, 'REGISTRATION_SPEAKER_CLOSED', False)
+        self.fields.keyOrder = [
+            'first_name',
+            'last_name',
+            'contact',
+            'phone',
+            'organization',
+            'bio',
+            'photo',
+#            'presentation',
+            'presentation_title',
+            'presentation_summary',
+            'presentation_thematic_track',
+            'presentation_post_conference_publication',
+#            'workshop',
+#            'workshop_title',
+#            'workshop_summary',
+
+            'agree_mailing',
+            'agree_data',
+            'agree_license'
+        ]
+
 
 class NextForm(ContactForm):
 
 class NextForm(ContactForm):
-    form_tag = 'next'
+    form_tag = '/next'
     form_title = _('Next CopyCamp')
 
     name = forms.CharField(label=_('Name'), max_length=128)
     form_title = _('Next CopyCamp')
 
     name = forms.CharField(label=_('Name'), max_length=128)
@@ -46,3 +149,77 @@ class NextForm(ContactForm):
     organization = forms.CharField(label=_('Organization'),
             max_length=256, required=False)
 
     organization = forms.CharField(label=_('Organization'),
             max_length=256, required=False)
 
+
+class WorkshopForm(ContactForm):
+    form_tag = 'workshop'
+    save_as_tag = 'workshop-2015'
+    conference_name = u'CopyCamp 2015'
+    form_title = _('Workshop')
+
+    name = forms.CharField(label=_('Name'), max_length=128)
+    contact = forms.EmailField(label=_('E-mail'), max_length=128)
+    organization = forms.CharField(label=_('Organization'),
+            max_length=256, required=False)
+
+    _#header = HeaderField(label=mark_safe_lazy(_("<h3>I'll take a part in workshops</h3>")), help_text=_('Only workshops with any spots left are visible here.'))
+
+    #_h1 = HeaderField(label=mark_safe_lazy(_("<strong>Thursday, November 6th, 10 a.m.–12 noon</strong>")))
+
+    #w_rysiek = forms.BooleanField(label=_(u'Michał „rysiek” Woźniak, Koalicja Otwartej Edukacji KOED: Wprowadzenie do prawa autorskiego i wolnych licencji'), required=False)
+    #w_bartsch = forms.BooleanField(label=_(u'Natalia Bartsch: Wykorzystywanie istniejących utworów w tworzeniu przedstawienia teatralnego'), required=False)
+    #w_samsung = forms.BooleanField(label=_(u'Rafał Sikorski: Prywatny użytek w prawie autorskim w XXI wieku. Jak powinien wyglądać w\u00a0Unii Europejskiej?'), required=False)
+
+    #_h2 = HeaderField(label=mark_safe_lazy(_("<strong>Friday, November 7th, 10 a.m.–12 noon</strong>")))
+
+    #w_mezei = forms.BooleanField(label=_(u'Péter Mezei: European copyright alternatives – 2014 (Workshop will be held in English)'), required=False)
+    #w_sliwowski = forms.BooleanField(label=_(u'Kamil Śliwowski, Koalicja Otwartej Edukacji KOED: Prawo autorskie w Sieci - ćwiczenia praktyczne'), required=False)
+
+    #_h3 = HeaderField(label=mark_safe_lazy(_("<strong>Friday, November 7th, 12 noon–2 p.m.</strong>")))
+
+    #w_zaiks = forms.BooleanField(label=_(u'Łukasz Łyczkowski, Adam Pacuski, Stowarzyszenie Autorów ZAiKS: Praktyczne aspekty dozwolonego użytku'), required=False)
+    #w_creativepoland = forms.BooleanField(label=_(u'Paweł Kaźmierczyk i Dagmara Białek, Creative Poland: Sektor kreatywny – pomysły są w cenie'), required=False)
+
+    #_header_1 = HeaderField(label='')
+
+    #agree_mailing = forms.BooleanField(
+    #    label=_('I am interested in receiving information about the Modern Poland Foundation\'s activities by e-mail'),
+    #    required=False
+    #)
+    agree_data = forms.BooleanField(
+        label=_('Permission for data processing'),
+        help_text=_(u'I hereby grant Modern Poland Foundation (Fundacja Nowoczesna Polska, ul. Marszałkowska 84/92, 00-514 Warszawa) permission to process my personal data (name, e-mail address) for purposes of registration for CopyCamp conference.')
+    )
+    agree_license = forms.BooleanField(
+        label=_('Permission for publication'),
+        help_text=_('I agree to having materials, recorded during the conference, released under the terms of <a href="http://creativecommons.org/licenses/by-sa/3.0/deed">CC BY-SA</a> license and to publishing my image.'),
+        required=False
+    )
+
+    def __init__(self, *args, **kwargs):
+        super(WorkshopForm, self).__init__(*args, **kwargs)
+        self.limit_reached = Contact.objects.filter(form_tag=self.save_as_tag).count() >= 60
+
+    #    counts = {k: 0 for k in self.start_workshops}
+    #    for contact in Contact.objects.filter(form_tag=self.save_as_tag):
+    #        for workshop in self.start_workshops:
+    #            if contact.body.get('w_%s' % workshop, False): counts[workshop] += 1
+    #    some_full = False
+    #    for k, v in counts.items():
+    #        if v >= 60:
+    #            some_full = True
+    #            if 'w_%s' % k in self.fields:
+    #                del self.fields['w_%s' % k]
+    #            if k in self.workshops:
+    #                self.workshops.remove(k)
+    #    if not some_full:
+    #        self.fields['_header'].help_text = None
+
+    #def clean(self):
+    #    any_workshop = False
+    #    for w in self.start_workshops:
+    #        if self.cleaned_data.get('w_%s' % w):
+    #            any_workshop = True
+    #    if not any_workshop:
+    #        self._errors['_header'] = [_("Please choose at least one workshop.")]
+    #    return self.cleaned_data
+