views.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. from urlparse import urlunsplit
  7. import locale
  8. locale.setlocale(locale.LC_ALL, '')
  9. import string
  10. from . import forms
  11. from .constants import *
  12. from . import app
  13. from .models import ISP
  14. @app.route('/')
  15. def home():
  16. return render_template('index.html', active_button="home")
  17. @app.route('/projects')
  18. def project_list():
  19. return render_template('project_list.html', projects=ISP.query.filter_by(is_disabled=False))
  20. @app.route('/isp/<projectid>/')
  21. def project(projectid):
  22. p=ISP.query.filter_by(id=projectid, is_disabled=False).first()
  23. if not p:
  24. abort(404)
  25. return render_template('project_detail.html', project_row=p, project=p.json)
  26. @app.route('/isp/<projectid>/edit', methods=['GET', 'POST'])
  27. def edit_project(projectid):
  28. isp=ISP.query.filter_by(id=projectid, is_disabled=False).first()
  29. if not isp:
  30. abort(404)
  31. form = forms.ProjectForm.edit_json(isp.json)
  32. if form.validate_on_submit():
  33. isp.name = form.name.data
  34. isp.shortname = form.shortname.data or None
  35. isp.json=form.to_json(isp.json)
  36. db.session.add(isp)
  37. db.session.commit()
  38. flash(_(u'Project modified'), 'info')
  39. return redirect(url_for('project', projectid=isp.id))
  40. return render_template('project_form.html', form=form, project=isp)
  41. @app.route('/add-a-project', methods=['GET'])
  42. def add_project():
  43. return render_template('add_project.html')
  44. @app.route('/create/form', methods=['GET', 'POST'])
  45. def create_project_form():
  46. form = forms.ProjectForm()
  47. if form.validate_on_submit():
  48. isp=ISP()
  49. isp.name = form.name.data
  50. isp.shortname = form.shortname.data or None
  51. isp.json=form.to_json(isp.json)
  52. db.session.add(isp)
  53. db.session.commit()
  54. flash(_(u'Project created'), 'info')
  55. return redirect(url_for('project', projectid=isp.id))
  56. return render_template('project_form.html', form=form)
  57. @app.route('/create/json-url', methods=['GET', 'POST'])
  58. def create_project_json():
  59. form = forms.ProjectJSONForm()
  60. if form.validate_on_submit():
  61. u=list(form.url.data)
  62. u[2]='/isp.json' # new path
  63. url=urlunsplit(u)
  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. #------
  76. # Filters
  77. @app.template_filter('step_to_label')
  78. def step_to_label(step):
  79. if step:
  80. return u"<a href='#' rel='tooltip' data-placement='right' title='" + STEPS[step] + "'><span class='badge badge-" + STEPS_LABELS[step] + "'>" + str(step) + "</span></a>"
  81. else:
  82. return u'-'
  83. @app.template_filter('member_to_label')
  84. def member_to_label(is_member):
  85. if is_member:
  86. 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>'
  87. return ''
  88. @app.template_filter('stepname')
  89. def stepname(step):
  90. return STEPS[step]
  91. @app.template_filter('gpspart')
  92. def gpspart(gps, part):
  93. parts = gps.split(':');
  94. if part == 1:
  95. return parts[0]
  96. elif part == 2:
  97. return parts[1]
  98. return "";