Skip to content

Commit ccf7349

Browse files
committed
Updated secondary vote phase
1 parent 5aba98a commit ccf7349

6 files changed

Lines changed: 73 additions & 10 deletions

File tree

junction/base/constants.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,13 @@ class ConferenceSettingConstants:
9898
"description": "Allow +0 vote in reviewer votes"}
9999

100100

101+
@choices
102+
class PSRVotePhase:
103+
_PRIMARY = [0, 'Initial voting']
104+
_SECONDARY = [1, 'Second phase voting']
105+
106+
101107
@choices
102108
class ProposalCommentType:
103-
_GENERAL = [0, 'Unclassified']
104-
_SECOND_PHASE_VOTING = [1, 'Second phase voting']
109+
_GENERAL = [0, 'All general comments']
110+
_SECONDARY_VOTING = [1, 'Second phase voting']
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import models, migrations
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('proposals', '0017_proposalcomment_type'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='proposalcomment',
16+
name='type',
17+
),
18+
migrations.AddField(
19+
model_name='historicalproposalsectionreviewervote',
20+
name='phase',
21+
field=models.PositiveSmallIntegerField(default=0, choices=[(0, 'Initial voting'), (1, 'Second phase voting')]),
22+
preserve_default=True,
23+
),
24+
migrations.AddField(
25+
model_name='proposalsectionreviewervote',
26+
name='phase',
27+
field=models.PositiveSmallIntegerField(default=0, choices=[(0, 'Initial voting'), (1, 'Second phase voting')]),
28+
preserve_default=True,
29+
),
30+
]

junction/proposals/models.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# Junction Stuff
1818
from junction.base.constants import (
1919
ProposalReviewStatus, ProposalStatus, ProposalTargetAudience, ProposalUserVoteRole,
20-
ProposalCommentType
20+
PSRVotePhase, ProposalCommentType,
2121
)
2222
from junction.base.models import AuditModel, TimeAuditModel
2323
from junction.conferences.models import Conference, ConferenceProposalReviewer
@@ -124,6 +124,10 @@ def get_vote_url(self):
124124
return reverse('proposal-reviewer-vote',
125125
args=[self.conference.slug, self.slug])
126126

127+
def get_secondary_vote_url(self):
128+
return reverse('proposal-reviewer-secondary-vote',
129+
args=[self.conference.slug, self.slug])
130+
127131
def get_delete_url(self):
128132
return reverse('proposal-delete',
129133
args=[self.conference.slug, self.slug])
@@ -250,6 +254,8 @@ class ProposalSectionReviewerVote(TimeAuditModel):
250254
role = models.PositiveSmallIntegerField(
251255
choices=ProposalUserVoteRole.CHOICES, default=ProposalUserVoteRole.REVIEWER)
252256
vote_value = models.ForeignKey(ProposalSectionReviewerVoteValue)
257+
phase = models.PositiveSmallIntegerField(choices=PSRVotePhase.CHOICES, default=PSRVotePhase.PRIMARY)
258+
253259
history = HistoricalRecords()
254260

255261
def __str__(self):
@@ -260,6 +266,7 @@ class Meta:
260266
verbose_name = 'ProposalSectionReviewerVote'
261267

262268

269+
#FIXME: Need to move private, reviewer, vote to type
263270
@python_2_unicode_compatible
264271
class ProposalComment(TimeAuditModel):
265272

@@ -271,7 +278,8 @@ class ProposalComment(TimeAuditModel):
271278
vote = models.BooleanField(default=False, verbose_name="What is the reason?")
272279
comment = models.TextField()
273280
deleted = models.BooleanField(default=False, verbose_name="Is Deleted?")
274-
type = models.PositiveSmallIntegerField(choices=ProposalCommentType.CHOICES, default=ProposalCommentType.GENERAL)
281+
comment_type = models.PositiveSmallIntegerField(
282+
choices=ProposalCommentType.CHOICES, default=ProposalCommentType.GENERAL)
275283
objects = ProposalCommentQuerySet.as_manager()
276284

277285
def __str__(self):

junction/proposals/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@
3434
url(r'^comment/', include(comment_urls)),
3535

