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_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_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