Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
80b5762
Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
7b680e3
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
c9c7477
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
b43246e
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
2d9306e
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
829127f
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
c87147e
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
0ff85b7
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
6a87a40
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
992f917
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
a2ab323
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
69777fe
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
5173605
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
b2de393
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
bb2ca62
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
ae5a6c5
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
378b524
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
7b69b14
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 28, 2025
d7d6ddb
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
1f1d54a
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
c3d10af
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
f0bc365
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
f57455b
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
556c74c
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
a1173e6
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
2bd00ec
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
dc493b4
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
4894437
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
f277fa7
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
724dc70
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
debb646
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
9973b56
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
3fa92a4
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 29, 2025
b81b2ab
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
8de5872
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
d2900f1
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
5c80343
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
06139d0
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
def1c13
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
bc5c195
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
db65855
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
f5c9b5d
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
e18ddbc
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
a19f9f5
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
9dd8c6b
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
4041ef7
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
36a265b
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
f4d7e44
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 30, 2025
0100109
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 31, 2025
3cae20a
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 31, 2025
72943ba
Fix pr #180: Fix issue #179: Create winners view
openhands-agent Jan 31, 2025
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
36 changes: 36 additions & 0 deletions photo/queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
PictureCommentType,
PictureType,
UserType,
WinnerType,
WinnerSubmissionType,
WinnerPictureType,
WinnerContestType,
)
from utils.enums import ContestInternalStates

Expand Down Expand Up @@ -130,3 +134,35 @@ def set_order(element):
else:
query_results.sort(key=set_order)
return query_results

@strawberry.field
def winners(self) -> List[WinnerContestType]:
contests = Contest.objects.filter(winners__isnull=False).order_by('-voting_draw_end')
result = []
for contest in contests:
winners = []
for winner in contest.winners.all():
submission = ContestSubmission.objects.filter(contest=contest, picture__user=winner).first()
winners.append(
WinnerType(
name_first=winner.name_first,
name_last=winner.name_last,
submission=WinnerSubmissionType(
picture=WinnerPictureType(
name=submission.picture.name,
file=submission.picture.file.url
),
number_votes=submission.votes.count()
)
)
)
result.append(
WinnerContestType(
title=contest.title,
description=contest.description,
prize=contest.prize,
voting_draw_end=contest.voting_draw_end,
winners=winners
)
)
return result
24 changes: 23 additions & 1 deletion photo/tests/test_queries/test_contest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from django.test import TestCase
from django.utils import timezone
from photo.models import ContestSubmission, Picture

from photo.models import Contest
from photo.schema import schema
Expand Down Expand Up @@ -109,6 +110,27 @@ def test_query_status(self):
self.assertEqual(contest["status"], status[str(contest["id"])])


def test_winners_query(self):
# Create a contest with winners
contest = ContestFactory.create(voting_draw_end=timezone.now())
user = UserFactory.create()
contest.winners.add(user)
submission = ContestSubmission.objects.create(contest=contest, picture=Picture.objects.create(user=user, name='Test Picture', file='test.jpg'))

# Execute the winners query
result = schema.execute_sync(
'{ winners { title description prize voting_draw_end winners { name_first name_last submission { picture { name file } number_votes } } } }'
)

# Check for errors
self.assertIsNone(result.errors)

# Validate the response
self.assertEqual(len(result.data['winners']), 1)
self.assertEqual(result.data['winners'][0]['title'], contest.title)
self.assertEqual(result.data['winners'][0]['winners'][0]['name_first'], user.name_first)
self.assertEqual(result.data['winners'][0]['winners'][0]['submission']['picture']['name'], 'Test Picture')

class ContestFilterTest(TestCase):
def test_filter_by_search(self):
test_text = "This is a text with a weird word 1234Test1234."
Expand Down Expand Up @@ -139,7 +161,7 @@ def test_filter_by_search(self):
self.assertTrue(contest["id"] in contest_IDs)

def test_filter_by_time(self):
time = timezone.now().replace(year=2020, month=4)
time = timezone.now().replace(year=2020, month=4, day=1)

ContestFactory(
upload_phase_start=time,
Expand Down
Empty file.
Empty file.
24 changes: 24 additions & 0 deletions photo/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,30 @@ class CollectionType:
pictures: List[PictureType]


@strawberry.type
class WinnerPictureType:
name: str
file: str

@strawberry.type
class WinnerSubmissionType:
picture: "WinnerPictureType"
number_votes: int

@strawberry.type
class WinnerType:
name_first: str
name_last: str
submission: WinnerSubmissionType

@strawberry.type
class WinnerContestType:
title: str
description: str
prize: str
voting_draw_end: str
winners: List[WinnerType]

@strawberry.django.type(Contest)
class ContestType:
id: int
Expand Down
2 changes: 1 addition & 1 deletion photo/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.http import HttpResponse
from strawberry.django.views import GraphQLView

from photo.queries import Context
from photo.queries import Context, Query


class ReventGraphQLView(GraphQLView):
Expand Down