def dashboard(request): user = request.user # assign new reviewing tasks to this user new_task_count = 0 allow_requesting_more_tasks = False live_review_milestones = ReviewMilestone.objects.filter(assigned_date__lt=datetime.datetime.now(),\ duedate__gt=datetime.datetime.now(), assignment__semester__members__user=user).all() for review_milestone in live_review_milestones: #logging.debug("live reviewing milestone: " + review_milestone) current_tasks = user.tasks.filter(milestone=review_milestone) active_sub = Submission.objects.filter(authors=user, milestone=review_milestone.submit_milestone) try: membership = Member.objects.get(user=user, semester=review_milestone.assignment.semester) if active_sub.count() or not Member.STUDENT in membership.role: #logging.debug("I can have assignments") # user is a student with an existing submission, or isn't a student # allow user to request more tasks manually allow_requesting_more_tasks = True if not current_tasks.count(): # automatically assign new tasks to student ONLY if they don't already have tasks #logging.debug("assigning tasks") new_task_count += assign_tasks(review_milestone, user) except ObjectDoesNotExist: pass return dashboard_for(request, user, new_task_count)
def more_work(request): if request.method == 'POST': user = request.user new_task_count = 0 current_tasks = user.tasks.exclude(status='C').exclude(status='U') total = 0 if not current_tasks.count(): live_review_milestones = ReviewMilestone.objects.filter(assigned_date__lt=datetime.datetime.now(),\ duedate__gt=datetime.datetime.now(), assignment__semester__members_user=user).all() for milestone in live_review_milestones: current_tasks = user.tasks.filter(milestone=milestone) active_sub = Submission.objects.filter(name=user.username, milestone=milestone.reviewmilestone.submit_milestone) #do not give tasks to students who got extensions or already have tasks for this assignment if (not current_tasks.count()) and active_sub.count(): open_assignments = True total += assign_tasks(milestone, user, tasks_to_assign=2) active_tasks = user.tasks \ .select_related('chunk__file__submission__milestone__assignment') \ .exclude(status='C') \ .exclude(status='U') \ .annotate(comment_count=Count('chunk__comments', distinct=True), reviewer_count=Count('chunk__tasks', distinct=True)) one = active_tasks.all()[0] two = active_tasks.all()[1] response_json = json.dumps({ 'total': total, 'one': {"task_chunk_name": one.chunk.name, \ "task_comment_count": one.comment_count,\ "task_reviewer_count": one.reviewer_count, \ "task_chunk_generate_snippet": one.chunk.generate_snippet(),\ "task_id": one.id,\ "task_chunk_id": one.chunk.id}, 'two': {"task_chunk_name": two.chunk.name, \ "task_comment_count": two.comment_count,\ "task_reviewer_count": two.reviewer_count, \ "task_chunk_generate_snippet": two.chunk.generate_snippet(),\ "task_id": two.id,\ "task_chunk_id": two.chunk.id}, }) return HttpResponse(response_json, mimetype='application/javascript') return render(request, 'accounts/manage.html', { })
def dashboard(request): user = request.user new_task_count = 0 for assignment in Assignment.objects.all(): new_task_count += assign_tasks(assignment, user) active_tasks = user.get_profile().tasks \ .select_related('chunk__file__submission_assignment') \ .exclude(status='C') \ .annotate(comment_count=Count('chunk__comments', distinct=True), reviewer_count=Count('chunk__tasks', distinct=True)) completed_tasks = user.get_profile().tasks \ .select_related('chunk__file__submission__assignment') \ .filter(status='C') \ .annotate(comment_count=Count('chunk__comments', distinct=True), reviewer_count=Count('chunk__tasks', distinct=True)) #get all the submissions that the user submitted submissions = user.submissions \ .filter(duedate__lt=datetime.datetime.now()) \ .order_by('files__chunks__comments__modified') \ .select_related('chunk__file__assignment') \ .annotate(last_modified=Max('files__chunks__comments__modified')) submission_data = [] for submission in submissions: user_comments = Comment.objects.filter(chunk__file__submission=submission).filter(type='U').count() static_comments = Comment.objects.filter(chunk__file__submission=submission).filter(type='S').count() reviewer_count = UserProfile.objects.filter(tasks__chunk__file__submission = submission).count() submission_data.append((submission, reviewer_count, submission.last_modified, user_comments, static_comments)) #find the current assignments current_submissions = user.submissions.filter(duedate__gt=datetime.datetime.now()).order_by('duedate') return render(request, 'review/dashboard.html', { 'active_tasks': active_tasks, 'completed_tasks': completed_tasks, 'new_task_count': new_task_count, 'submission_data': submission_data, 'current_submissions': current_submissions, })