switched from using nullboolean accepted on proposal result to a more flexible status choice

This commit is contained in:
James Tauber 2012-09-02 14:45:41 -04:00
parent 82eef6f2d1
commit 0422855582
5 changed files with 17 additions and 8 deletions
symposion

View file

@ -7,7 +7,7 @@ from symposion.reviews.models import ProposalResult, promote_proposal
class Command(BaseCommand): class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
accepted_proposals = ProposalResult.objects.filter(accepted=True) accepted_proposals = ProposalResult.objects.filter(status="accepted")
accepted_proposals = accepted_proposals.order_by("proposal") accepted_proposals = accepted_proposals.order_by("proposal")
for result in accepted_proposals: for result in accepted_proposals:

View file

@ -209,6 +209,12 @@ class ProposalResult(models.Model):
(False, "rejected"), (False, "rejected"),
(None, "undecided"), (None, "undecided"),
], default=None) ], default=None)
status = models.CharField(max_length=20, choices=[
("accepted", "accepted"),
("rejected", "rejected"),
("undecided", "undecided"),
("in-reserve", "in reserve"),
], default="undecided")
@classmethod @classmethod
def full_calculate(cls): def full_calculate(cls):
@ -309,7 +315,7 @@ def unpromote_proposal(proposal):
def accepted_proposal(sender, instance=None, **kwargs): def accepted_proposal(sender, instance=None, **kwargs):
if instance is None: if instance is None:
return return
if instance.accepted == True: if instance.status == "accepted":
promote_proposal(instance.proposal) promote_proposal(instance.proposal)
else: else:
unpromote_proposal(instance.proposal) unpromote_proposal(instance.proposal)

View file

@ -217,13 +217,16 @@ def review_detail(request, pk):
result = request.POST["result_submit"] result = request.POST["result_submit"]
if result == "accept": if result == "accept":
proposal.result.accepted = True proposal.result.status = "accepted"
proposal.result.save() proposal.result.save()
elif result == "reject": elif result == "reject":
proposal.result.accepted = False proposal.result.status = "rejected"
proposal.result.save() proposal.result.save()
elif result == "undecide": elif result == "undecide":
proposal.result.accepted = None proposal.result.status = "undecided"
proposal.result.save()
elif result == "reserve":
proposal.result.status = "in-reserve"
proposal.result.save() proposal.result.save()
return redirect(request.path) return redirect(request.path)
@ -357,7 +360,7 @@ def review_bulk_accept(request, section_slug):
talk_ids = form.cleaned_data["talk_ids"].split(",") talk_ids = form.cleaned_data["talk_ids"].split(",")
talks = ProposalBase.objects.filter(id__in=talk_ids).select_related("result") talks = ProposalBase.objects.filter(id__in=talk_ids).select_related("result")
for talk in talks: for talk in talks:
talk.result.accepted = True talk.result.status = "accepted"
talk.result.save() talk.result.save()
return redirect("review_list") return redirect("review_list")
else: else:

View file

@ -10,7 +10,7 @@
<span class="label label-important">Cancelled</span> <span class="label label-important">Cancelled</span>
{% else %} {% else %}
{% if request.user == proposal.speaker.user %} {% if request.user == proposal.speaker.user %}
{% if proposal.result.accepted %} {% if proposal.result.status == "accepted" %}
<span class="label label-success">Accepted</span> <span class="label label-success">Accepted</span>
{% else %} {% else %}
<span class="label">Submitted</span> <span class="label">Submitted</span>

View file

@ -10,7 +10,7 @@
<span class="label label-important">Cancelled</span> <span class="label label-important">Cancelled</span>
{% else %} {% else %}
{% if request.user == proposal.speaker.user %} {% if request.user == proposal.speaker.user %}
{% if proposal.result.accepted %} {% if proposal.result.status == "accepted" %}
<span class="label label-success">Accepted</span> <span class="label label-success">Accepted</span>
{% else %} {% else %}
<span class="label">Submitted</span> <span class="label">Submitted</span>