Set status for BFCT profiles pending subscription

This commit is contained in:
2015-02-24 14:48:35 +01:00
parent 8e04528804
commit 79304a519a
3 changed files with 62 additions and 10 deletions

View File

@@ -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/<int:approved>/<int:id>')
@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/<int:application_id>/status/<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'

View File

@@ -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")

View File

@@ -49,6 +49,16 @@
</div>
<div class="col-md-4">
<h3>Application Status</h3>
{% if current_user.has_role('admin') %}
<div class="row jobs-admin">
<div class="col-md-6 col-sm-6 col-xs-6">
Job Status:
</div>
<div class="col-md-6 col-sm-6 col-xs-6">
{{ application_status_form.status }}
</div>
</div>
{% endif %}
<div class="box">
{% if application.status == 'under_review' %}
<i class="backicon fa fa-clock-o"></i>
@@ -203,3 +213,17 @@
</div>
{% endblock %}
{% block footer_scripts %}
<script type="text/javascript">
$(document).ready(function() {
{% if current_user.has_role('network_admin') %}
$( "#set_status" ).change(function() {
$.get( "{{config.SUBFOLDER}}" + "/applications/edit/" + {{application.id}} + "/status/" + $(this).val());
console.log($(this).val());
});
{% endif %}
});
</script>
{% endblock %}