diff --git a/easy_toolbox.py b/easy_toolbox.py index f617208eb..77d196b09 100755 --- a/easy_toolbox.py +++ b/easy_toolbox.py @@ -3,7 +3,7 @@ # pip requirements: # python ^3.6 # inquirer (only for GUI) -# +# # system: # docker # docker-compose @@ -37,7 +37,7 @@ ("test", "Run unit tests.", "{exec} web ../oioioi/test.sh"), ("test-slow", "Run unit tests. (--runslow)", "{exec} web ../oioioi/test.sh --runslow"), ("test-abc", "Run specific test file. (edit the toolbox)", - "{exec} web ../oioioi/test.sh -v oioioi/problems/tests/test_task_archive.py"), + "{exec} web ../oioioi/test.sh -v oioioi/teachers/tests.py"), ("test-coverage", "Run coverage tests.", "{exec} 'web' ../oioioi/test.sh oioioi/problems --cov-report term --cov-report xml:coverage.xml --cov=oioioi"), ("cypress-apply-settings", "Apply settings for CyPress.", diff --git a/oioioi/teachers/forms.py b/oioioi/teachers/forms.py index 179ec764b..ea9a68e09 100644 --- a/oioioi/teachers/forms.py +++ b/oioioi/teachers/forms.py @@ -2,11 +2,14 @@ from django.urls import reverse from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ +from django.contrib import messages +from django.core.exceptions import ValidationError from oioioi.contests.forms import SimpleContestForm -from oioioi.teachers.models import Teacher +from oioioi.teachers.models import ContestTeacher, Teacher from oioioi.base.utils.user_selection import UserSelectionField - +from oioioi.participants.models import Participant +from oioioi.teachers.utils import validate_can_add_user_to_contest, add_user_to_contest_as class TeacherContestForm(SimpleContestForm): @@ -83,3 +86,24 @@ def __init__(self, *args, **kwargs): def clean_school(self): data = self.cleaned_data['school'] return ' '.join(data.splitlines()) + + +class AddUserToContestForm(forms.Form): + user = UserSelectionField() + + def __init__(self, member_type, contest, *args, **kwargs): + self.member_type = member_type + self.contest = contest + super(AddUserToContestForm, self).__init__(*args, **kwargs) + + def clean(self): + clean_data = super().clean() + + if self.is_valid(): + user = self.cleaned_data['user'] + try: + validate_can_add_user_to_contest(user, self.contest, self.member_type) + except ValidationError as e: + self.add_error('user', e.message) + + return clean_data diff --git a/oioioi/teachers/templates/teachers/members.html b/oioioi/teachers/templates/teachers/members.html index dfc7c0774..9d6468e4b 100644 --- a/oioioi/teachers/templates/teachers/members.html +++ b/oioioi/teachers/templates/teachers/members.html @@ -176,6 +176,25 @@