@@ -72,7 +72,7 @@ def create_study(self, title, short_code, is_longitudinal, lead_person, descript
7272 return study
7373
7474 def get_study (self , study_id ):
75- # type: (int) -> Tuple[Study, List[StudySubject], List[Specimen]]
75+ # type: (int) -> Tuple[Study, List[StudySubject], List[Specimen], List[MatrixTube] ]
7676 """
7777 Get a study
7878 :param study_id: study ID
@@ -91,28 +91,36 @@ def _get_study_by_short_code(session, short_code):
9191 return study
9292
9393 def edit_study (self , study ):
94- # type: (Study) -> Study
94+ # type: (Study) -> Tuple[ Study, List[StudySubject], List[Specimen], List[MatrixTube]]
9595 with self ._session_scope () as session :
9696 old_study = session .query (Study ).get (study .id )
9797 old_study .title = study .title
9898 old_study .description = study .description
9999 old_study .short_code = study .short_code
100100 old_study .is_longitudinal = study .is_longitudinal
101101 old_study .lead_person = study .lead_person
102- return old_study
102+ study_subjects = session .query (StudySubject ).filter (StudySubject .study_id == old_study .id ).all () # type: list[StudySubject]
103+ specimens = session .query (Specimen ).join (StudySubject ).filter (StudySubject .study_id == old_study .id ).all () # type: list[Specimen]
104+ matrix_tubes = session .query (MatrixTube ).join (Specimen ).join (StudySubject ).filter (StudySubject .study_id == old_study .id ).all ()
105+ return old_study , study_subjects , specimens , matrix_tubes
103106
104107 def update_study (self , id , d ):
105- # type: (int, dict) -> Study
108+ # type: (int, dict) -> Tuple[ Study, List[StudySubject], List[Specimen], List[MatrixTube]]
106109 with self ._session_scope () as session :
107110 with session .no_autoflush :
108111 study = session .query (Study ).get (id )
109112 study .update (d )
110- return study
113+ study_subjects = session .query (StudySubject ).filter (
114+ StudySubject .study_id == study .id ).all () # type: list[StudySubject]
115+ specimens = session .query (Specimen ).join (StudySubject ).filter (
116+ StudySubject .study_id == study .id ).all () # type: list[Specimen]
117+ matrix_tubes = session .query (MatrixTube ).join (Specimen ).join (StudySubject ).filter (
118+ StudySubject .study_id == study .id ).all ()
119+ return study , study_subjects , specimens , matrix_tubes
111120
112121 def delete_study (self , study ):
113122 # type: (Study) -> boolean
114123 with self ._session_scope () as session :
115- print study
116124 s = session .query (Study ).get (study .id )
117125 session .delete (s )
118126 return True
0 commit comments