Skip to content
Merged
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
13 changes: 13 additions & 0 deletions src/api/endpoints/contributions/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ async def get_leaderboard(
core: AsyncCore = Depends(get_async_core),
access_info: AccessInfo = Depends(get_access_info)
) -> ContributionsLeaderboardResponse:
"""Returns the leaderboard of user contributions."""
return await core.adb_client.run_query_builder(
GetContributionsLeaderboardQueryBuilder()
)
Expand All @@ -28,6 +29,18 @@ async def get_user_contributions(
core: AsyncCore = Depends(get_async_core),
access_info: AccessInfo = Depends(get_access_info)
) -> ContributionsUserResponse:
"""Get contributions for the user and how often their annotations agreed with the final validation of URLs.

Agreement for each is based the number of the user's correct annotations for that URL attribute
divided by their total number of annotations for that URL attribute.

"Correct" in this case means the user's annotation value for that URL attribute
aligned with the final validated value for that attribute.

In the case of attributes with multiple validated values, such as agency ID,
agreement is determined if the user's suggested value aligns with any of the final validated values.
"""

return await core.adb_client.run_query_builder(
GetUserContributionsQueryBuilder(access_info.user_id)
)
13 changes: 10 additions & 3 deletions tests/manual/api/test_contributions.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
import pytest

from src.api.endpoints.contributions.user.queries import GetUserContributionsQueryBuilder
from src.api.endpoints.contributions.leaderboard.query import GetContributionsLeaderboardQueryBuilder

Check warning on line 3 in tests/manual/api/test_contributions.py

View workflow job for this annotation

GitHub Actions / flake8

[flake8] tests/manual/api/test_contributions.py#L3 <401>

'src.api.endpoints.contributions.leaderboard.query.GetContributionsLeaderboardQueryBuilder' imported but unused
Raw output
./tests/manual/api/test_contributions.py:3:1: F401 'src.api.endpoints.contributions.leaderboard.query.GetContributionsLeaderboardQueryBuilder' imported but unused
from src.api.endpoints.contributions.user.queries.core import GetUserContributionsQueryBuilder
from src.db.client.async_ import AsyncDatabaseClient

# 72 = Max
# 17 = Josh

@pytest.mark.asyncio
async def test_contributions(
adb_client_test: AsyncDatabaseClient
):

await adb_client_test.run_query_builder(
GetUserContributionsQueryBuilder(user_id=72)
)
GetUserContributionsQueryBuilder(user_id=17)
)
#
# await adb_client_test.run_query_builder(
# GetContributionsLeaderboardQueryBuilder()
# )

Check warning on line 21 in tests/manual/api/test_contributions.py

View workflow job for this annotation

GitHub Actions / flake8

[flake8] tests/manual/api/test_contributions.py#L21 <292>

no newline at end of file
Raw output
./tests/manual/api/test_contributions.py:21:8: W292 no newline at end of file