Browse Source

Fix issue when users have aleardy voted

JoostSijm 6 years ago
parent
commit
4a55292019
2 changed files with 10 additions and 4 deletions
  1. 6 0
      app/models.py
  2. 4 4
      app/modules/vote/app.py

+ 6 - 0
app/models.py

@@ -201,6 +201,12 @@ class Question(db.Model):
         backref=db.backref("questions", lazy="dynamic")
     )
 
+    def has_voten(self, user_id):
+        for option in self.options:
+            if option.votes.filter(Vote.user_id == user_id).first():
+                return True
+        return False
+
 
 class Option(db.Model):
     """Model for Option"""

+ 4 - 4
app/modules/vote/app.py

@@ -158,10 +158,10 @@ def public_view(ballot_id):
                 if question_id == 'security_code':
                     continue
                 question = Question.query.get(question_id)
-                for option in question.options:
-                    if option.votes.filter(Vote.user_id == user_id).first():
-                        flash('Je hebt al gestemd.', 'warning')
-                        return redirect(url_for('vote.public', ballot_id=ballot.id))
+                if question.has_voten(user_id):
+                    flash('Je hebt al gestemd.', 'warning')
+                    return redirect(url_for('vote.view', ballot_id=ballot.id))
+
                 option = question.options.filter(Option.id == option_id).first()
 
                 vote = Vote()