diff --git a/competition/admin.py b/competition/admin.py index dc3c938f..2a0451f1 100644 --- a/competition/admin.py +++ b/competition/admin.py @@ -1,9 +1,18 @@ from django.contrib import admin, messages from django.http import HttpResponseRedirect -from competition.models import (Comment, Event, EventRegistration, LateTag, - Problem, ProblemCorrection, Publication, - Semester, Series, Solution) +from competition.models import (Comment, Competition, Event, EventRegistration, + LateTag, Problem, ProblemCorrection, + Publication, Semester, Series, Solution) + + +@admin.register(Competition) +class CompetitionAdmin(admin.ModelAdmin): + list_display = ( + 'name', + 'start_year', + 'competition_type' + ) @admin.register(Series) diff --git a/competition/fixtures/competitions.json b/competition/fixtures/competitions.json index ad19d286..251774ec 100644 --- a/competition/fixtures/competitions.json +++ b/competition/fixtures/competitions.json @@ -172,7 +172,10 @@ "start_year": 2021, "description": "Jednotlivci riešia úlohy a odovzdávajú iba výsledky. Súťaž trvá 60 minút.", "rules": "Máš problém?! je súťaž určená pre žiakov 4. - 9. ročníka ZŠ alebo prímy až kvarty OG (ale môžu sa zapojiť aj mladší). Súťažia jednotlivci v dvoch kategóriách: mladší (4. - 6. ročník ZŠ, príma) a starší (7. - 9. ročník ZŠ, sekunda až kvarta). V súťaži sa odovzdávajú len výsledky a je na ňu 60 minút.\n\nSúťaží sa na [samostatnej stránke](https://masproblem.strom.sk/login), rovnako tam nájdete aj poradie a **registráciu**. Na jeseň roku 2021 sa súťaž uskutoční 3.11.2021 od 11:00 do 17:00, pričom si môžeš vybrať kedy si súťaž spustíš (odporúčame však začať do 16:00, aby si mal dosť času na súťaženie).\n\nPoradie sa vyhodnocuje zvlášť pre každý ročník, a to najskôr podľa najvyššej dosiahnutej úrovne, z ktorej ste vyriešili aspoň 1 problém, potom podľa počtu správnych výsledkov a nakoniec podľa času odovzdania poslednej úlohy.\n\nProblémy sú rozdelené do úrovní označených od A po F. Mladší začínajú na úrovni A a končia úrovňou E. Starší začínajú úrovňou B a končia na úrovni F. Na začiatku viete riešiť len problémy z úrovne, ktorú máte otvorenú. Presné počty problémov v daných úrovniach a počty problémov potrebných na odomknutie ďalšej úrovne nájdete v tabuľke. Počas celého priebehu súťaže môžete riešiť problémy zo všetkých úrovní, ktoré už máte odomknuté. **Úlohy na jednej úrovni nie sú zoradené podľa obtiažnosti.**\n\n| úroveň | počet problémov v úrovni (mladší) | počet problémov, ktorý je potrebný na danej úrovni vyriešiť na postup do ďalšej (mladší)| počet problémov v úrovni (starší) | počet problémov, ktorý je potrebný na danej úrovni vyriešiť na postup do ďalšej (starší) |\n|:-:|:-:|:-:|:-:|:-:|\n| A | 8 | 4 | 0 | 0 |\n| B | 6 | 3 | 6 | 3 |\n| C | 4 | 2 | 4 | 2 |\n| D | 4 | 2 | 4 | 2 |\n| E | 2 | 0 | 2 | 2 |\n| F | 0 | 0 | 2 | 0 |\n\nPoplatok za účasť na súťaži je vo výške 3€. Tento poplatok je potrebné uhradiť na účet združenia STROM - SK59 0900 0000 0004 4262 6916. Do poznámky pre príjemcu je potrebné uviesť \"Máš problém - meno účastníka\". Ako variabilný symbol je potrebné uviesť registračný kód, ktorý vám príde v maili po registrácii.\n\nNajúspešnejší z vás dostanú diplom a tí, ktorí sa umiestnia na prvých 3 miestach v rámci svojho ročníka, získajú aj vecné ceny. Víťaz z každého ročníka bude navyše pozvaný ako riadny účastník na najbližšie sústredenie. :)\n\n" - } + }, + "permission_group": [ + 2 + ] }, { "model": "competition.Competition", @@ -184,7 +187,10 @@ "start_year": "2010", "competition_type": 4, "description": "Tímová robotická súťaž v troch kategóriách: Vlastný model, Racing a Robotická výzva" - } + }, + "permission_group": [ + 1 + ] }, { "model": "competition.Competition", @@ -196,6 +202,11 @@ "start_year": "2022", "competition_type": 2, "description": "Denny tabor - fajne to bude" - } + }, + "permission_group": [ + 1, + 2 + ] } + ] \ No newline at end of file diff --git a/competition/models.py b/competition/models.py index 08ca0169..459ac7a8 100644 --- a/competition/models.py +++ b/competition/models.py @@ -34,6 +34,9 @@ class Meta: name = models.CharField('typ súťaže', max_length=200) + def __str__(self): + return self.name + class Competition(models.Model): """ @@ -81,7 +84,7 @@ def can_user_participate(self, user): @classmethod def can_user_create(cls, user: User, data): # pylint:disable=unused-argument - return user.is_authenticated and user.is_staff + return user.is_authenticated and user.is_superuser def __str__(self): return self.name diff --git a/competition/permissions.py b/competition/permissions.py index fe9b803d..5dc946f1 100644 --- a/competition/permissions.py +++ b/competition/permissions.py @@ -42,9 +42,8 @@ def has_permission(self, request, view): if request.method in permissions.SAFE_METHODS: return True - # TODO: PremyslieŤ ako rozumne checkovať permission. - # if request.method == 'POST': - # return view.get_serializer().Meta.model.can_user_create(request.user, request.data) + if request.method == 'POST': + return view.get_serializer().Meta.model.can_user_create(request.user, request.data) return request.user.is_authenticated and request.user.is_staff diff --git a/user/fixtures/users.json b/user/fixtures/users.json index 1b68614f..cc67b6df 100644 --- a/user/fixtures/users.json +++ b/user/fixtures/users.json @@ -121,7 +121,7 @@ "first_name": "Účastník", "last_name": "Strom", "school": "000598071", - "year_of_graduation": 2024 + "year_of_graduation": 2025 } }, { @@ -152,7 +152,7 @@ "first_name": "Účastník", "last_name": "Matik", "school": "000598071", - "year_of_graduation": 2027 + "year_of_graduation": 2028 } }, { @@ -183,7 +183,7 @@ "first_name": "Účastník", "last_name": "Malynár", "school": "000598071", - "year_of_graduation": 2030 + "year_of_graduation": 2031 } }, {