views.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. # -*- coding: utf-8 -*-
  2. from flask import request, g, redirect, url_for, abort, \
  3. render_template, flash, jsonify
  4. from flask.ext.babel import gettext as _
  5. from datetime import date, time, timedelta, datetime
  6. import locale
  7. locale.setlocale(locale.LC_ALL, '')
  8. import string
  9. from . import forms
  10. from .constants import *
  11. from . import app, query_db, db
  12. from .models import ISP
  13. @app.route('/')
  14. def home():
  15. return render_template('index.html', active_button="home")
  16. @app.route('/members')
  17. def members():
  18. members = query_db('select * from fai where is_member = 1')
  19. return render_template('members.html', members=members)
  20. @app.route('/projects')
  21. def project_list():
  22. return render_template('project_list.html', projects=ISP.query.filter_by(is_disabled=False))
  23. @app.route('/isp/<projectid>/')
  24. def project(projectid):
  25. p=ISP.query.get(projectid)
  26. if not p:
  27. abort(404)
  28. return render_template('project_detail.html', project_row=p, project=p.json)
  29. @app.route('/isp/<projectid>/edit', methods=['GET', 'POST'])
  30. def edit_project(projectid):
  31. isp=ISP.query.get(projectid)
  32. if not isp:
  33. abort(404)
  34. form = forms.ProjectForm.edit_json(isp.json)
  35. if form.validate_on_submit():
  36. isp.name = form.name.data
  37. isp.shortname = form.shortname.data or None
  38. isp.json=form.to_json(isp.json)
  39. db.session.add(isp)
  40. db.session.commit()
  41. flash(_(u'Project modified'), 'info')
  42. return redirect(url_for('project', projectid=isp.id))
  43. return render_template('project_form.html', form=form, project=isp)
  44. @app.route('/add-a-project', methods=['GET'])
  45. def add_project():
  46. return render_template('add_project.html')
  47. @app.route('/create/form', methods=['GET', 'POST'])
  48. def create_project_form():
  49. form = forms.ProjectForm()
  50. if form.validate_on_submit():
  51. isp=ISP()
  52. isp.name = form.name.data
  53. isp.shortname = form.shortname.data or None
  54. isp.json=form.to_json(isp.json)
  55. db.session.add(isp)
  56. db.session.commit()
  57. flash(_(u'Project created'), 'info')
  58. return redirect(url_for('project', projectid=isp.id))
  59. return render_template('project_form.html', form=form)
  60. @app.route('/create/json-url', methods=['GET', 'POST'])
  61. def create_project_json():
  62. form = forms.ProjectJSONForm()
  63. if form.validate_on_submit():
  64. isp=ISP()
  65. db.session.add(isp)
  66. db.session.commit()
  67. flash(_(u'Project created'), 'info')
  68. return redirect(url_for('project', projectid=isp.id))
  69. return render_template('project_json_form.html', form=form)
  70. @app.route('/search', methods=['GET', 'POST'])
  71. def search():
  72. if request.method == 'POST':
  73. pass
  74. return render_template('search.html')
  75. @app.route('/api/<projects>.json')
  76. def projects_json(projects):
  77. if projects == 'projects':
  78. query = 'select * from fai'
  79. elif projects == 'members':
  80. query = 'select * from fai where is_member = 1'
  81. else:
  82. abort(404)
  83. fais = dict()
  84. for fai in query_db(query):
  85. fais[fai['name']] = fai
  86. return jsonify(fais)
  87. @app.route('/api/members_drupal')
  88. def members_drupal():
  89. members = query_db('select * from fai where is_member = 1 order by shortname')
  90. return render_template('members_drupal.html', members=members)
  91. #------
  92. # Filters
  93. @app.template_filter('step_to_label')
  94. def step_to_label(step):
  95. if step:
  96. return u"<a href='#' rel='tooltip' data-placement='right' title='" + STEPS[step] + "'><span class='badge badge-" + STEPS_LABELS[step] + "'>" + str(step) + "</span></a>"
  97. else:
  98. return u'-'
  99. @app.template_filter('member_to_label')
  100. def member_to_label(is_member):
  101. if is_member:
  102. return u'<a href="#" rel="tooltip" data-placement="right" title="Membre de la Fédération FDN"><span class="label label-success">FFDN</span></a>'
  103. return ''
  104. @app.template_filter('stepname')
  105. def stepname(step):
  106. return STEPS[step]
  107. @app.template_filter('gpspart')
  108. def gpspart(gps, part):
  109. parts = gps.split(':');
  110. if part == 1:
  111. return parts[0]
  112. elif part == 2:
  113. return parts[1]
  114. return "";