backend.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. from os.path import join, dirname
  5. from bottle import route, run, static_file, request, template, FormsDict
  6. ORIENTATIONS = (
  7. ('N', 'Nord'),
  8. ('NO', 'Nord-Ouest'),
  9. ('O', 'Ouest'),
  10. ('SO', 'Sud-Ouest'),
  11. ('S', 'Sud'),
  12. ('SE', 'Sud-Est'),
  13. ('E', 'Est'),
  14. ('NE', 'Nord-Est'),
  15. )
  16. @route('/wifi-form')
  17. def show_wifi_form():
  18. return template('wifi-form', errors=None, data = FormsDict(),
  19. orientations=ORIENTATIONS)
  20. @route('/wifi-form', method='POST')
  21. def submit_wifi_form():
  22. required = ('name', 'contrib-type',
  23. 'latitude', 'longitude')
  24. required_or = (('email', 'phone'),)
  25. required_if = (
  26. ('contrib-type', 'share',('access-type', 'bandwidth',
  27. 'share-part')),
  28. )
  29. field_names = {
  30. 'name' : 'Nom/Pseudo',
  31. 'contrib-type': 'Type de participation',
  32. 'latitude' : 'Localisation',
  33. 'longitude' : 'Localisation',
  34. 'phone' : 'Téléphone',
  35. 'email' : 'Email',
  36. 'access-type' : 'Type de connexion',
  37. 'bandwidth' : 'Bande passante',
  38. 'share-part' : 'Débit partagé',
  39. }
  40. errors = []
  41. for name in required:
  42. if (not request.forms.get(name)):
  43. errors.append((field_names[name], 'ce champ est requis'))
  44. for name_list in required_or:
  45. filleds = [True for name in name_list if request.forms.get(name)]
  46. if len(filleds) <= 0:
  47. errors.append((
  48. ' ou '.join([field_names[i] for i in name_list]),
  49. 'au moins un des de ces champs est requis'))
  50. for key, value, fields in required_if:
  51. if request.forms.get('key') == value:
  52. for name in fields:
  53. if not request.forms.get(name):
  54. errors.append(
  55. (field_names[name], 'ce champ est requis'))
  56. if errors:
  57. return template('wifi-form', errors=errors, data=request.forms,
  58. orientations=ORIENTATIONS)
  59. else:
  60. return 'OK'
  61. @route('/assets/<filename:path>')
  62. def send_asset(filename):
  63. return static_file(filename, root=join(dirname(__file__), 'assets'))
  64. DEBUG = bool(os.environ.get('DEBUG', False))
  65. run(host='localhost', port=8080, reloader=DEBUG)