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.
 
 
 
 
 

575 lines
27 KiB

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