Le repo des sources pour le site web des JM2L
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

forms.py 26 KiB

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