Ejemplo n.º 1
0
def reviewer_register():
    form = ReviewerRegisterForm(request.form)
    if form.validate_on_submit():
        created_user = User.create(username=form.username.data, email=form.email.data, password=form.password.data, user_group=2, active=True)
        Reviewer.create(name=form.reviewer_name.data, user=created_user, user_id=created_user.id, department=form.reviewer_department.data)
        flash('Reviewer created successfully', 'success')
        return redirect(url_for('admin.reviewer_manage_panel'))
    else:
        flash_errors(form)
    return render_template('admin/reviewer_register.html', form=form)
Ejemplo n.º 2
0
def reviewer_delete(reviewer_id):
    """
    Delete existing reviewer. It only accepts POST method. User is redirected to reviewer manage panel after successful deletion.

    :param int reviewer_id: Which reviewer to delete (the unique id in reviewers table) .
    """
    reviewer = Reviewer.get_by_id(reviewer_id)
    review_list = Review.query.filter_by(reviewer_id=reviewer_id).all()
    for review in review_list:
        review.delete()
    user = reviewer.user
    reviewer.delete()
    user.delete()
    flash("Reviewer deleted. You're all set.", 'success')
    return redirect(url_for('admin.reviewer_manage_panel'))
Ejemplo n.º 3
0
 def select_multi_checkbox(self, table_class='table', **kwargs):
     field = self.reviewers
     kwargs.setdefault('type', 'checkbox')
     field_id = kwargs.pop('id', field.id)
     html = ['<table %s>' % html_params(id=field_id, class_=table_class)]
     html.append("""<tr>
                      <th>Name</th>
                      <th>Department</th>
                      <th>Selected</th>
                    </tr>""")
     for value, label, checked in field.iter_choices():
         reviewer_info = Reviewer.get_by_id(value)
         html.append("<tr>\n")
         choice_id = '%s-%s' % (field_id, value)
         options = dict(kwargs, name=field.name, value=value, id=choice_id)
         if checked:
             options['checked'] = 'checked'
         html.append('<td><label for="%s">%s</label></td>\n' % (field_id, label))
         html.append('<td>' + reviewer_info.department + '</td>\n')
         html.append('<td><input %s /></td>\n' % html_params(**options))
         html.append('</tr>')
     html.append('</table>')
     return ''.join(html)
Ejemplo n.º 4
0
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)