modify mail notification to make it optional
[cavote.git] / main.py
diff --git a/main.py b/main.py
index ccb7229..a4c2e3f 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -674,7 +674,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():
@@ -768,33 +771,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 +837,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/<voteid>', methods=['POST'])