aboutsummaryrefslogtreecommitdiffstats
path: root/jm2l/forms.py
diff options
context:
space:
mode:
authortr4ck3ur <tr4ck3ur@style-python.fr>2015-02-13 02:29:37 +0100
committertr4ck3ur <tr4ck3ur@style-python.fr>2015-02-13 02:29:37 +0100
commitfa4a9859c57de6b7894ff4b84b75d242f2b796f5 (patch)
treec6ec352fdd634ca3e645cb2db897a127fcff299b /jm2l/forms.py
downloadjm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.tar.gz
jm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.tar.bz2
jm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.tar.xz
jm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.zip
first drop
Diffstat (limited to 'jm2l/forms.py')
-rw-r--r--jm2l/forms.py498
1 files changed, 498 insertions, 0 deletions
diff --git a/jm2l/forms.py b/jm2l/forms.py
new file mode 100644
index 0000000..7cf076f
--- /dev/null
+++ b/jm2l/forms.py
@@ -0,0 +1,498 @@
+# -*- coding: utf8 -*-
+from wtforms import Form, BooleanField, TextField, TextAreaField, SelectField, SubmitField, validators, FieldList
+#import .ExtWforms
+from .ExtWtforms import MySelectField
+from wtforms import HiddenField, DecimalField, DateTimeField, FormField, FileField, DateField
+from wtforms.validators import ValidationError
+from datetime import datetime
+strip_filter = lambda x: x.strip() if x else None
+from wtforms.csrf.session import SessionCSRF
+from datetime import timedelta
+
+class MyBaseForm(Form):
+ class Meta:
+ csrf = True
+ csrf_class = SessionCSRF
+ csrf_secret = b'lJDQtOAMC2qe89doIn8u3Mch_DgeLSKO'
+ csrf_time_limit = timedelta(minutes=20)
+
+class BlogCreateForm(MyBaseForm):
+ title = TextField('Entry title', [validators.Length(min=1, max=255)],
+ filters=[strip_filter])
+ body = TextAreaField('Entry body', [validators.Length(min=1)],
+ filters=[strip_filter])
+
+class BlogUpdateForm(BlogCreateForm):
+ id = HiddenField()
+
+
+PLACE_TYPE = [('Aeroport', u'Aéroport'), ('Gare','Gare'), ('JM2L','JM2L'),
+ ('Hotel',u'Hôtel'), ('Habitant','Habitant'),
+ ('Restaurant','Restaurant'), ('Autres','Autres')]
+
+TIERS_ROLE = [('Exposant','Exposant'), ('Sponsor','Sponsor'),
+ ('Donateur','Donateur')]
+
+EVENT_TYPE = ['Stand', 'Table ronde', 'Atelier', 'Concert', 'Conference', 'Repas']
+
+CONF_DURATION = [ (15,u'Lighting talk ( 5 min)'),
+ (30,u'Conférence (20 min)'),
+ (60,u'Conférence (50 min)'),
+ (90,u'Conférence (75 min)'),]
+
+ATELIER_DURATION = [ (15,u'Lighting talk ( 5 min)'),
+ (30,u'Conférence (20 min)'),
+ (60,u'Conférence (50 min)'),
+ (90,u'Conférence (75 min)'),]
+
+
+class StaffArea(MyBaseForm):
+ uid = HiddenField()
+ name = TextField(u'Pôle')
+ description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
+ filters=[strip_filter]
+ )
+
+class StaffTasks(MyBaseForm):
+ name = TextField(u'Nom de la tâche')
+ area_uid = SelectField(u'Pôle concerné', coerce=int )
+ due_date = DateField(u'Date prévue', format='%d/%m/%Y')
+ closed_by = SelectField(u'Assigné à', coerce=int )
+ description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
+ filters=[strip_filter])
+
+class EditStaffTasks(StaffTasks):
+ uid = HiddenField()
+
+class DossPresse(MyBaseForm):
+ year_uid = HiddenField()
+ doss_presse = TextAreaField('Dossier de Presse', [validators.optional(), validators.Length(max=1000000)],
+ filters=[strip_filter])
+
+class TiersMember(MyBaseForm):
+ class Meta:
+ csrf = False
+
+ year_uid = SelectField(u'Année', coerce=int, choices=zip(range(2006,2016),range(2006,2016)))
+ user_uid = TextField(u'user')
+ role = TextField(u'Role')
+
+class TiersChoice(MyBaseForm):
+ class Meta:
+ csrf = False
+
+ year_uid = HiddenField()
+ user_uid = HiddenField()
+ tiers_uid = TextField(u'Entité')
+ role = TextField(u'Role')
+
+class AddIntervenant(MyBaseForm):
+ class Meta:
+ csrf = False
+
+ event_uid = HiddenField()
+ nom = TextField(u'Nom', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+ prenom = TextField(u'Prénom', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+ email = TextField(u'Email', [validators.required(),
+ validators.length(max=10),
+ validators.Email(message='Ceci ne ressemble pas à une adresse valide')],
+ description=u"Afin d'éviter la duplication d'information et les doublons inutile, "+
+ u"pensez d'abord à lui demander de confirmer le mail qu'il a utilisé lors de "+
+ u"son inscription sur le site.")
+ add = SubmitField('Ajouter des intervenants')
+
+class InterventionForm(MyBaseForm):
+ event_type = HiddenField()
+ for_year = HiddenField()
+ start_time = HiddenField()
+ end_time = HiddenField()
+
+ name = TextField(u'Le nom de votre ',
+ [validators.DataRequired(u'Vous devez spécifier un nom pour votre intérvention'),
+ validators.Length(min=1, max=80, message='entre 1 et 80 car')],
+ filters=[strip_filter])
+
+ description = TextAreaField(u'Décrivez ici quelques détails à propos de votre intervention ',
+ [validators.Optional(), validators.Length(max=1000000)],
+ filters=[strip_filter]
+ )
+
+class ConfCreateForm(InterventionForm):
+ salle_uid = SelectField(u'Salle', coerce=int,
+ description=u"Choisissez ici la salle en fonction "
+ u"du nombres de personnes potentiellement intéressé par votre intervention "+
+ u"l'organisation se réserve le droit de changer la salle (avec votre accord)."
+
+ )
+ start_sel = SelectField(u'Début', coerce=int,
+ description=u"C'est une heure indicative correspondant au mieux à vos préférences "+
+ u"personnelles. Vous pouvez prendre un créneau horaire déjà réservé si vous avez des contraintes "
+ u"particulières. L'équipe des JM2L mettra à disposition plus de salle si nécessaire. En cas de conflit,"+
+ u"l'organisation se réserve le droit de changer la salle et l'heure avec votre accord."
+ )
+ duration = SelectField(u'Durée', coerce=int,
+ description=u"Précisez ici la durée de votre intervention"
+ )
+
+
+class ConfUpdateForm(ConfCreateForm):
+ uid = HiddenField()
+
+class PlaceCreateForm(MyBaseForm):
+
+ place_type = SelectField('Type', choices=PLACE_TYPE)
+
+ display_name = TextField(u'Nom affiché', [validators.Length(min=1, max=20)],
+ filters=[strip_filter])
+ name = TextField('Nom Complet', [validators.Length(min=1, max=80)],
+ filters=[strip_filter])
+ gps_coord = TextField(u'Coordonnées GPS', [validators.Length(max=30)],
+ filters=[strip_filter])
+ adresse = TextAreaField('Adresse', [validators.Length(max=100)],
+ filters=[strip_filter])
+ codePostal = TextField('Code Postal', [validators.Length(max=5)],
+ filters=[strip_filter])
+ ville = TextField('Ville', [validators.Length(max=40)],
+ filters=[strip_filter])
+ website = TextField('Site Web', [validators.Length(max=100)],
+ filters=[strip_filter])
+ description = TextAreaField('Description',
+ filters=[strip_filter])
+
+ created_by = HiddenField()
+
+class PlaceUpdateForm(PlaceCreateForm):
+ place_id = HiddenField()
+
+
+def captcha_check(form, field):
+ if form.meta.csrf_context.get('Captcha')!=field.data:
+ raise ValidationError(u"la vérification captcha est invalide.")
+
+
+
+class UserRegisterForm(MyBaseForm):
+
+ nom = TextField(u'Nom', [
+ validators.Length(max=80, message=u"80 car. maximum"),
+ validators.required(message=u"Ce champ est obligatoire") ],
+ filters=[strip_filter]
+ )
+ prenom = TextField(u'Prénom', [
+ validators.Length(max=80, message=u"80 car. maximum"),
+ validators.required(message=u"Ce champ est obligatoire"),
+ validators.Length(max=80)], filters=[strip_filter]
+ )
+ mail = TextField(u'Adresse électronique', [
+ validators.required(message=u"Ce champ est obligatoire"),
+ validators.Email(message=u"Essayez aussi avec une adresse e-mail valide"),
+ validators.Length(max=100)],
+ filters=[strip_filter],
+ description = u"Une adresse e-mail valide." +
+ u"Cette adresse ne sera pas rendue publique, "+
+ u"et ne sera pas divulgué à des tiers."
+ )
+ captcha = TextField(u'Captcha', [validators.Length(max=8), captcha_check],
+ filters=[strip_filter]
+ )
+
+class ProfilForm(MyBaseForm):
+ id = HiddenField()
+ user_id = HiddenField()
+ nom = TextField(u'Nom', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+ prenom = TextField(u'Prénom', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+ pseudo = TextField(u'Pseudo', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = "Votre pseudo d'usage sur la toile."
+ )
+ mail = TextField(u'Adresse électronique', [validators.optional(), validators.Email(), validators.Length(max=100)],
+ filters=[strip_filter],
+ description = u"Une adresse e-mail valide. Tous les messages de ce système" +
+ u"seront envoyés à cette adresse. Cette adresse ne sera pas rendue publique,"+
+ u"et ne sera utilisée que si vous désirez obtenir un nouveau mot de passe ou" +
+ u"recevoir personnellement certaines nouvelles ou avertissements."
+ )
+
+ phone = TextField(u'Mobile', [validators.optional(), validators.Length(max=10),
+ validators.Regexp("\d+", message=u"Le numéro de téléphone mobile ne doit contenir que des chiffres")],
+ filters=[strip_filter],
+ description = u"Un numéro de mobile valide. Afin de pouvoir rester en" +
+ u"contact avec les personne de l'organisation, et pour vos échanges. " +
+ u"Ce numéro ne sera pas publié, et ne sera utilisé que si " +
+ u"vous désirez recevoir personnellement certaines nouvelles ou alertes."
+ )
+
+ website = TextField(u'Site web', [validators.optional(), validators.URL(), validators.Length(max=100)],
+ filters=[strip_filter],
+ description = "Renseignez ici votre site Web."
+ )
+
+ gpg_key = TextAreaField(u'Ma clé GPG',
+ [validators.optional(), validators.Length(max=9000)],
+ filters=[strip_filter],
+ description = u"Vous pouvez insérer votre clé GPG publique pour " +
+ u"échanger des données sécurisées."
+ )
+ soc_link = TextAreaField('Mes autres identifiants',
+ [validators.optional(), validators.Length(max=1000000)],
+ filters=[strip_filter],
+ description = u"Vous pouvez insérer ici d'autres identifiants " +
+ u"permettant aux autres de vous retrouver sur la toile (IRC, jabber, réseaux sociaux etc)."
+ )
+
+ bio = TextAreaField('Biographie', [validators.optional(), validators.Length(max=1000000)],
+ filters=[strip_filter]
+ )
+
+ tiersship = FieldList(FormField(TiersChoice))
+
+
+class DateStartConfidenceForm(MyBaseForm):
+ ConfidenceLevel = [
+ ("0",u"exactement à"),
+ ("1",u"approximativement à"),
+ ("2",u"à peu près (5 à 15 min) vers"),
+ ("3",u"à une vache près (1h) vers")
+ ]
+ DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
+ Day = SelectField(u'Jour', choices=DayChoice )
+ Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
+ Hour = TextField(u'Heure', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ start_time = HiddenField()
+
+class ItineraireForm(Form):
+ start_place = SelectField(u'En partant de', coerce=int)
+ arrival_place = SelectField(u'et à destination de', coerce=int)
+ itin_id = HiddenField()
+
+class AddItineraireForm(Form):
+
+ itin = FormField(ItineraireForm)
+ distance = DecimalField(u'Distance', [validators.Length(min=1, max=4)],
+ filters=[strip_filter])
+ duration = DateTimeField(u'Durée', [validators.Length(min=4, max=5)],
+ filters=[strip_filter])
+ price = DecimalField(u'Prix approx.', [validators.Length(min=1, max=5)],
+ filters=[strip_filter])
+ tr_pied = BooleanField(u'à pied')
+ tr_velo = BooleanField(u'à vélo')
+ tr_moto = BooleanField(u'à moto')
+ tr_voiture = BooleanField(u'en voiture')
+ tr_taxi = BooleanField(u'en taxi')
+ tr_bus = BooleanField(u'en bus')
+ tr_avion = BooleanField(u'en avion')
+ description = TextAreaField(u'Description de l\'itinéraire')
+
+class AddMember(MyBaseForm):
+ tiers_uid = HiddenField()
+ nom = TextField(u'Nom', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+ prenom = TextField(u'Prénom', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+ email = TextField(u'Email', [validators.required(),
+ validators.length(max=10),
+ validators.Email(message='Ceci ne ressemble pas à une adresse valide')],
+ description=u"Afin d'éviter la duplication d'information et les doublons inutile, "+
+ u"pensez d'abord à lui demander de confirmer le mail qu'il a utilisé lors de "+
+ u"son inscription sur le site.")
+ add = SubmitField('Ajouter des membres')
+
+class TiersForm(MyBaseForm):
+ name = TextField(u'Nom', [validators.Length(max=100)],
+ filters=[strip_filter],
+ description = u"Les espaces sont autorisés, la ponctuation n'est " +
+ u"pas autorisée à l'exception des points, traits d'union, " +
+ u"apostrophes et tirets bas."
+ )
+
+ tiers_type = MySelectField('Nature', coerce=int)
+
+ website = TextField(u'Site web', [validators.optional(), validators.URL(), validators.Length(max=100)],
+ filters=[strip_filter],
+ description = "Renseignez ici le site Web."
+ )
+
+ description = TextAreaField('Descriptif',
+ [validators.optional(), validators.Length(max=1000000)],
+ filters=[strip_filter],
+ description = u"Vous pouvez insérer les détails"
+ )
+
+ membership = FieldList(FormField(TiersMember))
+
+class UpdateTiersForm(TiersForm):
+ uid = HiddenField()
+ tiers_id = HiddenField()
+
+
+class ExchCateg(MyBaseForm):
+ exch_type = HiddenField()
+ exch_subtype = TextField(u'Catégorie', [validators.Length(max=80)],
+ filters=[strip_filter],
+ description = "Le nom de la categorie"
+ )
+ description = TextAreaField('Description',
+ filters=[strip_filter])
+
+class UpdateExchangeForm(MyBaseForm):
+ exch_id = HiddenField()
+
+class AskCForm(ItineraireForm):
+ ConfidenceLevel = [
+ ("0",u"exactement à"),
+ ("1",u"approximativement à"),
+ ("2",u"à peu près (5 à 15 min) vers"),
+ ("3",u"à une vache près (1h) vers")
+ ]
+ DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
+ Day_start = SelectField(u'Jour', choices=DayChoice )
+ Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
+ Hour_start = TextField(u'Heure', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ start_time = HiddenField()
+ start_place = SelectField(u'En partant de', coerce=int)
+ arrival_place = SelectField(u'et à destination de', coerce=int)
+ itin_id = HiddenField()
+
+class AskHForm(MyBaseForm):
+ DayChoice = [("4",u"Jeudi à Vendredi"), ("5",u"Vendredi à Samedi"), ("6",u"Samedi à Dimanche"), ("0",u"Dimanche à Lundi")]
+ Day_start = SelectField(u'Pour la nuit de', choices=DayChoice )
+ start_time = HiddenField()
+ description = TextAreaField(u'Description de vos contraintes éventuelles', filters=[strip_filter],
+ description = u"Décrivez ici vos souhaits et éventuellement "
+ + u"les contraintes à prendre en compte. N'hésitez pas à donner des détails."
+ )
+
+class AskMForm(MyBaseForm):
+ DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
+ Day_start = SelectField(u"à partir de", choices=DayChoice )
+ Hour_start = TextField(u'vers', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ start_time = HiddenField()
+ Day_end = SelectField(u"Jusqu'à", choices=DayChoice )
+ Hour_end = TextField(u'vers', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ end_time = HiddenField()
+ exch_categ = SelectField(u'Catégorie de matériel', coerce=int,
+ description = u"Choisissez une catégorie de bien"
+ )
+ description = TextAreaField(u'Description du bien', filters=[strip_filter],
+ description = u"Décrivez ici les biens que vous souhaitez"
+ + u"échanger. N'hésitez pas à donner des détails."
+ )
+
+class PropCForm(ItineraireForm):
+ ConfidenceLevel = [
+ ("0",u"exactement à"),
+ ("1",u"approximativement à"),
+ ("2",u"à peu près (5 à 15 min) vers"),
+ ("3",u"à une vache près (1h) vers")
+ ]
+ DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
+ Day_start = SelectField(u'Jour', choices=DayChoice )
+ Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
+ Hour_start = TextField(u'Heure', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ start_time = HiddenField()
+ start_place = SelectField(u'En partant de', coerce=int)
+ arrival_place = SelectField(u'et à destination de', coerce=int)
+ itin_id = HiddenField()
+
+class PropHForm(MyBaseForm):
+ DayChoice = [("4",u"Jeudi à Vendredi"), ("5",u"Vendredi à Samedi"), ("6",u"Samedi à Dimanche"), ("0",u"Dimanche à Lundi")]
+ Day_start = SelectField(u'Pour la nuit de', choices=DayChoice )
+ start_time = HiddenField()
+ exch_categ = SelectField(u'Type de couchage', coerce=int,
+ description = u"Indiquez ici le type de couchage proposé")
+ description = TextAreaField(u'Quelques mots autour du logement que vous proposez', filters=[strip_filter],
+ description = u"Décrivez ici quelques détails sur le logement que vous souhaitez "
+ + u"proposer, les contraintes à prendre en compte. N'hésitez pas à donner des détails."
+ )
+ place_id = SelectField(u'Emplacement', coerce=int,
+ description = u"Indiquez ici une des adresses que vous avez proposé")
+
+class PropMForm(MyBaseForm):
+ DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
+ Day_start = SelectField(u"à partir de", choices=DayChoice )
+ Hour_start = TextField(u'vers', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ start_time = HiddenField()
+ Day_end = SelectField(u"Jusqu'a ", choices=DayChoice )
+ Hour_end = TextField(u'vers', [validators.Length(max=5,
+ message=u"doit faire au maximum 5 caractères"),
+ validators.Regexp("\d+:\d+",
+ message=u"doit être sous la forme HH:MM")],
+ filters=[strip_filter])
+ end_time = HiddenField()
+ exch_categ = SelectField(u'Catégorie de matériel', coerce=int,
+ description = u"Choisissez une catégorie de bien matériel"
+ )
+ description = TextAreaField(u'Ajoutez quelques mots autour du matériel que vous proposez', filters=[strip_filter],
+ description = u"Décrivez ici quelques détails sur le matériel que vous souhaitez "
+ + u"proposer. N'hésitez pas à donner des détails."
+ )
+
+class UpdateAskCForm(AskCForm, UpdateExchangeForm):
+ pass
+
+class UpdateAskHForm(AskHForm, UpdateExchangeForm):
+ pass
+
+class UpdateAskMForm(AskMForm, UpdateExchangeForm):
+ pass
+
+class UpdatePropCForm(PropCForm, UpdateExchangeForm):
+ pass
+
+class UpdatePropHForm(PropHForm, UpdateExchangeForm):
+ pass
+
+class UpdatePropMForm(PropMForm, UpdateExchangeForm):
+ pass