diff --git a/oioioi/_locale/locale/en/LC_MESSAGES/djangojs.mo b/oioioi/_locale/locale/en/LC_MESSAGES/djangojs.mo index dc3022a4e..7092ab663 100644 Binary files a/oioioi/_locale/locale/en/LC_MESSAGES/djangojs.mo and b/oioioi/_locale/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/oioioi/_locale/locale/pl/LC_MESSAGES/django.mo b/oioioi/_locale/locale/pl/LC_MESSAGES/django.mo index e76664598..8543f716f 100644 Binary files a/oioioi/_locale/locale/pl/LC_MESSAGES/django.mo and b/oioioi/_locale/locale/pl/LC_MESSAGES/django.mo differ diff --git a/oioioi/_locale/locale/pl/LC_MESSAGES/django.po b/oioioi/_locale/locale/pl/LC_MESSAGES/django.po index a4e9d60b5..b82f32b4b 100644 --- a/oioioi/_locale/locale/pl/LC_MESSAGES/django.po +++ b/oioioi/_locale/locale/pl/LC_MESSAGES/django.po @@ -3,7 +3,6 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Translators: # Accounts-Payable - Alkemics, 2015 # Alek Tudruj , 2022 # Alicja Kluczek , 2021-2022 @@ -29,6 +28,7 @@ # Jan Jakubowski, 2023 # Joanna Wojciechowska, 2021 # Kacper Lewandowski, 2022 +# Kamila Godlewska, 2025 # Kamil Szymczak, 2024-2025 # konrad … , 2016-2020 # Maciej Dębski , 2014 @@ -1039,6 +1039,11 @@ msgstr "Zapisz jako nowy" msgid "Save and add another" msgstr "Zapisz i dodaj do innego" +#: teachers/templates/teachers/change_form.py +msgctxt "teacher object" +msgid "Save and add another" +msgstr "Zapisz i dodaj kolejnego" + #: base/templates/admin/submit_line.html:14 #: base/templates/admin/submit_line.html:30 #| msgid "Saved for diffing" @@ -4841,6 +4846,20 @@ msgstr "miasto" msgid "school" msgstr "szkoła" +#: teacher translation is needed in places when "dopełniacz" form is needed +msgid "teacher" +msgstr "nauczyciela" + +msgid "teachers" +msgstr "nauczycieli" + +msgid "join date" +msgstr "data dołączenia" + +#: mp/models.py:29 oi/models.py:149 teachers/admin.py:26 +msgid "Delete selected teachers" +msgstr "Usuń wybranych nauczycieli" + #: mp/models.py:34 #| msgid "team name" msgid "teacher's name" @@ -4993,7 +5012,11 @@ msgstr "-- szkoła usunięta --" #: oi/admin.py:177 oi/templates/oi/sensitive_participant_info.html:15 #: teachers/forms.py:32 teachers/forms.py:76 msgid "School" -msgstr "Szkola" +msgstr "Szkoła" + +msgctxt "teacher object" +msgid "Active" +msgstr "Aktywny" #: oi/controllers.py:148 msgid "Polish Olympiad in Informatics - Online" diff --git a/oioioi/teachers/admin.py b/oioioi/teachers/admin.py index 78e0cc076..a7fbfa007 100644 --- a/oioioi/teachers/admin.py +++ b/oioioi/teachers/admin.py @@ -22,6 +22,16 @@ class TeacherAdmin(admin.ModelAdmin): search_fields = ["school", "user__username", "user__first_name", "user__last_name", "user__email", "join_date"] form = AdminTeacherForm + change_form_template = "teachers/change_form.html" + + # Override parent's function to ensure proper translation + def get_actions(self, request): + actions = super().get_actions(request) + if 'delete_selected' in actions: + function, name, short_description = actions['delete_selected'] + new_description = _("Delete selected teachers") + actions['delete_selected'] = (function, name, new_description) + return actions def has_add_permission(self, request): return request.user.is_superuser diff --git a/oioioi/teachers/forms.py b/oioioi/teachers/forms.py index d0d5474bd..1d3011c40 100644 --- a/oioioi/teachers/forms.py +++ b/oioioi/teachers/forms.py @@ -3,6 +3,7 @@ from django.urls import reverse from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ +from django.utils.translation import pgettext_lazy as p_ from oioioi.base.utils.user_selection import UserSelectionField from oioioi.contests.forms import SimpleContestForm @@ -49,6 +50,9 @@ class AdminTeacherForm(forms.ModelForm): class Meta: model = Teacher fields = ["user", "school", "is_active"] + labels = { # Needed for the ability of proper translation of 'is_active' to PL + "is_active": p_("teacher object", "Active"), + } user = UserSelectionField(label=_("Username")) diff --git a/oioioi/teachers/migrations/0003_alter_teacher_options_alter_teacher_join_date.py b/oioioi/teachers/migrations/0003_alter_teacher_options_alter_teacher_join_date.py new file mode 100644 index 000000000..e24263470 --- /dev/null +++ b/oioioi/teachers/migrations/0003_alter_teacher_options_alter_teacher_join_date.py @@ -0,0 +1,22 @@ +# Generated by Django 5.2.9 on 2025-12-16 12:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('teachers', '0002_teacher_join_date'), + ] + + operations = [ + migrations.AlterModelOptions( + name='teacher', + options={'permissions': (('teacher', 'Is a teacher'),), 'verbose_name': 'teacher', 'verbose_name_plural': 'teachers'}, + ), + migrations.AlterField( + model_name='teacher', + name='join_date', + field=models.DateField(auto_now_add=True, verbose_name='join date'), + ), + ] diff --git a/oioioi/teachers/models.py b/oioioi/teachers/models.py index 0109eb98c..5f1fd2280 100644 --- a/oioioi/teachers/models.py +++ b/oioioi/teachers/models.py @@ -18,10 +18,12 @@ class Teacher(models.Model): user = models.OneToOneField(User, primary_key=True, verbose_name=_("user"), on_delete=models.CASCADE) is_active = models.BooleanField(default=False, verbose_name=_("active")) school = models.CharField(max_length=255, verbose_name=_("school")) - join_date = models.DateField(auto_now_add=True) + join_date = models.DateField(auto_now_add=True, verbose_name=_("join date")) class Meta: permissions = (("teacher", _("Is a teacher")),) + verbose_name = _("teacher") + verbose_name_plural = _("teachers") def __str__(self): return str(self.user) diff --git a/oioioi/teachers/templates/teachers/change_form.html b/oioioi/teachers/templates/teachers/change_form.html new file mode 100644 index 000000000..da5ee9fb9 --- /dev/null +++ b/oioioi/teachers/templates/teachers/change_form.html @@ -0,0 +1,69 @@ +{% extends "admin/change_form.html" %} +{% load i18n admin_urls %} + +{# Override buttons so they can be translated properly #} +{% block submit_buttons_bottom %} + + + +{% endblock %} \ No newline at end of file