def batch_view(id): l.l('batch_view', uid=request.user.id, gid=id) group = l.get_group(id) if not group: abort(404) if request.user.email in group.author_emails: abort(404) raw_proposals = l.get_group_proposals(id) votes = l.get_group_votes(id) proposals = [] for rp in raw_proposals: clean_prop = {'proposal': rp, 'discussion': l.get_discussion(rp.id)} voters = [v.display_name for v in votes if rp.id in v.accept] clean_prop['voters'] = ', '.join(voters) clean_prop['voters_count'] = len(voters) proposals.append(clean_prop) proposal_map = {x.id: x for x in raw_proposals} if group.locked: proposals.sort(key=lambda x: -x['voters_count']) else: random.shuffle(proposals) basics = {x['proposal'].id: x['proposal'].data['title'] for x in proposals} vote = l.get_batch_vote(id, request.user.id) msgs = l.get_batch_messages(id) l.mark_batch_read(id, request.user.id) return render_template('batch/batchgroup.html', group=group, proposals=proposals, proposal_map=proposal_map, basics=basics, msgs=msgs, all_votes=votes, vote=vote._asdict() if vote else None)
def batch_discussion(id): group = l.get_group(id) if request.user.email in group.author_emails: abort(404) l.add_batch_message(request.user.id, id, request.values.get('comment')) return render_template('batch_discussion_snippet.html', msgs=l.get_batch_messages(id))
def batch_discussion(id): group = l.get_group(id) if request.user.email in group.author_emails or group.locked: abort(404) l.add_batch_message(request.user.id, id, request.values.get('comment')) return render_template('batch/batch_discussion_snippet.html', msgs=l.get_batch_messages(id))
def batch_view(id): l.l('batch_view', uid=request.user.id, gid=id) group = l.get_group(id) if not group: abort(404) if request.user.email in group.author_emails: abort(404) raw_proposals = l.get_group_proposals(id) votes = l.get_group_votes(id) proposals = [] for rp in raw_proposals: clean_prop = {'proposal': rp, 'discussion': l.get_discussion(rp.id)} voters = [v.display_name for v in votes if rp.id in v.accept] clean_prop['voters'] = ', '.join(voters) clean_prop['voters_count'] = len(voters) proposals.append(clean_prop) proposal_map = {x.id:x for x in raw_proposals} if group.locked: proposals.sort(key=lambda x:-x['voters_count']) else: random.shuffle(proposals) basics = {x['proposal'].id:x['proposal'].title for x in proposals} vote = l.get_batch_vote(id, request.user.id) msgs = l.get_batch_messages(id) l.mark_batch_read(id, request.user.id) return render_template('batch/batchgroup.html', group=group, proposals=proposals, proposal_map=proposal_map, basics=basics, msgs=msgs, all_votes=votes, vote = vote._asdict() if vote else None)
def batch_discussion(id): group = l.get_group(id) if request.user.email in group.author_emails or group.locked: abort(404) txt = request.values.get('comment', '').strip() if txt: l.add_batch_message(request.user.id, id, txt) return render_template('batch/batch_discussion_snippet.html', msgs=l.get_batch_messages(id))
def batch_vote(id): group = l.get_group(id) if request.user.email in group.author_emails or group.locked: abort(404) accept = request.values.getlist('accept', int) l.vote_group(id, request.user.id, accept) return redirect(url_for('batch_view', id=id))
def batch_vote(id): group = l.get_group(id) if request.user.email in group.author_emails: abort(404) accept = request.values.getlist('accept', int) l.vote_group(id, request.user.id, accept) if not accept: txt = 'You chose no talks from group {}'.format(id) else: txt = 'You chose talk{} {} from group {}' txt = txt.format('' if len(accept) == 1 else 's', ' and '.join('#'+str(x) for x in accept), id) flash(txt) return redirect(url_for('batch_splash_page'))
def batch_view(id): l.l('batch_view', uid=request.user.id, gid=id) group = l.get_group(id) if request.user.email in group.author_emails: abort(404) raw_proposals = l.get_group_proposals(id) proposals = [{'proposal':x, 'discussion':l.get_discussion(x.id)} for x in raw_proposals] proposal_map = {x.id:x for x in raw_proposals} random.shuffle(proposals) basics = {x['proposal'].id:x['proposal'].title for x in proposals} vote = l.get_batch_vote(id, request.user.id) msgs = l.get_batch_messages(id) l.mark_batch_read(id, request.user.id) return render_template('batchgroup.html', group=group, proposals=proposals, proposal_map=proposal_map, basics=basics, msgs=msgs, vote = vote._asdict() if vote else None)
def batch_view(id): raw_proposals = l.get_group_proposals(id) proposals = [{"proposal": x, "discussion": l.get_discussion(x.id)} for x in raw_proposals] proposal_map = {x.id: x for x in raw_proposals} random.shuffle(proposals) basics = {x["proposal"].id: x["proposal"].title for x in proposals} vote = l.get_batch_vote(id, request.user.id) msgs = l.get_batch_messages(id) l.mark_batch_read(id, request.user.id) return render_template( "batchgroup.html", group=l.get_group(id), proposals=proposals, proposal_map=proposal_map, basics=basics, msgs=msgs, vote=vote._asdict() if vote else None, )
def test_batch(): user = l.add_user('*****@*****.**', 'Voter', '123') l.approve_user(user) submitter = l.add_user('*****@*****.**', 'Submitted', '123') l.approve_user(submitter) proposals = [] for n in range(1, 50): prop = data.copy() prop['id'] = n if n == 6: prop['authors'] = [{'name': 'Blah', 'email': '*****@*****.**'}] proposals.append(l.add_proposal(prop)) group_one = l.create_group('Group One', proposals[4:10]) group_two = l.create_group('Group Two', proposals[16:27]) assert l.get_group(group_one).name == 'Group One' group_one_proposals = l.get_group_proposals(group_one) assert set(x.id for x in group_one_proposals) == set(proposals[4:10]) all_groups = l.list_groups(user) assert set([group_one, group_two]) == set(x.id for x in all_groups) assert not any(x.voted for x in all_groups) votes1 = list(reversed(proposals[5:6])) votes2 = proposals[4:5] l.vote_group(group_one, user, votes1) all_groups = {x.id: x.voted for x in l.list_groups(user)} assert all_groups[group_one] assert not all_groups[group_two] assert l.get_batch_vote(group_one, user).accept == votes1 l.vote_group(group_one, user, votes2) assert l.get_batch_vote(group_one, user).accept == votes2 assert len(l.list_groups(submitter)) == 1
def test_batch(): user = l.add_user('*****@*****.**', 'Voter', '123') l.approve_user(user) submitter = l.add_user('*****@*****.**', 'Submitted', '123') l.approve_user(submitter) proposals = [] for n in range(1,50): prop = data.copy() prop['id'] = n if n == 6: prop['authors'] = [{'name':'Blah', 'email':'*****@*****.**'}] proposals.append(l.add_proposal(prop)) group_one = l.create_group('Group One', proposals[4:10]) group_two = l.create_group('Group Two', proposals[16:27]) assert l.get_group(group_one).name == 'Group One' group_one_proposals = l.get_group_proposals(group_one) assert set(x.id for x in group_one_proposals) == set(proposals[4:10]) all_groups = l.list_groups(user) assert set([group_one, group_two]) == set(x.id for x in all_groups) assert not any(x.voted for x in all_groups) votes1 = list(reversed(proposals[5:6])) votes2 = proposals[4:5] l.vote_group(group_one, user, votes1) all_groups = {x.id:x.voted for x in l.list_groups(user)} assert all_groups[group_one] assert not all_groups[group_two] assert l.get_batch_vote(group_one, user).accept == votes1 l.vote_group(group_one, user, votes2) assert l.get_batch_vote(group_one, user).accept == votes2 assert len(l.list_groups(submitter)) == 1
def test_batch(): user = l.add_user("*****@*****.**", "Voter", "123") l.approve_user(user) proposals = [] for n in range(1, 50): prop = data.copy() prop["id"] = n proposals.append(l.add_proposal(prop)) group_one = l.create_group("Group One", proposals[4:10]) group_two = l.create_group("Group Two", proposals[16:27]) assert l.get_group(group_one).name == "Group One" group_one_proposals = l.get_group_proposals(group_one) assert set(x.id for x in group_one_proposals) == set(proposals[4:10]) all_groups = l.list_groups(user) assert set([group_one, group_two]) == set(x.id for x in all_groups) assert not any(x.voted for x in all_groups) votes1 = list(reversed(proposals[5:6])) votes2 = proposals[4:5] l.vote_group(group_one, user, votes1) all_groups = {x.id: x.voted for x in l.list_groups(user)} assert all_groups[group_one] assert not all_groups[group_two] assert l.get_batch_vote(group_one, user).accept == votes1 l.vote_group(group_one, user, votes2) assert l.get_batch_vote(group_one, user).accept == votes2