Changeset - 349422fae8a3
[Not reviewed]
Merge
0 2 1
James Tauber - 11 years ago 2013-07-03 23:51:47
jtauber@jtauber.com
Merge pull request #38 from taavi/review-assignments-script

Adds a manage.py script to assign reviewers to talks.
2 files changed with 27 insertions and 3 deletions:
0 comments (0 inline, 0 general)
symposion/reviews/management/commands/assign_reviewers.py
Show inline comments
 
new file 100644
 
import csv
 
import os
 
import random
 

	
 
from django.contrib.auth import models
 
from django.core.management.base import BaseCommand
 

	
 
from symposion.reviews.models import ReviewAssignment
 
from symposion.proposals.models import ProposalBase
 

	
 

	
 
class Command(BaseCommand):
 

	
 
    def handle(self, *args, **options):
 
        for proposal in ProposalBase.objects.filter(cancelled=0):
 
            print "Creating assignments for %s" % (proposal.title,)
 
            ReviewAssignment.create_assignments(proposal)
symposion/reviews/models.py
Show inline comments
...
 
@@ -43,6 +43,8 @@ class ReviewAssignment(models.Model):
 
    AUTO_ASSIGNED_INITIAL = 0
 
    OPT_IN = 1
 
    AUTO_ASSIGNED_LATER = 2
 

	
 
    NUM_REVIEWERS = 3
 
    
 
    ORIGIN_CHOICES = [
 
        (AUTO_ASSIGNED_INITIAL, "auto-assigned, initial"),
...
 
@@ -66,7 +68,10 @@ class ReviewAssignment(models.Model):
 
                speaker.user_id
 
                for speaker in speakers
 
                if speaker.user_id is not None
 
            ]
 
            ] + [
 
                assignment.user_id
 
                for assignment in ReviewAssignment.objects.filter(
 
                    proposal_id=proposal.id)]
 
        ).filter(
 
            groups__name="reviewers",
 
        ).filter(
...
 
@@ -74,9 +79,11 @@ class ReviewAssignment(models.Model):
 
        ).annotate(
 
            num_assignments=models.Count("reviewassignment")
 
        ).order_by(
 
            "num_assignments",
 
            "num_assignments", "?",
 
        )
 
        for reviewer in reviewers[:3]:
 
        num_assigned_reviewers = ReviewAssignment.objects.filter(
 
            proposal_id=proposal.id, opted_out=0).count()
 
        for reviewer in reviewers[:max(0, cls.NUM_REVIEWERS - num_assigned_reviewers)]:
 
            cls._default_manager.create(
 
                proposal=proposal,
 
                user=reviewer,
0 comments (0 inline, 0 general)