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.
 
 
 
 
 

647 rivejä
28 KiB

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