diff --git a/blender-bfct/application/controllers/applications.py b/blender-bfct/application/controllers/applications.py index 6e18cb8..b740491 100644 --- a/blender-bfct/application/controllers/applications.py +++ b/blender-bfct/application/controllers/applications.py @@ -4,6 +4,7 @@ from sqlalchemy import desc from application import db from application.forms import CommentForm +from application.forms import ApplicationStatusForm from application.models.users import * from application.models.applications import Application, Skill, ReviewersApplications, Comment @@ -26,8 +27,10 @@ def index(): @login_required @roles_accepted('bfct_board', 'bfct_manager', 'admin') def view(id): - + application = Application.query.get_or_404(id) comment_form = CommentForm() + application_status_form = ApplicationStatusForm( + status=application.status) review = ReviewersApplications.query.\ filter_by(application_id=id).\ @@ -40,10 +43,11 @@ def view(id): return render_template('applications/view.html', title='applications', - application=Application.query.get_or_404(id), + application=application, review=review, reviews=reviews, - comment_form=comment_form) + comment_form=comment_form, + application_status_form=application_status_form) @applications.route('/vote//') @roles_accepted('bfct_board', 'bfct_manager', 'admin') @@ -85,10 +89,7 @@ def vote(approved, id): @roles_accepted('bfct_manager', 'admin') def final_review(approved, id): application = Application.query.get_or_404(id) - - if application.status != 'under_review': - return 'error' - else: + if application.status in ['under_review', 'pending']: if approved: application.status = 'approved' else: @@ -96,9 +97,11 @@ def final_review(approved, id): review_end_date = datetime.datetime.now() application.review_end_date = review_end_date application.renewal_date = review_end_date + relativedelta(years=1) - db.session.add(application) + db.session.add(application) - db.session.commit() + db.session.commit() + else: + return abort(404) return redirect(url_for('.view', id=id)) @@ -135,3 +138,13 @@ def update_bfct_role(application_id): user_datastore.remove_role_from_user(user, 'bfct_trainer') db.session.commit() return redirect(url_for('.view', id=application_id)) + + +@applications.route('/edit//status/') +@roles_accepted('bfct_manager', 'admin') +def set_status(application_id, status): + application = Application.query.get_or_404(application_id) + application.status = status + + db.session.commit() + return 'ok' diff --git a/blender-bfct/application/forms.py b/blender-bfct/application/forms.py index 85ddbce..1835810 100644 --- a/blender-bfct/application/forms.py +++ b/blender-bfct/application/forms.py @@ -1,5 +1,10 @@ from flask_wtf import Form -from wtforms import TextField, TextAreaField, BooleanField, SelectMultipleField +from wtforms import TextField +from wtforms import TextAreaField +from wtforms import BooleanField +from wtforms import SelectMultipleField +from wtforms import SelectField + from wtforms.validators import DataRequired from wtforms.fields.html5 import URLField from wtforms.validators import url @@ -18,3 +23,13 @@ class ApplicationForm(Form): class CommentForm(Form): text = TextAreaField('Your comment', validators=[DataRequired()]) + +class ApplicationStatusForm(Form): + status = SelectField('Status', + choices=[ + ('submitted', 'Submitted'), + ('under_review', 'Under Review'), + ('pending', 'Pending subscription'), + ('approved', 'Approved'), + ('rejected', 'Rejected')], + id="set_status") diff --git a/blender-bfct/application/templates/applications/view.html b/blender-bfct/application/templates/applications/view.html index 0541a12..3a771bd 100755 --- a/blender-bfct/application/templates/applications/view.html +++ b/blender-bfct/application/templates/applications/view.html @@ -49,6 +49,16 @@

Application Status

+ {% if current_user.has_role('admin') %} +
+
+ Job Status: +
+
+ {{ application_status_form.status }} +
+
+ {% endif %}
{% if application.status == 'under_review' %} @@ -203,3 +213,17 @@
{% endblock %} + +{% block footer_scripts %} + +{% endblock %} +