4444from mavedb .models .taxonomy import Taxonomy
4545from mavedb .models .uniprot_identifier import UniprotIdentifier
4646from mavedb .models .uniprot_offset import UniprotOffset
47+ from mavedb .models .user import User
4748from mavedb .models .variant import Variant
4849from mavedb .view_models .search import ScoreSetsSearch
4950
@@ -66,29 +67,19 @@ def options(cls) -> list[str]:
6667 return [cls .NUCLEOTIDE , cls .TRANSCRIPT , cls .PROTEIN ]
6768
6869
69- def search_score_sets (db : Session , owner_or_contributor : Optional ["UserData" ], search : ScoreSetsSearch ) -> list [ScoreSet ]:
70- # Prevent circular import
71- from mavedb .lib .permissions import Action
70+ def search_score_sets (db : Session , owner_or_contributor : Optional [User ], search : ScoreSetsSearch ) -> list [ScoreSet ]:
7271 save_to_logging_context ({"score_set_search_criteria" : search .dict ()})
7372
7473 query = db .query (ScoreSet ) # \
7574 # .filter(ScoreSet.private.is_(False))
7675
77- if owner_or_contributor is not None and search .me is not None :
78- if search .me :
79- query = query .filter (
80- or_ (
81- ScoreSet .created_by_id == owner_or_contributor .user .id ,
82- ScoreSet .contributors .any (Contributor .orcid_id == owner_or_contributor .user .username ),
83- )
84- )
85- else :
86- query = query .filter (
87- and_ (
88- ScoreSet .created_by_id != owner_or_contributor .user .id ,
89- ~ ScoreSet .contributors .any (Contributor .orcid_id == owner_or_contributor .user .username ),
90- )
76+ if owner_or_contributor is not None :
77+ query = query .filter (
78+ or_ (
79+ ScoreSet .created_by_id == owner_or_contributor .id ,
80+ ScoreSet .contributors .any (Contributor .orcid_id == owner_or_contributor .username ),
9181 )
82+ )
9283
9384 if search .published is not None :
9485 if search .published :
@@ -264,45 +255,48 @@ def search_score_sets(db: Session, owner_or_contributor: Optional["UserData"], s
264255 .order_by (Experiment .title )
265256 .all ()
266257 )
267- print (score_sets )
268- # Remove superseded score set
269258 if not score_sets :
270- print ("if no score set" )
271- final_score_sets : list [ScoreSet ] = []
272- else :
273- if search .published :
274- filtered_score_sets_tail = [
275- find_publish_or_private_superseded_score_set_tail (
276- score_set ,
277- Action .READ ,
278- owner_or_contributor ,
279- search .published
280- ) for score_set in score_sets
281- ]
282- else :
283- print ("filtered_tail" )
284- filtered_score_sets_tail = [
285- find_superseded_score_set_tail (
286- score_set ,
287- Action .READ ,
288- owner_or_contributor
289- ) for score_set in score_sets
290- ]
291- print (len (filtered_score_sets_tail ))
292- # Remove None item.
293- filtered_score_sets = [score_set for score_set in filtered_score_sets_tail if score_set is not None ]
294- print (len (filtered_score_sets ))
295- if filtered_score_sets :
296- final_score_sets = sorted (set (filtered_score_sets ), key = attrgetter ("urn" ))
297- for f in filtered_score_sets :
298- print (f .urn )
299- else :
300- final_score_sets = []
259+ score_sets = []
260+
261+ save_to_logging_context ({"matching_resources" : len (score_sets )})
262+ logger .debug (msg = f"Score set search yielded { len (score_sets )} matching resources." , extra = logging_context ())
263+
264+ return score_sets # filter_visible_score_sets(score_sets)
265+
301266
302- save_to_logging_context ({"matching_resources" : len (final_score_sets )})
303- logger .debug (msg = f"Score set search yielded { len (final_score_sets )} matching resources." , extra = logging_context ())
304- print (len (final_score_sets ))
305- return final_score_sets # filter_visible_score_sets(score_sets)
267+ def fetch_superseding_score_set_in_search_result (
268+ score_sets : list [ScoreSet ],
269+ requesting_user : Optional ["UserData" ],
270+ search : ScoreSetsSearch ) -> list [ScoreSet ]:
271+ """
272+ Remove superseded score set from search results.
273+ Check whether all of the score set are correct versions.
274+ """
275+ from mavedb .lib .permissions import Action
276+ if search .published :
277+ filtered_score_sets_tail = [
278+ find_publish_or_private_superseded_score_set_tail (
279+ score_set ,
280+ Action .READ ,
281+ requesting_user ,
282+ search .published
283+ ) for score_set in score_sets
284+ ]
285+ else :
286+ filtered_score_sets_tail = [
287+ find_superseded_score_set_tail (
288+ score_set ,
289+ Action .READ ,
290+ requesting_user
291+ ) for score_set in score_sets
292+ ]
293+ # Remove None item.
294+ filtered_score_sets = [score_set for score_set in filtered_score_sets_tail if score_set is not None ]
295+ if filtered_score_sets :
296+ final_score_sets = sorted (set (filtered_score_sets ), key = attrgetter ("urn" ))
297+ else :
298+ final_score_sets = []
299+ return final_score_sets
306300
307301
308302def find_meta_analyses_for_experiment_sets (db : Session , urns : list [str ]) -> list [ScoreSet ]:
0 commit comments