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.
 
 
 
 
 

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