Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions app/auth/forms.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
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 sqlalchemy import distinct
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()])
password = PasswordField('Password', validators=[DataRequired()])
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()
Expand Down
16 changes: 12 additions & 4 deletions app/main/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -357,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)
Expand Down