Skip to content
Snippets Groups Projects
Commit f50d38e7 authored by Ivan Procaccini's avatar Ivan Procaccini :computer:
Browse files

Merge branch 'auto-shortlist-student-proposal' into 'master'

Auto-shortlist the student proposer in case of project proposed by a student.

See merge request !4
parents b6306052 0ca6e0bc
No related branches found
No related tags found
1 merge request!4Auto-shortlist the student proposer in case of project proposed by a student.
Pipeline #315034 passed
...@@ -13,6 +13,23 @@ from app.models.shortlist import Shortlisting ...@@ -13,6 +13,23 @@ from app.models.shortlist import Shortlisting
bp = Blueprint("staff", __name__, url_prefix="/staff") bp = Blueprint("staff", __name__, url_prefix="/staff")
def shortlist_proposer(project):
shortlisting = Shortlisting(student=project.on_behalf, project_id=project.id)
db.session.add(shortlisting)
db.session.commit()
def unshortlist_old_proposer(project: Project):
shortlisting: Shortlisting = (
Shortlisting.query.filter(Shortlisting.project_id == project.id)
.filter_by(student=project.on_behalf)
.first()
)
if shortlisting:
db.session.delete(shortlisting)
db.session.commit()
@bp.route("/projects") @bp.route("/projects")
@login_required @login_required
def projects(): def projects():
...@@ -37,6 +54,8 @@ def create_project(): ...@@ -37,6 +54,8 @@ def create_project():
) )
db.session.add(project) db.session.add(project)
db.session.commit() db.session.commit()
if project.on_behalf:
shortlist_proposer(project)
return redirect(url_for("staff.projects")) return redirect(url_for("staff.projects"))
return render_template("pages/project-form.html", form=form) return render_template("pages/project-form.html", form=form)
...@@ -57,11 +76,16 @@ def delete_project(project_id): ...@@ -57,11 +76,16 @@ def delete_project(project_id):
def edit_project(project_id): def edit_project(project_id):
if project := Project.query.get(project_id): if project := Project.query.get(project_id):
form = ProjectForm() form = ProjectForm()
on_behalf_changed = project.on_behalf != form.on_behalf.data
if on_behalf_changed and project.on_behalf:
unshortlist_old_proposer(project)
if form.validate_on_submit(): if form.validate_on_submit():
project.title = form.title.data project.title = form.title.data
project.description = form.description.data project.description = form.description.data
project.on_behalf = form.on_behalf.data project.on_behalf = form.on_behalf.data
db.session.commit() db.session.commit()
if project.on_behalf and on_behalf_changed:
shortlist_proposer(project)
return redirect(url_for("staff.projects")) return redirect(url_for("staff.projects"))
form = ProjectForm(obj=project) form = ProjectForm(obj=project)
return render_template("pages/project-form.html", form=form, project=project) return render_template("pages/project-form.html", form=form, project=project)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment