diff options
author | tr4ck3ur <tr4ck3ur@style-python.fr> | 2015-02-13 02:29:37 +0100 |
---|---|---|
committer | tr4ck3ur <tr4ck3ur@style-python.fr> | 2015-02-13 02:29:37 +0100 |
commit | fa4a9859c57de6b7894ff4b84b75d242f2b796f5 (patch) | |
tree | c6ec352fdd634ca3e645cb2db897a127fcff299b /jm2l/forms.py | |
download | jm2l-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.py | 498 |
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 |