Skip to content

Commit 8a4b426

Browse files
committed
Modify codes.
1 parent 63ee6e0 commit 8a4b426

File tree

3 files changed

+53
-58
lines changed

3 files changed

+53
-58
lines changed

src/mavedb/lib/score_sets.py

Lines changed: 48 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
from mavedb.models.taxonomy import Taxonomy
4545
from mavedb.models.uniprot_identifier import UniprotIdentifier
4646
from mavedb.models.uniprot_offset import UniprotOffset
47+
from mavedb.models.user import User
4748
from mavedb.models.variant import Variant
4849
from 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

308302
def find_meta_analyses_for_experiment_sets(db: Session, urns: list[str]) -> list[ScoreSet]:

src/mavedb/routers/score_sets.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
variants_to_csv_rows,
3939
)
4040
from mavedb.lib.score_sets import (
41+
fetch_superseding_score_set_in_search_result,
4142
search_score_sets as _search_score_sets,
4243
refresh_variant_urns,
4344
)
@@ -127,7 +128,8 @@ def search_score_sets(
127128
"""
128129
Search score sets.
129130
"""
130-
return _search_score_sets(db, user_data, search)
131+
score_sets = _search_score_sets(db, None, search)
132+
return fetch_superseding_score_set_in_search_result(score_sets, user_data, search)
131133

132134

133135
@router.post(
@@ -143,8 +145,8 @@ def search_my_score_sets(
143145
"""
144146
Search score sets created by the current user..
145147
"""
146-
search.me = True
147-
return _search_score_sets(db, user_data, search)
148+
score_sets = _search_score_sets(db, user_data.user, search)
149+
return fetch_superseding_score_set_in_search_result(score_sets, user_data, search)
148150

149151

150152
@router.get(

src/mavedb/view_models/search.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ class ScoreSetsSearch(BaseModel):
2525
publication_identifiers: Optional[list[str]]
2626
keywords: Optional[list[str]]
2727
text: Optional[str]
28-
me: Optional[bool]
2928

3029

3130
class TextSearch(BaseModel):

0 commit comments

Comments
 (0)