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.
 
 
 
 
 

570 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',u'Conférence'),
  124. ('Stand','Stand'), ('Atelier','Atelier'), ('Table ronde','Table ronde'),
  125. ('MAO','MAO'), ('Repas','Repas / Snack'), ('Autres','Autres') ])
  126. name = TextField('Nom de la salle', [validators.Length(min=1, max=40)],
  127. filters=[strip_filter])
  128. description = TextAreaField('Description',
  129. filters=[strip_filter])
  130. class EditSalleForm(SalleForm):
  131. salle_id = HiddenField()
  132. class SallePhyForm(MyBaseForm):
  133. name = TextField('Nom de la salle', [validators.Length(min=1, max=40)],
  134. filters=[strip_filter])
  135. nb_places = TextField('Nombre de places', [validators.Length(max=4)])
  136. description = TextAreaField('Description',
  137. filters=[strip_filter])
  138. class EditSallePhyForm(SallePhyForm):
  139. uid = HiddenField()
  140. class PlaceCreateForm(MyBaseForm):
  141. place_type = SelectField('Type', choices=PLACE_TYPE)
  142. display_name = TextField(u'Nom affiché', [validators.Length(min=1, max=20)],
  143. filters=[strip_filter])
  144. name = TextField('Nom Complet', [validators.Length(min=1, max=80)],
  145. filters=[strip_filter])
  146. gps_coord = TextField(u'Coordonnées GPS', [validators.Length(max=30)],
  147. filters=[strip_filter])
  148. adresse = TextAreaField('Adresse', [validators.Length(max=100)],
  149. filters=[strip_filter])
  150. codePostal = TextField('Code Postal', [validators.Length(max=5)],
  151. filters=[strip_filter])
  152. ville = TextField('Ville', [validators.Length(max=40)],
  153. filters=[strip_filter])
  154. website = TextField('Site Web', [validators.Length(max=100)],
  155. filters=[strip_filter])
  156. description = TextAreaField('Description',
  157. filters=[strip_filter])
  158. created_by = HiddenField()
  159. class PlaceUpdateForm(PlaceCreateForm):
  160. place_id = HiddenField()
  161. def captcha_check(form, field):
  162. if form.meta.csrf_context.get('Captcha')!=field.data:
  163. raise ValidationError(u"la vérification captcha est invalide.")
  164. class UserPasswordForm(MyBaseForm):
  165. uid = HiddenField()
  166. password = PasswordField("Mot de passe",[
  167. validators.Length(max=128, message=u"128 car. maximum"),
  168. validators.required(message=u"Ce champ est obligatoire"),
  169. validators.EqualTo('confirm', message=u'Les password ne sont pas équivalents') ],
  170. filters=[strip_filter]
  171. )
  172. confirm = PasswordField('Confirmez')
  173. class UserRegisterForm(MyBaseForm):
  174. nom = TextField(u'Nom', [
  175. validators.Length(max=80, message=u"80 car. maximum"),
  176. validators.required(message=u"Ce champ est obligatoire") ],
  177. filters=[strip_filter]
  178. )
  179. prenom = TextField(u'Prénom', [
  180. validators.Length(max=80, message=u"80 car. maximum"),
  181. validators.required(message=u"Ce champ est obligatoire"),
  182. validators.Length(max=80)], filters=[strip_filter]
  183. )
  184. mail = TextField(u'Adresse électronique', [
  185. validators.required(message=u"Ce champ est obligatoire"),
  186. validators.Email(message=u"Essayez aussi avec une adresse e-mail valide"),
  187. validators.Length(max=100)],
  188. filters=[strip_filter],
  189. description = u"Une adresse e-mail valide." +
  190. u"Cette adresse ne sera pas rendue publique, "+
  191. u"et ne sera pas divulguée à des tiers."
  192. )
  193. captcha = TextField(u'Captcha', [validators.Length(max=8), captcha_check],
  194. filters=[strip_filter]
  195. )
  196. class ProfilForm(MyBaseForm):
  197. id = HiddenField()
  198. user_id = HiddenField()
  199. nom = TextField(u'Nom', [validators.Length(max=80)],
  200. filters=[strip_filter],
  201. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  202. u"pas autorisée à l'exception des points, traits d'union, " +
  203. u"apostrophes et tirets bas."
  204. )
  205. prenom = TextField(u'Prénom', [validators.Length(max=80)],
  206. filters=[strip_filter],
  207. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  208. u"pas autorisée à l'exception des points, traits d'union, " +
  209. u"apostrophes et tirets bas."
  210. )
  211. pseudo = TextField(u'Pseudo', [validators.Length(max=80)],
  212. filters=[strip_filter],
  213. description = "Votre pseudo d'usage sur la toile."
  214. )
  215. mail = TextField(u'Adresse électronique', [validators.optional(), validators.Email(), validators.Length(max=100)],
  216. filters=[strip_filter],
  217. description = u"Une adresse e-mail valide. Tous les messages de ce système" +
  218. u"seront envoyés à cette adresse. Cette adresse ne sera pas rendue publique,"+
  219. u"et ne sera utilisée que si vous désirez obtenir un nouveau mot de passe ou" +
  220. u"recevoir personnellement certaines nouvelles ou avertissements."
  221. )
  222. phone = TextField(u'Mobile', [validators.optional(), validators.Length(max=10),
  223. validators.Regexp("\d+", message=u"Le numéro de téléphone mobile ne doit contenir que des chiffres")],
  224. filters=[strip_filter],
  225. description = u"Un numéro de mobile valide. Afin de pouvoir rester en" +
  226. u"contact avec les personne de l'organisation, et pour vos échanges. " +
  227. u"Ce numéro ne sera pas publié, et ne sera utilisé que si " +
  228. u"vous désirez recevoir personnellement certaines nouvelles ou alertes."
  229. )
  230. website = TextField(u'Site web', [validators.optional(), validators.URL(), validators.Length(max=100)],
  231. filters=[strip_filter],
  232. description = "Renseignez ici votre site Web."
  233. )
  234. gpg_key = TextAreaField(u'Ma clé GPG',
  235. [validators.optional(), validators.Length(max=9000)],
  236. filters=[strip_filter],
  237. description = u"Vous pouvez insérer votre clé GPG publique pour " +
  238. u"échanger des données sécurisées."
  239. )
  240. soc_link = TextAreaField('Mes autres identifiants',
  241. [validators.optional(), validators.Length(max=1000000)],
  242. filters=[strip_filter],
  243. description = u"Vous pouvez insérer ici d'autres identifiants " +
  244. u"permettant aux autres de vous retrouver sur la toile (IRC, jabber, réseaux sociaux etc)."
  245. )
  246. bio = TextAreaField('Biographie', [validators.optional(), validators.Length(max=1000000)],
  247. filters=[strip_filter]
  248. )
  249. tiersship = FieldList(FormField(TiersChoice))
  250. class MiamForm(MyBaseForm):
  251. RepasVendredi = SelectField(u'Je viens au dîner convivial vendredi soir',
  252. choices=YESNO,
  253. description = u"L'organisation réserve le " +
  254. u"restaurant pour ce dîner convivial. De petites " +
  255. u"animations vous seront proposées. " +
  256. u"Il nous faut savoir si on vous réserve une place !"
  257. )
  258. RepasSamediMidi = SelectField(u'Je déjeune sur place samedi midi', choices=YESNO )
  259. RepasSamediSoir = SelectField(u'Je viens au repas de clôture samedi soir', choices=YESNO,
  260. description = u"L'organisation réserve le " +
  261. u"restaurant pour le dîner de clôture. De petites " +
  262. u"animations vous seront proposées. " +
  263. u"Il nous faut savoir si on vous réserve une place !"
  264. )
  265. Allergies = TextAreaField(u'Allergies', [validators.Length(max=100)],
  266. filters=[strip_filter],
  267. description = u"Entrez ici vos allergies éventuelles, " +
  268. u"Ce que votre organisme ne supporte absolument pas." +
  269. u"L'organisation fera alors en sorte de les éviter ou " +
  270. u"de les identifier explicitement."
  271. )
  272. Contraintes = TextAreaField(u'Contraintes', [validators.Length(max=100)],
  273. filters=[strip_filter],
  274. description = u"Entrez ici ce que vous n'aimez pas, " +
  275. u"Cela ne consititue pas pour vous un allérgène, " +
  276. u"mais vous n'aimez simplement pas. (Gluten / Laitage etc ...)"
  277. )
  278. class DateStartConfidenceForm(MyBaseForm):
  279. ConfidenceLevel = [
  280. ("0",u"exactement à"),
  281. ("1",u"approximativement à"),
  282. ("2",u"à peu près (5 à 15 min) vers"),
  283. ("3",u"à une vache près (1h) vers")
  284. ]
  285. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  286. Day = SelectField(u'Jour', choices=DayChoice )
  287. Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
  288. Hour = TextField(u'Heure', [validators.Length(max=5,
  289. message=u"doit faire au maximum 5 caractères"),
  290. validators.Regexp("\d+:\d+",
  291. message=u"doit être sous la forme HH:MM")],
  292. filters=[strip_filter])
  293. start_time = HiddenField()
  294. class ItineraireForm(Form):
  295. start_place = SelectField(u'En partant de', coerce=int)
  296. arrival_place = SelectField(u'et à destination de', coerce=int)
  297. itin_id = HiddenField()
  298. class AddItineraireForm(Form):
  299. itin = FormField(ItineraireForm)
  300. distance = DecimalField(u'Distance', [validators.Length(min=1, max=4)],
  301. filters=[strip_filter])
  302. duration = DateTimeField(u'Durée', [validators.Length(min=4, max=5)],
  303. filters=[strip_filter])
  304. price = DecimalField(u'Prix approx.', [validators.Length(min=1, max=5)],
  305. filters=[strip_filter])
  306. tr_pied = BooleanField(u'à pied')
  307. tr_velo = BooleanField(u'à vélo')
  308. tr_moto = BooleanField(u'à moto')
  309. tr_voiture = BooleanField(u'en voiture')
  310. tr_taxi = BooleanField(u'en taxi')
  311. tr_bus = BooleanField(u'en bus')
  312. tr_avion = BooleanField(u'en avion')
  313. description = TextAreaField(u'Description de l\'itinéraire')
  314. class AddMember(MyBaseForm):
  315. tiers_uid = HiddenField()
  316. nom = TextField(u'Nom', [validators.Length(max=80)],
  317. filters=[strip_filter],
  318. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  319. u"pas autorisée à l'exception des points, traits d'union, " +
  320. u"apostrophes et tirets bas."
  321. )
  322. prenom = TextField(u'Prénom', [validators.Length(max=80)],
  323. filters=[strip_filter],
  324. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  325. u"pas autorisée à l'exception des points, traits d'union, " +
  326. u"apostrophes et tirets bas."
  327. )
  328. email = TextField(u'Email', [validators.required(),
  329. validators.length(max=10),
  330. validators.Email(message='Ceci ne ressemble pas à une adresse valide')],
  331. description=u"Afin d'éviter la duplication d'information et les doublons inutile, "+
  332. u"pensez d'abord à lui demander de confirmer le mail qu'il a utilisé lors de "+
  333. u"son inscription sur le site.")
  334. add = SubmitField('Ajouter des membres')
  335. class TiersForm(MyBaseForm):
  336. name = TextField(u'Nom', [validators.Length(max=100)],
  337. filters=[strip_filter],
  338. description = u"Les espaces sont autorisés, la ponctuation n'est " +
  339. u"pas autorisée à l'exception des points, traits d'union, " +
  340. u"apostrophes et tirets bas."
  341. )
  342. tiers_type = MySelectField('Nature', coerce=int)
  343. website = TextField(u'Site web', [validators.optional(), validators.URL(), validators.Length(max=100)],
  344. filters=[strip_filter],
  345. description = "Renseignez ici le site Web."
  346. )
  347. description = TextAreaField('Descriptif',
  348. [validators.optional(), validators.Length(max=1000000)],
  349. filters=[strip_filter],
  350. description = u"Vous pouvez insérer les détails"
  351. )
  352. membership = FieldList(FormField(TiersMember))
  353. roles = FieldList(FormField(TiersRole))
  354. class UpdateTiersForm(TiersForm):
  355. uid = HiddenField()
  356. tiers_id = HiddenField()
  357. class ExchCateg(MyBaseForm):
  358. exch_type = HiddenField()
  359. exch_subtype = TextField(u'Catégorie', [validators.Length(max=80)],
  360. filters=[strip_filter],
  361. description = "Le nom de la categorie"
  362. )
  363. description = TextAreaField('Description',
  364. filters=[strip_filter])
  365. class UpdateExchangeForm(MyBaseForm):
  366. exch_id = HiddenField()
  367. class AskCForm(ItineraireForm):
  368. ConfidenceLevel = [
  369. ("0",u"exactement à"),
  370. ("1",u"approximativement à"),
  371. ("2",u"à peu près (5 à 15 min) vers"),
  372. ("3",u"à une vache près (1h) vers")
  373. ]
  374. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  375. Day_start = SelectField(u'Jour', choices=DayChoice )
  376. Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
  377. Hour_start = TextField(u'Heure', [validators.Length(max=5,
  378. message=u"doit faire au maximum 5 caractères"),
  379. validators.Regexp("\d+:\d+",
  380. message=u"doit être sous la forme HH:MM")],
  381. filters=[strip_filter])
  382. start_time = HiddenField()
  383. start_place = SelectField(u'En partant de', coerce=int)
  384. arrival_place = SelectField(u'et à destination de', coerce=int)
  385. itin_id = HiddenField()
  386. class AskHForm(MyBaseForm):
  387. DayChoice = [("4",u"Jeudi à Vendredi"), ("5",u"Vendredi à Samedi"), ("6",u"Samedi à Dimanche"), ("0",u"Dimanche à Lundi")]
  388. Day_start = SelectField(u'Pour la nuit de', choices=DayChoice )
  389. start_time = HiddenField()
  390. description = TextAreaField(u'Description de vos contraintes éventuelles', filters=[strip_filter],
  391. description = u"Décrivez ici vos souhaits et éventuellement "
  392. + u"les contraintes à prendre en compte. N'hésitez pas à donner des détails."
  393. )
  394. class AskMForm(MyBaseForm):
  395. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  396. Day_start = SelectField(u"à partir de", choices=DayChoice )
  397. Hour_start = TextField(u'vers', [validators.Length(max=5,
  398. message=u"doit faire au maximum 5 caractères"),
  399. validators.Regexp("\d+:\d+",
  400. message=u"doit être sous la forme HH:MM")],
  401. filters=[strip_filter])
  402. start_time = HiddenField()
  403. Day_end = SelectField(u"Jusqu'à", choices=DayChoice )
  404. Hour_end = TextField(u'vers', [validators.Length(max=5,
  405. message=u"doit faire au maximum 5 caractères"),
  406. validators.Regexp("\d+:\d+",
  407. message=u"doit être sous la forme HH:MM")],
  408. filters=[strip_filter])
  409. end_time = HiddenField()
  410. exch_categ = SelectField(u'Catégorie de matériel', coerce=int,
  411. description = u"Choisissez une catégorie de bien"
  412. )
  413. description = TextAreaField(u'Description du bien', filters=[strip_filter],
  414. description = u"Décrivez ici les biens que vous souhaitez"
  415. + u"échanger. N'hésitez pas à donner des détails."
  416. )
  417. class PropCForm(ItineraireForm):
  418. ConfidenceLevel = [
  419. ("0",u"exactement à"),
  420. ("1",u"approximativement à"),
  421. ("2",u"à peu près (5 à 15 min) vers"),
  422. ("3",u"à une vache près (1h) vers")
  423. ]
  424. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  425. Day_start = SelectField(u'Jour', choices=DayChoice )
  426. Confidence = SelectField(u'Confiance', choices=ConfidenceLevel)
  427. Hour_start = TextField(u'Heure', [validators.Length(max=5,
  428. message=u"doit faire au maximum 5 caractères"),
  429. validators.Regexp("\d+:\d+",
  430. message=u"doit être sous la forme HH:MM")],
  431. filters=[strip_filter])
  432. start_time = HiddenField()
  433. start_place = SelectField(u'En partant de', coerce=int)
  434. arrival_place = SelectField(u'et à destination de', coerce=int)
  435. itin_id = HiddenField()
  436. class PropHForm(MyBaseForm):
  437. DayChoice = [("4",u"Jeudi à Vendredi"), ("5",u"Vendredi à Samedi"), ("6",u"Samedi à Dimanche"), ("0",u"Dimanche à Lundi")]
  438. Day_start = SelectField(u'Pour la nuit de', choices=DayChoice )
  439. start_time = HiddenField()
  440. exch_categ = SelectField(u'Type de couchage', coerce=int,
  441. description = u"Indiquez ici le type de couchage proposé")
  442. description = TextAreaField(u'Quelques mots autour du logement que vous proposez', filters=[strip_filter],
  443. description = u"Décrivez ici quelques détails sur le logement que vous souhaitez "
  444. + u"proposer, les contraintes à prendre en compte. N'hésitez pas à donner des détails."
  445. )
  446. place_id = SelectField(u'Emplacement', coerce=int,
  447. description = u"Indiquez ici une des adresses que vous avez proposé")
  448. class PropMForm(MyBaseForm):
  449. DayChoice = [("4","Jeudi"), ("5","Vendredi"), ("6","Samedi"), ("0","Dimanche"), ("1","Lundi")]
  450. Day_start = SelectField(u"à partir de", choices=DayChoice )
  451. Hour_start = TextField(u'vers', [validators.Length(max=5,
  452. message=u"doit faire au maximum 5 caractères"),
  453. validators.Regexp("\d+:\d+",
  454. message=u"doit être sous la forme HH:MM")],
  455. filters=[strip_filter])
  456. start_time = HiddenField()
  457. Day_end = SelectField(u"Jusqu'a ", choices=DayChoice )
  458. Hour_end = TextField(u'vers', [validators.Length(max=5,
  459. message=u"doit faire au maximum 5 caractères"),
  460. validators.Regexp("\d+:\d+",
  461. message=u"doit être sous la forme HH:MM")],
  462. filters=[strip_filter])
  463. end_time = HiddenField()
  464. exch_categ = SelectField(u'Catégorie de matériel', coerce=int,
  465. description = u"Choisissez une catégorie de bien matériel"
  466. )
  467. description = TextAreaField(u'Ajoutez quelques mots autour du matériel que vous proposez', filters=[strip_filter],
  468. description = u"Décrivez ici quelques détails sur le matériel que vous souhaitez "
  469. + u"proposer. N'hésitez pas à donner des détails."
  470. )
  471. class UpdateAskCForm(AskCForm, UpdateExchangeForm):
  472. pass
  473. class UpdateAskHForm(AskHForm, UpdateExchangeForm):
  474. pass
  475. class UpdateAskMForm(AskMForm, UpdateExchangeForm):
  476. pass
  477. class UpdatePropCForm(PropCForm, UpdateExchangeForm):
  478. pass
  479. class UpdatePropHForm(PropHForm, UpdateExchangeForm):
  480. pass
  481. class UpdatePropMForm(PropMForm, UpdateExchangeForm):
  482. pass