From 5594e20f7a1f6b5a7cdc535aeead4a5923477fd6 Mon Sep 17 00:00:00 2001 From: mollybuckley Date: Fri, 8 Mar 2024 16:33:55 +0000 Subject: [PATCH 1/5] filter displayed studies by current user id --- app/main/routes.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/main/routes.py b/app/main/routes.py index dbb408d..395ee81 100644 --- a/app/main/routes.py +++ b/app/main/routes.py @@ -123,9 +123,14 @@ def delete(series_id=None, report_id=None): def workbench(): # Save current user's ID to browser session session["current_user_id"] = current_user.id - - # Display available image Series, grouped by Study UID - studies = db.session.query(Study).order_by(Study.created_at.desc()) + current_user_id = current_user.id + + # Obtain available image Series for current user ID + series = db.session.query(Series).filter_by(user_id=current_user_id).all() + # Obtain study IDs from each series uploaded by current user + study_ids = {series.study_id for series in series} + # Filter studies to those uploaded by current user, sort by creation date + studies = db.session.query(Study).filter(Study.id.in_(study_ids)).order_by(Study.created_at.desc()).all() # Collect device information about studies for display study_device_list = [ {"study": study, "device": study.series[0].devices} for study in studies From 14b01ee8e73a32ed141e493e7592e5ed082a8511 Mon Sep 17 00:00:00 2001 From: mollybuckley Date: Fri, 24 May 2024 16:12:31 +0100 Subject: [PATCH 2/5] Update routes.py Filter reports by specific user --- app/main/routes.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/main/routes.py b/app/main/routes.py index 395ee81..1a15cf0 100644 --- a/app/main/routes.py +++ b/app/main/routes.py @@ -362,8 +362,11 @@ def series_view(series_id): @bp.route("/reports/", methods=["GET", "POST"]) @login_required def reports(): + + current_user_id = current_user.id + # Display existing reports - reports = db.session.query(Report).order_by(Report.created_at.desc()) + reports = db.session.query(Report).filter_by(user_id=current_user_id).order_by(Report.created_at.desc()) # Display reports in a table page = request.args.get("page", 1, type=int) From 336b585577854f893fc85b989c396da3d9e677a0 Mon Sep 17 00:00:00 2001 From: mollybuckley Date: Fri, 2 Aug 2024 11:14:31 +0100 Subject: [PATCH 3/5] TODO (identified where needs changing to dropdown menu - for Beatriz) --- app/auth/forms.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/auth/forms.py b/app/auth/forms.py index fed0fa7..ce1d8a6 100644 --- a/app/auth/forms.py +++ b/app/auth/forms.py @@ -8,6 +8,7 @@ class RegistrationForm(FlaskForm): firstname = StringField('First name', validators=[DataRequired()]) lastname = StringField('Last name', validators=[DataRequired()]) + #TODO: change this line to dropdown menu connected to database: institution = StringField('Institution', validators=[DataRequired()]) username = StringField('Username', validators=[DataRequired()]) From d5ad0a8c0a2e7ae62934a7f5a069594b4c1c7724 Mon Sep 17 00:00:00 2001 From: Biaaaaaa12 Date: Fri, 2 Aug 2024 16:37:15 +0100 Subject: [PATCH 4/5] Drop-Down --- app/auth/forms.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/auth/forms.py b/app/auth/forms.py index fed0fa7..ec35119 100644 --- a/app/auth/forms.py +++ b/app/auth/forms.py @@ -1,14 +1,16 @@ from flask_wtf import FlaskForm -from wtforms import PasswordField, BooleanField, SubmitField, StringField, TextAreaField +from wtforms import PasswordField, BooleanField, SubmitField, StringField, TextAreaField, SelectField from wtforms.validators import ValidationError, DataRequired, Length, Email, EqualTo from app.models import User class RegistrationForm(FlaskForm): + firstname = StringField('First name', validators=[DataRequired()]) lastname = StringField('Last name', validators=[DataRequired()]) - institution = StringField('Institution', validators=[DataRequired()]) + + institution = SelectField('Institution', choices=[('Gstt')], validators=[DataRequired()]) username = StringField('Username', validators=[DataRequired()]) email = StringField('Email', validators=[DataRequired(), Email()]) From a5d5d8d3e1c31fcf2f2aa71e49f3536a000716e5 Mon Sep 17 00:00:00 2001 From: mollybuckley Date: Mon, 9 Sep 2024 12:05:30 +0100 Subject: [PATCH 5/5] get fields for dropdown menu from database --- app/auth/forms.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/auth/forms.py b/app/auth/forms.py index ec35119..3fdffe3 100644 --- a/app/auth/forms.py +++ b/app/auth/forms.py @@ -1,7 +1,7 @@ from flask_wtf import FlaskForm from wtforms import PasswordField, BooleanField, SubmitField, StringField, TextAreaField, SelectField from wtforms.validators import ValidationError, DataRequired, Length, Email, EqualTo - +from sqlalchemy import distinct from app.models import User @@ -18,6 +18,10 @@ class RegistrationForm(FlaskForm): password2 = PasswordField( 'Repeat Password', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField('Register') + def __init__(self, *args, **kwargs): + super(RegistrationForm, self).__init__(*args, **kwargs) + institutions = User.query.with_entities(distinct(User.institution)).all() + self.institution.choices = [(inst[0], inst[0]) for inst in institutions] def validate_username(self, username): user = User.query.filter_by(username=username.data).first()