Skip to content

Commit 6704392

Browse files
committed
Refactor to avoid special method for retrieving all submissions
1 parent a92fdbc commit 6704392

File tree

2 files changed

+8
-21
lines changed

2 files changed

+8
-21
lines changed

src/routers/review_router.py

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ def _get_single_submission(
7373
with DbSession() as session:
7474
has_review = select(1).where(Submission.identifier == Review.submission_identifier).exists()
7575
query = select(Submission).where(~has_review)
76-
7776
if which == ListMode.NEWEST:
7877
query = query.order_by(Submission.request_date.desc()) # type: ignore[attr-defined]
7978
if from_requestee is not None:
@@ -84,29 +83,16 @@ def _get_single_submission(
8483

8584
def _get_submissions_by_state(
8685
*,
87-
which: Literal[ListMode.COMPLETED, ListMode.PENDING],
86+
which: Literal[ListMode.COMPLETED, ListMode.PENDING, ListMode.ALL],
8887
from_requestee: str | None = None,
8988
) -> Sequence[Submission]:
9089
with DbSession() as session:
9190
has_review = select(1).where(Submission.identifier == Review.submission_identifier).exists()
91+
submissions = select(Submission)
9292
if which == ListMode.PENDING:
93-
submissions = select(Submission).where(~has_review)
93+
submissions = submissions.where(~has_review)
9494
if which == ListMode.COMPLETED:
95-
submissions = select(Submission).where(has_review)
96-
if from_requestee is not None:
97-
submissions = submissions.where(Submission.requestee_identifier == from_requestee)
98-
return session.scalars(submissions).all()
99-
100-
101-
def _get_all_submissions(
102-
*,
103-
which: Literal[ListMode.ALL],
104-
from_requestee: str | None = None,
105-
) -> Sequence[Submission]:
106-
with DbSession() as session:
107-
has_review = select(1).where(Submission.identifier == Review.submission_identifier).exists()
108-
if which == ListMode.ALL:
109-
submissions = select(Submission).where(or_(~has_review, has_review))
95+
submissions = submissions.where(has_review)
11096
if from_requestee is not None:
11197
submissions = submissions.where(Submission.requestee_identifier == from_requestee)
11298
return session.scalars(submissions).all()
@@ -120,10 +106,8 @@ def list_submissions(
120106
if mode in [ListMode.NEWEST, ListMode.OLDEST]:
121107
submission = _get_single_submission(which=mode, from_requestee=user_filter) # type: ignore[arg-type]
122108
return [submission] if submission else []
123-
if mode in [ListMode.PENDING, ListMode.COMPLETED]:
109+
if mode in [ListMode.PENDING, ListMode.COMPLETED, ListMode.ALL]:
124110
return _get_submissions_by_state(which=mode, from_requestee=user_filter) # type: ignore[arg-type]
125-
if mode in [ListMode.ALL]:
126-
return _get_all_submissions(which=mode) # type: ignore[arg-type]
127111
raise ValueError(f"`mode` should be one of {ListMode!r} but is {mode!r}.")
128112

129113

src/tests/authorization/test_authorization.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,13 @@ def test_unknown_submission_raises_404(client):
206206
[
207207
(REVIEWER, ListMode.PENDING, [2, 3], "Reviewer can see all pending reviews."),
208208
(REVIEWER, ListMode.COMPLETED, [1], "Reviewer can see all completed reviews."),
209+
(REVIEWER, ListMode.ALL, [1,2,3], "Reviewer can see all reviews."),
209210
(ALICE, ListMode.PENDING, [2], "Alice has one pending submission and can not see Bob's."),
210211
(ALICE, ListMode.COMPLETED, [1], "Alice only has one completed submission."),
212+
(ALICE, ListMode.ALL, [1,2], "Alice can see all her reviews, but not Bob's."),
211213
(BOB, ListMode.PENDING, [3], "Bob has one pending submission and can not see Alice's."),
212214
(BOB, ListMode.COMPLETED, [], "Bob has no completed submission."),
215+
(BOB, ListMode.ALL, [3], "Bob can see all his reviews, but not Alice's."),
213216
]
214217
)
215218
def test_submission_by_state_respects_privacy(user: KeycloakUser, mode: ListMode, assets: list[int], reason: str, client: TestClient, publication):

0 commit comments

Comments
 (0)