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
2 changes: 1 addition & 1 deletion src/apps/api/views/competitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ def creation_status(self, request, pk):
@action(detail=False, methods=('GET',), permission_classes=(AllowAny,))
def front_page(self, request):
popular_comps = get_popular_competitions()
featured_comps = get_featured_competitions(excluded_competitions=popular_comps)
featured_comps = get_featured_competitions()
popular_comps_serializer = CompetitionSerializerSimple(popular_comps, many=True)
featured_comps_serializer = CompetitionSerializerSimple(featured_comps, many=True)
return Response(data={
Expand Down
40 changes: 40 additions & 0 deletions src/apps/competitions/migrations/0049_auto_20241121_0922.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 2.2.17 on 2024-11-21 09:22

from django.db import migrations, models
import storages.backends.s3boto3
import utils.data


class Migration(migrations.Migration):

dependencies = [
('competitions', '0048_auto_20240401_1646'),
]

operations = [
migrations.AddField(
model_name='competition',
name='is_featured',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='submission',
name='detailed_result',
field=models.FileField(blank=True, null=True, storage=storages.backends.s3boto3.S3Boto3Storage(), upload_to=utils.data.PathWrapper('detailed_result')),
),
migrations.AlterField(
model_name='submission',
name='prediction_result',
field=models.FileField(blank=True, null=True, storage=storages.backends.s3boto3.S3Boto3Storage(), upload_to=utils.data.PathWrapper('prediction_result')),
),
migrations.AlterField(
model_name='submission',
name='scoring_result',
field=models.FileField(blank=True, null=True, storage=storages.backends.s3boto3.S3Boto3Storage(), upload_to=utils.data.PathWrapper('scoring_result')),
),
migrations.AlterField(
model_name='submissiondetails',
name='data_file',
field=models.FileField(storage=storages.backends.s3boto3.S3Boto3Storage(), upload_to=utils.data.PathWrapper('submission_details')),
),
]
14 changes: 14 additions & 0 deletions src/apps/competitions/migrations/0051_merge_20241203_1313.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Generated by Django 2.2.28 on 2024-12-03 13:13

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('competitions', '0050_auto_20241128_0814'),
('competitions', '0049_auto_20241121_0922'),
]

operations = [
]
3 changes: 3 additions & 0 deletions src/apps/competitions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ class Competition(ChaHubSaveMixin, models.Model):
# If true, participants see the make their submissions public
can_participants_make_submissions_public = models.BooleanField(default=True)

# If true, competition is featured and may show up on the home page
is_featured = models.BooleanField(default=False)

# Count of submissions for this competition
submissions_count = models.PositiveIntegerField(default=0)

Expand Down
32 changes: 8 additions & 24 deletions src/apps/competitions/utils.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'''
This file contains utilities for competitions
'''
# import random
import random
# from django.db.models import Count

from competitions.models import Competition
Expand All @@ -25,34 +25,18 @@ def get_popular_competitions(limit=4):
return competitions[:limit]


def get_featured_competitions(limit=4, excluded_competitions=None):
def get_featured_competitions(limit=4):
'''
Function to return featured competitions if they are still open.
Function to return featured competitions

:param limit: Amount of competitions to return. Default is 3
:param excluded_competitions: list of popular competitions to prevent displaying duplicates
:param limit: Amount of competitions to return. Default is 4
:rtype: list
:return: list of featured competitions
'''

# TODO: Fix the fetching of the featured competitions
# Uncomment and update the following code when a long term fix is implemented for participants count
competitions = Competition.objects.filter(is_featured=True)

# competitions = Competition.objects.filter(published=True) \
# .annotate(participant_count=Count('participants'))

# if excluded_competitions:
# competitions = competitions.exclude(pk__in=[c.pk for c in excluded_competitions])

# if len(competitions) <= limit:
# return competitions
# else:
# return random.sample(list(competitions), limit)

# Temporary solution to show specific featured competitions
try:
featured_competiion_ids = [3523, 2745, 3160, 1567]
competitions = Competition.objects.filter(id__in=featured_competiion_ids)
if len(competitions) <= limit:
return competitions
except Exception:
return []
else:
return random.sample(list(competitions), limit)
20 changes: 20 additions & 0 deletions src/apps/datasets/migrations/0008_auto_20241121_0922.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 2.2.17 on 2024-11-21 09:22

from django.db import migrations, models
import storages.backends.s3boto3
import utils.data


class Migration(migrations.Migration):

dependencies = [
('datasets', '0007_auto_20230609_1738'),
]

operations = [
migrations.AlterField(
model_name='data',
name='data_file',
field=models.FileField(blank=True, null=True, storage=storages.backends.s3boto3.S3Boto3Storage(), upload_to=utils.data.PathWrapper('dataset')),
),
]
14 changes: 14 additions & 0 deletions src/apps/datasets/migrations/0009_merge_20241203_1313.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Generated by Django 2.2.28 on 2024-12-03 13:13

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('datasets', '0008_auto_20241118_1106'),
('datasets', '0008_auto_20241121_0922'),
]

operations = [
]