diff --git a/src/apps/api/serializers/competitions.py b/src/apps/api/serializers/competitions.py index d29ca7ba7..3b627f9e0 100644 --- a/src/apps/api/serializers/competitions.py +++ b/src/apps/api/serializers/competitions.py @@ -209,6 +209,9 @@ class Meta: 'allow_robot_submissions', 'competition_type', 'fact_sheet', + 'reward', + 'contact_email', + 'report', ) def validate_phases(self, phases): @@ -297,6 +300,9 @@ class Meta: 'competition_type', 'fact_sheet', 'forum', + 'reward', + 'contact_email', + 'report', ) def get_leaderboards(self, instance): @@ -326,6 +332,9 @@ class Meta: 'logo', 'description', 'competition_type', + 'reward', + 'contact_email', + 'report', ) diff --git a/src/apps/competitions/migrations/0026_auto_20201110_1932.py b/src/apps/competitions/migrations/0026_auto_20201110_1932.py index b6496c0ba..eb23c9663 100644 --- a/src/apps/competitions/migrations/0026_auto_20201110_1932.py +++ b/src/apps/competitions/migrations/0026_auto_20201110_1932.py @@ -1,18 +1,19 @@ # Generated by Django 2.2.13 on 2020-11-10 19:32 +# Manual edit on 2023-08-22 by Adrien Pavao import django.contrib.postgres.fields.jsonb from django.db import migrations -from competitions.models import Competition +def set_blank_fact_sheet_to_null(apps, schema_editor): + Competition = apps.get_model('competitions', 'Competition') + for comp in Competition.objects.all(): + if comp.fact_sheet == "": + comp.fact_sheet = None + comp.save() -class Migration(migrations.Migration): - def set_blank_fact_sheet_to_null(self, schema_editor): - for comp in Competition.objects.all(): - if comp.fact_sheet == "": - comp.fact_sheet = None - comp.save() +class Migration(migrations.Migration): dependencies = [ ('competitions', '0025_submission_is_specific_task_re_run'), @@ -24,5 +25,5 @@ def set_blank_fact_sheet_to_null(self, schema_editor): name='fact_sheet', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=None, max_length=4096, null=True), ), - migrations.RunPython(set_blank_fact_sheet_to_null), + migrations.RunPython(set_blank_fact_sheet_to_null, migrations.RunPython.noop), ] diff --git a/src/apps/competitions/migrations/0035_auto_20230806_0715.py b/src/apps/competitions/migrations/0035_auto_20230806_0715.py new file mode 100644 index 000000000..68b33c11d --- /dev/null +++ b/src/apps/competitions/migrations/0035_auto_20230806_0715.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.17 on 2023-08-06 07:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('competitions', '0034_auto_20230727_1147'), + ] + + operations = [ + migrations.AddField( + model_name='competition', + name='contact_email', + field=models.EmailField(blank=True, max_length=256, null=True), + ), + migrations.AddField( + model_name='competition', + name='report', + field=models.CharField(blank=True, max_length=256, null=True), + ), + migrations.AddField( + model_name='competition', + name='reward', + field=models.CharField(blank=True, max_length=256, null=True), + ), + ] diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index b30988106..063914268 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -54,6 +54,10 @@ class Competition(ChaHubSaveMixin, models.Model): fact_sheet = JSONField(blank=True, null=True, max_length=4096, default=None) + contact_email = models.EmailField(max_length=256, null=True, blank=True) + reward = models.CharField(max_length=256, null=True, blank=True) + report = models.CharField(max_length=256, null=True, blank=True) + def __str__(self): return f"competition-{self.title}-{self.pk}-{self.competition_type}" diff --git a/src/apps/competitions/unpackers/v2.py b/src/apps/competitions/unpackers/v2.py index 4f5488f22..bce1e3bf5 100644 --- a/src/apps/competitions/unpackers/v2.py +++ b/src/apps/competitions/unpackers/v2.py @@ -18,6 +18,8 @@ def __init__(self, *args, **kwargs): "description": self.competition_yaml.get("description", ""), "competition_type": self.competition_yaml.get("competition_type", "competition"), "fact_sheet": self.competition_yaml.get("fact_sheet", None), + "reward": self.competition_yaml.get("reward", None), + "contact_email": self.competition_yaml.get("contact_email", None), "pages": [], "phases": [], "leaderboards": [], diff --git a/src/static/img/trophy.png b/src/static/img/trophy.png new file mode 100644 index 000000000..c810f3408 Binary files /dev/null and b/src/static/img/trophy.png differ diff --git a/src/static/riot/competitions/detail/_header.tag b/src/static/riot/competitions/detail/_header.tag index 3b34c066f..7b1314c40 100644 --- a/src/static/riot/competitions/detail/_header.tag +++ b/src/static/riot/competitions/detail/_header.tag @@ -15,6 +15,12 @@ +
+