Skip to content

Commit

Permalink
Competition create (#338)
Browse files Browse the repository at this point in the history
  • Loading branch information
kovacspe authored Apr 12, 2024
1 parent ba1e6e4 commit fea87f5
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 13 deletions.
15 changes: 12 additions & 3 deletions competition/admin.py
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
17 changes: 14 additions & 3 deletions competition/fixtures/competitions.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -196,6 +202,11 @@
"start_year": "2022",
"competition_type": 2,
"description": "Denny tabor - fajne to bude"
}
},
"permission_group": [
1,
2
]
}

]
5 changes: 4 additions & 1 deletion competition/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
"""
Expand Down Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions competition/permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
6 changes: 3 additions & 3 deletions user/fixtures/users.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
"first_name": "Účastník",
"last_name": "Strom",
"school": "000598071",
"year_of_graduation": 2024
"year_of_graduation": 2025
}
},
{
Expand Down Expand Up @@ -152,7 +152,7 @@
"first_name": "Účastník",
"last_name": "Matik",
"school": "000598071",
"year_of_graduation": 2027
"year_of_graduation": 2028
}
},
{
Expand Down Expand Up @@ -183,7 +183,7 @@
"first_name": "Účastník",
"last_name": "Malynár",
"school": "000598071",
"year_of_graduation": 2030
"year_of_graduation": 2031
}
},
{
Expand Down

0 comments on commit fea87f5

Please sign in to comment.