Set status for BFCT profiles pending subscription
This commit is contained in:
@@ -4,6 +4,7 @@ from sqlalchemy import desc
|
|||||||
|
|
||||||
from application import db
|
from application import db
|
||||||
from application.forms import CommentForm
|
from application.forms import CommentForm
|
||||||
|
from application.forms import ApplicationStatusForm
|
||||||
from application.models.users import *
|
from application.models.users import *
|
||||||
from application.models.applications import Application, Skill, ReviewersApplications, Comment
|
from application.models.applications import Application, Skill, ReviewersApplications, Comment
|
||||||
|
|
||||||
@@ -26,8 +27,10 @@ def index():
|
|||||||
@login_required
|
@login_required
|
||||||
@roles_accepted('bfct_board', 'bfct_manager', 'admin')
|
@roles_accepted('bfct_board', 'bfct_manager', 'admin')
|
||||||
def view(id):
|
def view(id):
|
||||||
|
application = Application.query.get_or_404(id)
|
||||||
comment_form = CommentForm()
|
comment_form = CommentForm()
|
||||||
|
application_status_form = ApplicationStatusForm(
|
||||||
|
status=application.status)
|
||||||
|
|
||||||
review = ReviewersApplications.query.\
|
review = ReviewersApplications.query.\
|
||||||
filter_by(application_id=id).\
|
filter_by(application_id=id).\
|
||||||
@@ -40,10 +43,11 @@ def view(id):
|
|||||||
|
|
||||||
return render_template('applications/view.html',
|
return render_template('applications/view.html',
|
||||||
title='applications',
|
title='applications',
|
||||||
application=Application.query.get_or_404(id),
|
application=application,
|
||||||
review=review,
|
review=review,
|
||||||
reviews=reviews,
|
reviews=reviews,
|
||||||
comment_form=comment_form)
|
comment_form=comment_form,
|
||||||
|
application_status_form=application_status_form)
|
||||||
|
|
||||||
@applications.route('/vote/<int:approved>/<int:id>')
|
@applications.route('/vote/<int:approved>/<int:id>')
|
||||||
@roles_accepted('bfct_board', 'bfct_manager', 'admin')
|
@roles_accepted('bfct_board', 'bfct_manager', 'admin')
|
||||||
@@ -85,10 +89,7 @@ def vote(approved, id):
|
|||||||
@roles_accepted('bfct_manager', 'admin')
|
@roles_accepted('bfct_manager', 'admin')
|
||||||
def final_review(approved, id):
|
def final_review(approved, id):
|
||||||
application = Application.query.get_or_404(id)
|
application = Application.query.get_or_404(id)
|
||||||
|
if application.status in ['under_review', 'pending']:
|
||||||
if application.status != 'under_review':
|
|
||||||
return 'error'
|
|
||||||
else:
|
|
||||||
if approved:
|
if approved:
|
||||||
application.status = 'approved'
|
application.status = 'approved'
|
||||||
else:
|
else:
|
||||||
@@ -96,9 +97,11 @@ def final_review(approved, id):
|
|||||||
review_end_date = datetime.datetime.now()
|
review_end_date = datetime.datetime.now()
|
||||||
application.review_end_date = review_end_date
|
application.review_end_date = review_end_date
|
||||||
application.renewal_date = review_end_date + relativedelta(years=1)
|
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))
|
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')
|
user_datastore.remove_role_from_user(user, 'bfct_trainer')
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect(url_for('.view', id=application_id))
|
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'
|
||||||
|
@@ -1,5 +1,10 @@
|
|||||||
from flask_wtf import Form
|
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.validators import DataRequired
|
||||||
from wtforms.fields.html5 import URLField
|
from wtforms.fields.html5 import URLField
|
||||||
from wtforms.validators import url
|
from wtforms.validators import url
|
||||||
@@ -18,3 +23,13 @@ class ApplicationForm(Form):
|
|||||||
|
|
||||||
class CommentForm(Form):
|
class CommentForm(Form):
|
||||||
text = TextAreaField('Your comment', validators=[DataRequired()])
|
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")
|
||||||
|
@@ -49,6 +49,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<h3>Application Status</h3>
|
<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">
|
<div class="box">
|
||||||
{% if application.status == 'under_review' %}
|
{% if application.status == 'under_review' %}
|
||||||
<i class="backicon fa fa-clock-o"></i>
|
<i class="backicon fa fa-clock-o"></i>
|
||||||
@@ -203,3 +213,17 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% 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 %}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user