Le repo des sources pour le site web des JM2L
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

569 lines
26 KiB

  1. # -*- coding: utf8 -*-
  2. from wtforms import Form, BooleanField, TextField, TextAreaField, SelectField
  3. from wtforms import SubmitField, validators, FieldList, PasswordField
  4. #import .ExtWforms
  5. from .ExtWtforms import MySelectField
  6. from wtforms import HiddenField, DecimalField, DateTimeField, FormField, DateField
  7. from wtforms.validators import ValidationError
  8. strip_filter = lambda x: x.strip() if x else None
  9. from wtforms.csrf.session import SessionCSRF
  10. from datetime import timedelta
  11. class MyBaseForm(Form):
  12. class Meta:
  13. csrf = True
  14. csrf_class = SessionCSRF
  15. csrf_secret = b'lJDQtOAMC2qe89doIn8u3Mch_DgeLSKO'
  16. csrf_time_limit = timedelta(minutes=20)
  17. class BlogCreateForm(MyBaseForm):
  18. title = TextField('Entry title', [validators.Length(min=1, max=255)],
  19. filters=[strip_filter])
  20. body = TextAreaField('Entry body', [validators.Length(min=1)],
  21. filters=[strip_filter])
  22. class BlogUpdateForm(BlogCreateForm):
  23. id = HiddenField()
  24. PLACE_TYPE = [('Aeroport', u'Aéroport'), ('Gare','Gare'), ('JM2L','JM2L'),
  25. ('Hotel',u'Hôtel'), ('Habitant','Habitant'),
  26. ('Restaurant','Restaurant'), ('Autres','Autres')]
  27. TIERS_ROLE = [('Exposant','Exposant'), ('Sponsor','Sponsor'),
  28. ('Donateur','Donateur')]
  29. YESNO = [("0","Non"), ("1","Oui")]
  30. EVENT_TYPE = ['Stand', 'Table ronde', 'Atelier', 'Concert', 'Conference', 'Repas']
  31. CONF_DURATION = [ (15,u'Lighting talk ( 5 min)'),
  32. (30,u'Conférence (20 min)'),
  33. (60,u'Conférence (50 min)'),
  34. (90,u'Conférence (75 min)'),]
  35. ATELIER_DURATION = [ (15,u'Lighting talk ( 5 min)'),
  36. (30,u'Conférence (20 min)'),
  37. (60,u'Conférence (50 min)'),
  38. (90,u'Conférence (75 min)'),]
  39. class StaffArea(MyBaseForm):
  40. name = TextField(u'Pôle')
  41. description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
  42. filters=[strip_filter]
  43. )
  44. class EditStaffArea(StaffArea):
  45. uid = HiddenField()
  46. class StaffTasks(MyBaseForm):
  47. name = TextField(u'Nom de la tâche', [validators.Required()])
  48. area_uid = SelectField(u'Pôle concerné', coerce=int )
  49. closed_by = SelectField(u'Assigné à', coerce=int )
  50. due_date = DateField(u'Date prévue', format='%d/%m/%Y')
  51. description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
  52. filters=[strip_filter])
  53. class EditStaffTasks(StaffTasks):
  54. uid = HiddenField()
  55. class DossPresse(MyBaseForm):
  56. year_uid = HiddenField()
  57. doss_presse = TextAreaField('Dossier de Presse', [validators.optional(), validators.Length(max=1000000)],
  58. filters=[strip_filter])
  59. class IndexForm(MyBaseForm):
  60. year_uid = HiddenField()
  61. description = TextAreaField('Index', [validators.optional(), validators.Length(max=1000000)],
  62. filters=[strip_filter])
  63. class TiersMember(MyBaseForm):
  64. class Meta:
  65. csrf = False
  66. year_uid = SelectField(u'Année', coerce=int, choices=zip(range(2006,2016),range(2006,2016)))
  67. user_uid = TextField(u'user')
  68. role = TextField(u'Role')
  69. class TiersRole(MyBaseForm):
  70. class Meta:
  71. csrf = False
  72. year_uid = SelectField(u'Année', coerce=int, choices=zip(range(2006,2016),range(2006,2016)))
  73. tiers_role = SelectField(u'Role', choices=TIERS_ROLE)
  74. class TiersChoice(MyBaseForm):
  75. class Meta:
  76. csrf = False
  77. year_uid = HiddenField()
  78. user_uid = HiddenField()
  79. tiers_uid = TextField(u'Entité')
  80. role = TextField(u'Role')
  81. class AddIntervenant(MyBaseForm):
  82. class Meta:
  83. csrf = False
  84. event_uid = HiddenField()
  85. intervenant = SelectField(u'Intervenant', coerce=int )
  86. class AddTiers(MyBaseForm):
  87. class Meta:
  88. csrf = False
  89. event_uid = HiddenField()
  90. tiers = SelectField(u'Entité', coerce=int )
  91. class ConfCreateForm(MyBaseForm):
  92. event_type = HiddenField()
  93. for_year = HiddenField()
  94. start_time = HiddenField()
  95. end_time = HiddenField()
  96. start_sel = SelectField(u'Début', coerce=int,
  97. description=u"C'est une heure indicative correspondant au mieux à vos préférences "+
  98. u"personnelles. Vous pouvez prendre un créneau horaire déjà réservé si vous avez des contraintes "
  99. u"particulières. L'équipe des JM2L mettra à disposition plus de salle si nécessaire. En cas de conflit,"+
  100. u"l'organisation se réserve le droit de changer la salle et l'heure avec votre accord."
  101. )
  102. duration = SelectField(u'Durée', coerce=int,
  103. description=u"Précisez ici la durée de votre intervention"
  104. )
  105. salle_uid = SelectField(u'Salle', coerce=int,
  106. description=u"Choisissez ici la salle en fonction "
  107. u"du nombres de personnes potentiellement intéressé par votre intervention "+
  108. u"l'organisation se réserve le droit de changer la salle (avec votre accord)."
  109. )
  110. name = TextField(u'Le nom de votre ',
  111. [validators.DataRequired(u'Vous devez spécifier un nom pour votre intérvention'),
  112. validators.Length(min=1, max=80, message='entre 1 et 80 car')],
  113. filters=[strip_filter])
  114. description = TextAreaField(u'Décrivez ici quelques détails à propos de votre intervention ',
  115. [validators.Optional(), validators.Length(max=1000000)],
  116. filters=[strip_filter]
  117. )
  118. class ConfUpdateForm(ConfCreateForm):
  119. uid = HiddenField()
  120. class SalleForm(MyBaseForm):
  121. year_uid = SelectField(u'Année', coerce=int)
  122. phy_salle_id = SelectField('Salle Physique', coerce=int)
  123. place_type = SelectField('Type', choices=[('Conference','Conference'),
  124. ('Stand','Stand'), ('Ateliers','Ateliers'), ('Autres','Autres') ])
  125. name = TextField('Nom de la salle', [validators.Length(min=1, max=40)],
  126. filters=[strip_filter])
  127. description = TextAreaField('Description',
  128. filters=[strip_filter])
  129. class EditSalleForm(SalleForm):
  130. salle_id = HiddenField()
  131. class SallePhyForm(MyBaseForm):
  132. name = TextField('Nom de la salle', [validators.Length(min=1, max=40)],
  133. filters=[strip_filter])
  134. nb_places = TextField('Nombre de places', [validators.Length(max=4)])
  135. description = TextAreaField('Description',
  136. filters=[strip_filter])
  137. class EditSallePhyForm(SallePhyForm):
  138. uid = HiddenField()
  139. class PlaceCreateForm(MyBaseForm):
  140. place_type = SelectField('Type', choices=PLACE_TYPE)
  141. display_name = TextField(u'Nom affiché', [validators.Length(min=1, max=20)],
  142. filters=[strip_filter])
  143. name = TextField('Nom Complet', [validators.Length(min=1, max=80)],
  144. filters=[strip_filter])
  145. gps_coord = TextField(u'Coordonnées GPS', [validators.Length(max=30)],
  146. filters=[strip_filter])
  147. adresse = TextAreaField('Adresse', [validators.Length(max=100)],
  148. filters=[strip_filter])
  149. codePostal = TextField('Code Postal', [validators.Length(max=5)],
  150. filters=[strip_filter])
  151. ville = TextField('Ville', [validators.Length(max=40)],
  152. filters=[strip_filter])
  153. website = TextField('Site Web', [validators.Length(max=100)],
  154. filters=[strip_filter])
  155. description = TextAreaField('Description',
  156. filters=[strip_filter])
  157. created_by = HiddenField()
  158. class PlaceUpdateForm(PlaceCreateForm):
  159. place_id = HiddenField()
  160. def captcha_check(form, field):
  161. if form.meta.csrf_context.get('Captcha')!=field.data:
  162. raise ValidationError(u"la vérification captcha est invalide.")
  163. class UserPasswordForm(MyBaseForm):
  164. uid = HiddenField()
  165. password = PasswordField("Mot de passe",[
  166. validators.Length(max=128, message=u"128 car. maximum"),
  167. validators.required(message=u"Ce champ est obligatoire"),
  168. validators.EqualTo('confirm', message=u'Les password ne sont pas équivalents') ],
  169. filters=[strip_filter]
  170. )
  171. confirm = PasswordField('Confirmez')
  172. class UserRegisterForm(MyBaseForm):
  173. nom = TextField(u'Nom', [
  174. validators.Length(max=80, message=u"80 car. maximum"),
  175. validators.required(message=u"Ce champ est obligatoire") ],
  176. filters=[strip_filter]
  177. )
  178. prenom = TextField(u'Prénom', [
  179. validators.Length(max=80, message=u"80 car. maximum"),
  180. validators.required(message=u"Ce champ est obligatoire"),
  181. validators.Length(max=80)], filters=[strip_filter]
  182. )
  183. mail = TextField(u'Adresse électronique', [
  184. validators.required(message=u"Ce champ est obligatoire"),
  185. validators.Email(message=u"Essayez aussi avec une adresse e-mail valide"),
  186. validators.Length(max=100)],
  187. filters=[strip_filter],
  188. description = u"Une adresse e-mail valide." +
  189. u"Cette adresse ne sera pas rendue publique, "+
  190. u"et ne sera pas divulguée à des tiers."
  191. )
  192. captcha = TextField(u'Captcha', [validators.Length(max=8), captcha_check],
  193. filters=[strip_filter]
  194. )
  195. class ProfilForm(MyBaseForm):
  196. id = HiddenField()
  197. user_id = HiddenField()
  198. nom = TextField(u'Nom', [validators.Length(max=80)],
  199. filters=[strip_filter],
  200. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  201. u"pas autorisée à l'exception des points, traits d'union, " +
  202. u"apostrophes et tirets bas."
  203. )
  204. prenom = TextField(u'Prénom', [validators.Length(max=80)],
  205. filters=[strip_filter],
  206. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  207. u"pas autorisée à l'exception des points, traits d'union, " +
  208. u"apostrophes et tirets bas."
  209. )
  210. pseudo = TextField(u'Pseudo', [validators.Length(max=80)],
  211. filters=[strip_filter],
  212. description = "Votre pseudo d'usage sur la toile."
  213. )
  214. mail = TextField(u'Adresse électronique', [validators.optional(), validators.Email(), validators.Length(max=100)],
  215. filters=[strip_filter],
  216. description = u"Une adresse e-mail valide. Tous les messages de ce système" +
  217. u"seront envoyés à cette adresse. Cette adresse ne sera pas rendue publique,"+
  218. u"et ne sera utilisée que si vous désirez obtenir un nouveau mot de passe ou" +
  219. u"recevoir personnellement certaines nouvelles ou avertissements."
  220. )
  221. phone = TextField(u'Mobile', [validators.optional(), validators.Length(max=10),
  222. validators.Regexp("\d+", message=u"Le numéro de téléphone mobile ne doit contenir que des chiffres")],
  223. filters=[strip_filter],
  224. description = u"Un numéro de mobile valide. Afin de pouvoir rester en" +
  225. u"contact avec les personne de l'organisation, et pour vos échanges. " +
  226. u"Ce numéro ne sera pas publié, et ne sera utilisé que si " +
  227. u"vous désirez recevoir personnellement certaines nouvelles ou alertes."
  228. )
  229. website = TextField(u'Site web', [validators.optional(), validators.URL(), validators.Length(max=100)],
  230. filters=[strip_filter],
  231. description = "Renseignez ici votre site Web."
  232. )
  233. gpg_key = TextAreaField(u'Ma clé GPG',
  234. [validators.optional(), validators.Length(max=9000)],
  235. filters=[strip_filter],
  236. description = u"Vous pouvez insérer votre clé GPG publique pour " +
  237. u"échanger des données sécurisées."
  238. )
  239. soc_link = TextAreaField('Mes autres identifiants',
  240. [validators.optional(), validators.Length(max=1000000)],
  241. filters=[strip_filter],
  242. description = u"Vous pouvez insérer ici d'autres identifiants " +
  243. u"permettant aux autres de vous retrouver sur la toile (IRC, jabber, réseaux sociaux etc)."
  244. )
  245. bio = TextAreaField('Biographie', [validators.optional(), validators.Length(max=1000000)],
  246. filters=[strip_filter]
  247. )
  248. tiersship = FieldList(FormField(TiersChoice))
  249. class MiamForm(MyBaseForm):
  250. RepasVendredi = SelectField(u'Je viens au dîner convivial vendredi soir',
  251. choices=YESNO,
  252. description = u"L'organisation réserve le " +
  253. u"restaurant pour ce dîner convivial. De petites " +
  254. u"animations vous seront proposées. " +
  255. u"Il nous faut savoir si on vous réserve une place !"
  256. )
  257. RepasSamediMidi = SelectField(u'Je déjeune sur place samedi midi', choices=YESNO )
  258. RepasSamediSoir = SelectField(u'Je viens au repas de clôture samedi soir', choices=YESNO,
  259. description = u"L'organisation réserve le " +
  260. u"restaurant pour le dîner de clôture. De petites " +
  261. u"animations vous seront proposées. " +
  262. u"Il nous faut savoir si on vous réserve une place !"
  263. )
  264. Allergies = TextAreaField(u'Allergies', [validators.Length(max=100)],
  265. filters=[strip_filter],
  266. description = u"Entrez ici vos allergies éventuelles, " +
  267. u"Ce que votre organisme ne supporte absolument pas." +
  268. u"L'organisation fera alors en sorte de les éviter ou " +
  269. u"de les identifier explicitement."
  270. )
  271. Contraintes = TextAreaField(u'Contraintes', [validators.Length(max=100)],
  272. filters=[strip_filter],
  273. description = u"Entrez ici ce que vous n'aimez pas, " +
  274. u"Cela ne consititue pas pour vous un allérgène, " +
  275. u"mais vous n'aimez simplement pas. (Gluten / Laitage etc ...)"
  276. )
  277. class DateStartConfidenceForm(MyBaseForm):
  278. ConfidenceLevel = [
  279. ("0",u"exactement à"),
  280. ("1",u"approximativement à"),
  281. ("2",u"à peu près (5 à 15 min) vers"),
  282. ("3",u"à une vache près (1h) vers")
  283. ]
  284. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  285. Day = SelectField(u'Jour', choices=DayChoice )
  286. Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
  287. Hour = TextField(u'Heure', [validators.Length(max=5,
  288. message=u"doit faire au maximum 5 caractères"),
  289. validators.Regexp("\d+:\d+",
  290. message=u"doit être sous la forme HH:MM")],
  291. filters=[strip_filter])
  292. start_time = HiddenField()
  293. class ItineraireForm(Form):
  294. start_place = SelectField(u'En partant de', coerce=int)
  295. arrival_place = SelectField(u'et à destination de', coerce=int)
  296. itin_id = HiddenField()
  297. class AddItineraireForm(Form):
  298. itin = FormField(ItineraireForm)
  299. distance = DecimalField(u'Distance', [validators.Length(min=1, max=4)],
  300. filters=[strip_filter])
  301. duration = DateTimeField(u'Durée', [validators.Length(min=4, max=5)],
  302. filters=[strip_filter])
  303. price = DecimalField(u'Prix approx.', [validators.Length(min=1, max=5)],
  304. filters=[strip_filter])
  305. tr_pied = BooleanField(u'à pied')
  306. tr_velo = BooleanField(u'à vélo')
  307. tr_moto = BooleanField(u'à moto')
  308. tr_voiture = BooleanField(u'en voiture')
  309. tr_taxi = BooleanField(u'en taxi')
  310. tr_bus = BooleanField(u'en bus')
  311. tr_avion = BooleanField(u'en avion')
  312. description = TextAreaField(u'Description de l\'itinéraire')
  313. class AddMember(MyBaseForm):
  314. tiers_uid = HiddenField()
  315. nom = TextField(u'Nom', [validators.Length(max=80)],
  316. filters=[strip_filter],
  317. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  318. u"pas autorisée à l'exception des points, traits d'union, " +
  319. u"apostrophes et tirets bas."
  320. )
  321. prenom = TextField(u'Prénom', [validators.Length(max=80)],
  322. filters=[strip_filter],
  323. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  324. u"pas autorisée à l'exception des points, traits d'union, " +
  325. u"apostrophes et tirets bas."
  326. )
  327. email = TextField(u'Email', [validators.required(),
  328. validators.length(max=10),
  329. validators.Email(message='Ceci ne ressemble pas à une adresse valide')],
  330. description=u"Afin d'éviter la duplication d'information et les doublons inutile, "+
  331. u"pensez d'abord à lui demander de confirmer le mail qu'il a utilisé lors de "+
  332. u"son inscription sur le site.")
  333. add = SubmitField('Ajouter des membres')
  334. class TiersForm(MyBaseForm):
  335. name = TextField(u'Nom', [validators.Length(max=100)],
  336. filters=[strip_filter],
  337. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  338. u"pas autorisée à l'exception des points, traits d'union, " +
  339. u"apostrophes et tirets bas."
  340. )
  341. tiers_type = MySelectField('Nature', coerce=int)
  342. website = TextField(u'Site web', [validators.optional(), validators.URL(), validators.Length(max=100)],
  343. filters=[strip_filter],
  344. description = "Renseignez ici le site Web."
  345. )
  346. description = TextAreaField('Descriptif',
  347. [validators.optional(), validators.Length(max=1000000)],
  348. filters=[strip_filter],
  349. description = u"Vous pouvez insérer les détails"
  350. )
  351. membership = FieldList(FormField(TiersMember))
  352. roles = FieldList(FormField(TiersRole))
  353. class UpdateTiersForm(TiersForm):
  354. uid = HiddenField()
  355. tiers_id = HiddenField()
  356. class ExchCateg(MyBaseForm):
  357. exch_type = HiddenField()
  358. exch_subtype = TextField(u'Catégorie', [validators.Length(max=80)],
  359. filters=[strip_filter],
  360. description = "Le nom de la categorie"
  361. )
  362. description = TextAreaField('Description',
  363. filters=[strip_filter])
  364. class UpdateExchangeForm(MyBaseForm):
  365. exch_id = HiddenField()
  366. class AskCForm(ItineraireForm):
  367. ConfidenceLevel = [
  368. ("0",u"exactement à"),
  369. ("1",u"approximativement à"),
  370. ("2",u"à peu près (5 à 15 min) vers"),
  371. ("3",u"à une vache près (1h) vers")
  372. ]
  373. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  374. Day_start = SelectField(u'Jour', choices=DayChoice )
  375. Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
  376. Hour_start = TextField(u'Heure', [validators.Length(max=5,
  377. message=u"doit faire au maximum 5 caractères"),
  378. validators.Regexp("\d+:\d+",
  379. message=u"doit être sous la forme HH:MM")],
  380. filters=[strip_filter])
  381. start_time = HiddenField()
  382. start_place = SelectField(u'En partant de', coerce=int)
  383. arrival_place = SelectField(u'et à destination de', coerce=int)
  384. itin_id = HiddenField()
  385. class AskHForm(MyBaseForm):
  386. DayChoice = [("4",u"Jeudi à Vendredi"), ("5",u"Vendredi à Samedi"), ("6",u"Samedi à Dimanche"), ("0",u"Dimanche à Lundi")]
  387. Day_start = SelectField(u'Pour la nuit de', choices=DayChoice )
  388. start_time = HiddenField()
  389. description = TextAreaField(u'Description de vos contraintes éventuelles', filters=[strip_filter],
  390. description = u"Décrivez ici vos souhaits et éventuellement "
  391. + u"les contraintes à prendre en compte. N'hésitez pas à donner des détails."
  392. )
  393. class AskMForm(MyBaseForm):
  394. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  395. Day_start = SelectField(u"à partir de", choices=DayChoice )
  396. Hour_start = TextField(u'vers', [validators.Length(max=5,
  397. message=u"doit faire au maximum 5 caractères"),
  398. validators.Regexp("\d+:\d+",
  399. message=u"doit être sous la forme HH:MM")],
  400. filters=[strip_filter])
  401. start_time = HiddenField()
  402. Day_end = SelectField(u"Jusqu'à", choices=DayChoice )
  403. Hour_end = TextField(u'vers', [validators.Length(max=5,
  404. message=u"doit faire au maximum 5 caractères"),
  405. validators.Regexp("\d+:\d+",
  406. message=u"doit être sous la forme HH:MM")],
  407. filters=[strip_filter])
  408. end_time = HiddenField()
  409. exch_categ = SelectField(u'Catégorie de matériel', coerce=int,
  410. description = u"Choisissez une catégorie de bien"
  411. )
  412. description = TextAreaField(u'Description du bien', filters=[strip_filter],
  413. description = u"Décrivez ici les biens que vous souhaitez"
  414. + u"échanger. N'hésitez pas à donner des détails."
  415. )
  416. class PropCForm(ItineraireForm):
  417. ConfidenceLevel = [
  418. ("0",u"exactement à"),
  419. ("1",u"approximativement à"),
  420. ("2",u"à peu près (5 à 15 min) vers"),
  421. ("3",u"à une vache près (1h) vers")
  422. ]
  423. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  424. Day_start = SelectField(u'Jour', choices=DayChoice )
  425. Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
  426. Hour_start = TextField(u'Heure', [validators.Length(max=5,
  427. message=u"doit faire au maximum 5 caractères"),
  428. validators.Regexp("\d+:\d+",
  429. message=u"doit être sous la forme HH:MM")],
  430. filters=[strip_filter])
  431. start_time = HiddenField()
  432. start_place = SelectField(u'En partant de', coerce=int)
  433. arrival_place = SelectField(u'et à destination de', coerce=int)
  434. itin_id = HiddenField()
  435. class PropHForm(MyBaseForm):
  436. DayChoice = [("4",u"Jeudi à Vendredi"), ("5",u"Vendredi à Samedi"), ("6",u"Samedi à Dimanche"), ("0",u"Dimanche à Lundi")]
  437. Day_start = SelectField(u'Pour la nuit de', choices=DayChoice )
  438. start_time = HiddenField()
  439. exch_categ = SelectField(u'Type de couchage', coerce=int,
  440. description = u"Indiquez ici le type de couchage proposé")
  441. description = TextAreaField(u'Quelques mots autour du logement que vous proposez', filters=[strip_filter],
  442. description = u"Décrivez ici quelques détails sur le logement que vous souhaitez "
  443. + u"proposer, les contraintes à prendre en compte. N'hésitez pas à donner des détails."
  444. )
  445. place_id = SelectField(u'Emplacement', coerce=int,
  446. description = u"Indiquez ici une des adresses que vous avez proposé")
  447. class PropMForm(MyBaseForm):
  448. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  449. Day_start = SelectField(u"à partir de", choices=DayChoice )
  450. Hour_start = TextField(u'vers', [validators.Length(max=5,
  451. message=u"doit faire au maximum 5 caractères"),
  452. validators.Regexp("\d+:\d+",
  453. message=u"doit être sous la forme HH:MM")],
  454. filters=[strip_filter])
  455. start_time = HiddenField()
  456. Day_end = SelectField(u"Jusqu'a ", choices=DayChoice )
  457. Hour_end = TextField(u'vers', [validators.Length(max=5,
  458. message=u"doit faire au maximum 5 caractères"),
  459. validators.Regexp("\d+:\d+",
  460. message=u"doit être sous la forme HH:MM")],
  461. filters=[strip_filter])
  462. end_time = HiddenField()
  463. exch_categ = SelectField(u'Catégorie de matériel', coerce=int,
  464. description = u"Choisissez une catégorie de bien matériel"
  465. )
  466. description = TextAreaField(u'Ajoutez quelques mots autour du matériel que vous proposez', filters=[strip_filter],
  467. description = u"Décrivez ici quelques détails sur le matériel que vous souhaitez "
  468. + u"proposer. N'hésitez pas à donner des détails."
  469. )
  470. class UpdateAskCForm(AskCForm, UpdateExchangeForm):
  471. pass
  472. class UpdateAskHForm(AskHForm, UpdateExchangeForm):
  473. pass
  474. class UpdateAskMForm(AskMForm, UpdateExchangeForm):
  475. pass
  476. class UpdatePropCForm(PropCForm, UpdateExchangeForm):
  477. pass
  478. class UpdatePropHForm(PropHForm, UpdateExchangeForm):
  479. pass
  480. class UpdatePropMForm(PropMForm, UpdateExchangeForm):
  481. pass