def showResults(self): if (not 'poll_id' in request.params): redirect(url(controller='poll', action='showAll')) try: poll = Session.query(Poll).filter(Poll.owner == self.uid).filter(Poll.id == request.params['poll_id']).one() c.poll = poll votes = {} votes['missing'] = 0 if poll.type == 'yesno' or poll.type == 'yesnonull': for v in poll.votes: if v.simple_vote is None: votes['missing'] += 1 elif not v.simple_vote in votes: votes[v.simple_vote] = 1 else: votes[v.simple_vote] += 1 else: for v in poll.votes: if v.complex_vote is None: votes['missing'] += 1 else: votes[v.complex_vote] = 1 c.votes = votes return render('/vote/showResults.mako') except Exception as e: print e pass redirect(url(controller='poll', action='showAll'))
def results(self): if not 'vote_key' in request.params or request.params['vote_key'] == '': return render('/vote/results.mako') else: try: vote = Session.query(Vote).filter(Vote.key == request.params['vote_key']).one() poll = Session.query(Poll).filter(Poll.id == vote.poll_id).one() if vote.update_date is None: session['flash'] = _('Vote first') session['flash_class'] = 'error' session.save() redirect(url(controller='vote', action='vote')) c.poll = poll votes = {} votes['missing'] = 0 if poll.type == 'yesno' or poll.type == 'yesnonull': for v in poll.votes: if v.simple_vote is None: votes['missing'] += 1 elif not v.simple_vote in votes: votes[v.simple_vote] = 1 else: votes[v.simple_vote] += 1 else: for v in poll.votes: if v.complex_vote is None: votes['missing'] += 1 else: votes[v.complex_vote] = 1 c.votes = votes return render('/vote/showResults.mako') except Exception as e: print e raise e pass return render('/vote/results.mako')
def doVote(self): if not 'vote_key' in request.params or request.params['vote_key'] == '' or\ not 'vote' in request.params or request.params['vote'] == '': redirect(url(controller='vote', action='vote')) else: try: vote = Session.query(Vote).filter(Vote.key == request.params['vote_key']).one() poll = Session.query(Poll).filter(Poll.id == vote.poll_id).one() if not vote.update_date is None: redirect(url(controller='vote', action='vote')) if datetime.now() > poll.expiration_date: session['flash'] = _('Sorry, poll has expired') session['flash_class'] = 'error' session.save() redirect(url(controller='vote', action='vote')) if poll.type == 'yesno' and (request.params['vote'] == 'yes' or request.params['vote'] == 'no'): vote.simple_vote = request.params['vote'] elif poll.type == 'yesnonull' and (request.params['vote'] == 'yes' or request.params['vote'] == 'no' or request.params['vote'] == 'null'): vote.simple_vote = request.params['vote'] elif poll.type == 'complex': vote.complex_vote = request.params['vote'] else: redirect(url(controller='vote', action='vote')) vote.update_date = datetime.now() Session.commit() session['flash'] = _('Vote successfully saved') session.save() except Exception as e: print e session['flash'] = _('Failed to save vote') session['flash_class'] = 'error' session.save() pass redirect(url(controller='vote', action='vote'))
def vote(self): if 'vote_key' in request.params and not request.params['vote_key'] == '': try: vote = Session.query(Vote).filter(Vote.key == request.params['vote_key']).one() poll = Session.query(Poll).filter(Poll.id == vote.poll_id).one() if datetime.now() > poll.expiration_date: session['flash'] = _('Sorry, poll has expired') session['flash_class'] = 'error' session.save() redirect(url(controller='vote', action='vote')) if vote.update_date is None: c.poll = Session.query(Poll).filter(Poll.id == vote.poll_id).one() c.vote_key = request.params['vote_key'] return render('/vote/dovote.mako') except Exception as e: import sys, traceback traceback.print_exc(file=sys.stdout) pass return render('/vote/vote.mako')
def showAll(self): c.heading = _('All polls') c.polls = [] try: polls = Session.query(Poll).filter(Poll.owner == self.uid).all() for s in polls: try: s.name = s.name.encode('ascii','ignore') except: s.name ='poo...frickin P000000' c.polls.append(s) except NoResultFound: print 'No such poll' return render('/poll/showAll.mako')
def deletePoll(self): if (not 'poll_id' in request.params): redirect(url(controller='poll', action='showAll')) try: poll = Session.query(Poll).filter(Poll.owner == self.uid).filter(Poll.id == request.params['poll_id']).one() Session.query(Vote).filter(Vote.poll_id == poll.id).delete() Session.delete(poll) Session.commit() session['flash'] = _('Poll successfully deleted') session.save() except Exception as e: print e session['flash'] = _('Failed to delete poll') session['flash_class'] = 'error' session.save() redirect(url(controller='poll', action='showAll'))
def editPoll(self): if (not 'poll_id' in request.params): redirect(url(controller='poll', action='showAll')) try: poll = Session.query(Poll).filter(Poll.owner == self.uid).filter(Poll.id == request.params['poll_id']).one() c.heading = _('Edit poll') c.mode = 'edit' if len(poll.votes) > 0: session['flash'] = _('Cannot edit a running poll') session['flash_class'] = 'error' session.save() redirect(url(controller='poll', action='showAll')) c.poll = poll return render('/poll/edit.mako') except: pass redirect(url(controller='poll', action='showAll'))
def doEditPoll(self): try: if request.params['mode'] == 'edit': poll = Session.query(Poll).filter(Poll.owner == self.uid).filter(Poll.id == request.params['poll_id']).one() else: poll = Poll() poll.owner = self.uid poll.name = request.params['name'].encode('utf8') poll.instructions = str(request.params['instructions'].encode('utf-8')) poll.expiration_date = request.params['expiration_date'] poll.type = request.params['type'] if request.params['public'] == 'yes': poll.public = True else: poll.public = False if request.params['mode'] == 'add': Session.add(poll) Session.flush() voters = request.params['voters'].split('\n') voters = list(set(voters)) for v in voters: vo = None vo = Vote() vo.poll_id = poll.id vo.key = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(20)) mailtext = '''\ Hey, Your vote is requested for "%s". You can vote here: https://votex.hackerspace.lu:8443/vote/vote?vote_key=%s Your voting key is: %s The poll expires on %s ''' %\ (poll.name, vo.key, vo.key, poll.expiration_date) msg = MIMEText(mailtext, 'plain') msg['Subject'] = 'syn2cat - We need you to vote' msg['From'] = '*****@*****.**' msg['To'] = v s = smtplib.SMTP('localhost') s.sendmail(msg['From'], v, msg.as_string()) s.quit() Session.add(vo) Session.commit() session['flash'] = _('Poll successfully edited') session.save() redirect(url(controller='poll', action='showAll')) except LookupError: print 'No such user !' session['flash'] = _('Failed to add poll') session['flash_class'] = 'error' session.save() redirect(url(controller='poll', action='showAll'))