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)
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'))
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)
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)