X-Git-Url: http://git.cyclocoop.org/?p=cavote.git;a=blobdiff_plain;f=main.py;h=7df6af3d4f54b64813ce4d7aeda9c65bad96008d;hp=ccb7229ce6a47f90ad5db544a190f6cfb4dd3d4f;hb=HEAD;hpb=f2c5f4be15b6225e5e7d9f3c53084424beb32f1b diff --git a/main.py b/main.py index ccb7229..7df6af3 100755 --- a/main.py +++ b/main.py @@ -3,16 +3,21 @@ from flask import Flask, request, session, g, redirect, url_for, abort, \ render_template, flash -from gettext import gettext +from gettext import translation +import locale +import os + +current_locale, encoding = locale.getdefaultlocale() +locale_path = 'translations/' +language = translation('messages', locale_path, [current_locale]) +gettext = language.ugettext + #from flask_openid import OpenID #from flaskext.babel import Babel, gettext, ngettext import sqlite3 from datetime import date, time, timedelta, datetime import time from contextlib import closing -import locale -locale.setlocale(locale.LC_ALL, '') -import os import hashlib import smtplib import string @@ -674,7 +679,10 @@ def admin_votes(): votes = query_db('select *, votes.id as voteid, groups.name as groupname from votes \ join groups on groups.id=votes.id_group \ where is_hidden=0 order by id desc') - return render_template('admin_votes.html', votes=votes, today=date.today().strftime("%Y-%m-%d")) + return render_template('admin_votes.html', votes=votes + , today=date.today().strftime("%Y-%m-%d") + , can_delete_votes=CAN_DELETE_VOTES + ) @app.route('/admin/votes/add', methods=['GET', 'POST']) def admin_vote_add(): @@ -754,7 +762,6 @@ def admin_vote_edit(voteid): vote = query_db('select * from votes where id = ?', [voteid], one=True) if vote is None: abort(404) - print "\nvote: %s\n" % str(vote) if request.method == 'POST': if request.form['title']: if request.form['days'] > 0: @@ -768,33 +775,39 @@ def admin_vote_edit(voteid): public = 1 isopen = 0 isterminated = 0 + print "POST" if request.form['status'] == 'Ouvert': - choices = query_db('select id_vote, count(*) as nb \ - from choices where id_vote = ? \ + choices = query_db('select id_vote, count(*) as nb, groups.name as group_name \ + from choices \ + join votes on votes.id = choices.id_vote \ + join groups on groups.id = votes.id_group \ + where id_vote = ? \ group by id_vote', [voteid], one=True) if choices is not None and choices['nb'] >= 1: isopen = 1 previousvote = query_db('select id, is_open, id_group from votes where id = ?', [voteid], one=True) - if previousvote is None or previousvote['is_open'] == 0: + if (previousvote is None or previousvote['is_open'] == 0) and 'mail_notice' in request.form: users_to_vote = query_db('select users.email, users.name from users \ join user_group on users.id=user_group.id_user \ where user_group.id_group = ?', [previousvote['id_group']]) for user in users_to_vote: link = request.url_root + url_for('vote', idvote=voteid) BODY = string.join(( - "From: %s" % EMAIL, - "To: %s" % user['email'], - "Subject: [Cavote] %s" % gettext(u"A vote has been opened for your group"), - "Date: %s" % time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()).decode('utf-8'), - "Content-type: text/plain; charset=utf-8", - "X-Mailer: %s" % VERSION, + u"From: %s" % EMAIL, + u"To: %s" % user['email'], + u"Subject: [vote] [%s] %s" % (choices['group_name'], request.form['title']), + u"Date: %s" % time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()).decode('utf-8'), + u"Content-type: text/plain; charset=utf-8", + u"X-Mailer: %s" % VERSION, "", - "%(text)s %(title)s" % {"text": gettext(u"A vote has been opened and you are in a group concerned by it :"), "title": request.form['title']}, - "", - gettext(u"This link will bring you to the form where you will be able to vote :"), + u"%(text0)s%(group)s" % \ + { "text0":gettext(u"A new vote concerns you within the group: ") \ + , "group":choices['group_name'] }, \ link, "", - gettext(u"If you think this mail is not for you, please ignore and delete it.") + gettext(u"If you think this mail is not for you, please ignore and delete it."), + gettext(u"For more informations, you can contact:"), + EMAIL ), "\r\n") server = smtplib.SMTP(SMTP_SERVER) server.sendmail(EMAIL, [user['email']], BODY.encode('utf-8')) @@ -828,11 +841,13 @@ def admin_vote_edit(voteid): def admin_vote_del(idvote): if not session.get('user').get('is_admin'): abort(401) - vote = query_db('select * from votes where id = ?', [idvote], one=True) - if vote is None: - abort(404) - g.db.execute('update votes set is_hidden=1 where id = ?', [idvote]) - g.db.commit() + if not CAN_DELETE_VOTES: + flash(u'La configuration interdit la suppression des votes.', 'error') + else: + if vote is None: + abort(404) + g.db.execute('update votes set is_hidden=1 where id = ?', [idvote]) + g.db.commit() return redirect(url_for('admin_votes')) @app.route('/admin/votes/addchoice/', methods=['POST'])