def work_review(work_id): current_reviewer = current_user.reviewer work = Work.get_by_id(work_id) form = WorkReviewForm() review = Review.query.filter_by(work_id=work_id, reviewer_id=current_reviewer.id).first() if not review: flash("You're trying to review a work not assigned to you.", 'warning') return redirect(url_for('reviewer.works_review_panel')) if form.validate_on_submit(): review.update(score=form.score.data, comment=form.comment.data) flash("Work successfully scored. You're all set.", 'success') return redirect(url_for('reviewer.works_review_panel')) else: flash_errors(form) if request.method == 'GET': form.score.data = review.score form.comment.data = review.comment return render_template('reviewer/work_review.html', form=form, work=work)
def work_assign(event_id, work_id): current_work = Work.get_by_id(work_id) reviewer_list = Reviewer.query.order_by('id').all() form = WorksAssignForm() form.reviewers.choices = [(r.id, r.name) for r in reviewer_list] current_assignment = Review.query.filter_by(work_id=work_id).all() if form.validate_on_submit(): selected_reviewers = form.reviewers.data for reviewer_id in selected_reviewers: if not Review.query.filter_by(work_id=work_id, reviewer_id=reviewer_id).first(): Review.create(work_id=work_id, reviewer_id=reviewer_id, work=current_work, reviewer=Reviewer.get_by_id(reviewer_id)) for review in current_assignment: if review.reviewer_id not in selected_reviewers: review.delete() flash("Work assigned successfully. You're all set.", 'success') return redirect(url_for('admin.event_detail', event_id=event_id)) else: flash_errors(form) if request.method == 'GET' : current_assignment_id = [r.reviewer_id for r in current_assignment] form.reviewers.data = current_assignment_id return render_template('admin/event_works_assign.html', event_id=event_id, form=form, work=current_work)