3636
# Voting
37-
url(r'^(?P<proposal_slug>[\w-]+)/vote/$', votes_views.proposal_reviewer_vote, name='proposal-reviewer-vote'),
3837
url(r'^(?P<proposal_slug>[\w-]+)/down-vote/$', votes_views.proposal_vote_down, name='proposal-vote-down'),
3938
url(r'^(?P<proposal_slug>[\w-]+)/up-vote/$', votes_views.proposal_vote_up, name='proposal-vote-up'),
4039
url(r'^(?P<proposal_slug>[\w-]+)/remove-vote/$', votes_views.proposal_vote_remove, name='proposal-vote-remove'),
40+
url(r'^(?P<proposal_slug>[\w-]+)/vote/$', votes_views.proposal_reviewer_vote, name='proposal-reviewer-vote'),
41+
url(r'^(?P<proposal_slug>[\w-]+)/second-vote/$', votes_views.proposal_reviewer_secondary_vote,
42+
name='proposal-reviewer-secondary-vote'),
4143
)

junction/proposals/votes_views.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@
1818
from .models import (
1919
Proposal,
2020
ProposalComment,
21+
ProposalCommentType,
2122
ProposalCommentVote,
2223
ProposalSectionReviewer,
2324
ProposalSectionReviewerVote,
2425
ProposalSectionReviewerVoteValue,
25-
ProposalVote
26+
ProposalVote,
27+
PSRVotePhase,
2628
)
2729

2830

@@ -111,7 +113,14 @@ def proposal_comment_down_vote(request, conference_slug, proposal_slug,
111113

112114
@login_required
113115
@require_http_methods(['GET', 'POST'])
114-
def proposal_reviewer_vote(request, conference_slug, proposal_slug):
116+
def proposal_reviewer_vote(request, conference_slug, proposal_slug, vote_phase=None):
117+
if not vote_phase:
118+
vote_phase = PSRVotePhase.PRIMARY
119+
comment_type = ProposalCommentType.GENERAL
120+
elif vote_phase == PSRVotePhase.SECONDARY:
121+
print('aaaaaaaaaaaaaaaaaaaaa')
122+
comment_type = ProposalCommentType.SECONDARY_VOTING
123+
115124
conference = get_object_or_404(Conference, slug=conference_slug)
116125
proposal = get_object_or_404(Proposal, slug=proposal_slug,
117126
conference=conference)
@@ -130,6 +139,7 @@ def proposal_reviewer_vote(request, conference_slug, proposal_slug):
130139
conference_reviewer__reviewer=request.user,
131140
conference_reviewer__conference=conference,
132141
proposal_section=proposal.proposal_section),
142+
phase=vote_phase,
133143
)
134144
vote_value = vote.vote_value.vote_value
135145
except ProposalSectionReviewerVote.DoesNotExist:
@@ -141,6 +151,7 @@ def proposal_reviewer_vote(request, conference_slug, proposal_slug):
141151
commenter=request.user,
142152
vote=True,
143153
deleted=False,
154+
comment_type=comment_type,
144155
)
145156
except:
146157
vote_comment = None
@@ -182,6 +193,7 @@ def proposal_reviewer_vote(request, conference_slug, proposal_slug):
182193
proposal_section=proposal.proposal_section)[0],
183194
vote_value=ProposalSectionReviewerVoteValue.objects.filter(
184195
vote_value=vote_value)[0],
196+
phase=vote_phase,
185197
)
186198
else:
187199
vote.vote_value = ProposalSectionReviewerVoteValue.objects.filter(
@@ -193,9 +205,15 @@ def proposal_reviewer_vote(request, conference_slug, proposal_slug):
193205
commenter=request.user,
194206
comment=comment,
195207
vote=True,
208+
comment_type=comment_type,
196209
)
197210
else:
198211
vote_comment.comment = comment
199212
vote_comment.save()
200213
return HttpResponseRedirect(reverse('proposals-to-review',
201214
args=[conference.slug]))
215+
216+
217+
def proposal_reviewer_secondary_vote(request, conference_slug, proposal_slug):
218+
vote_phase = PSRVotePhase.SECONDARY
219+
return proposal_reviewer_vote(request, conference_slug, proposal_slug, vote_phase=vote_phase)

junction/templates/proposals/detail/base.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,8 @@ <h4 class='heading'><b>Speaker Links:</b></h4>
173173
{% if is_section_reviewer or user.is_authenticated and user.is_superuser %}
174174
<div class="proposal-writeup--section">
175175
<h4 class='heading'><b>Reviewer Actions:</b></h4>
176-
<a class='btn btn-primary btn-success' href="{{ proposal.get_vote_url }}">
177-
Vote for proposal
178-
</a>
176+
<a class='btn btn-primary btn-success' href="{{ proposal.get_vote_url }}">Vote for proposal</a>
177+
<a class='btn btn-primary btn-success' href="{{ proposal.get_secondary_vote_url }}">Second phase voting</a>
179178
</div>
180179
{% endif %}
181180

0 commit comments

Comments
 (0)