diff --git a/competition/migrations/0003_alter_solution_corrected_solution_and_more.py b/competition/migrations/0003_alter_solution_corrected_solution_and_more.py index 1275f0de..ff1fe788 100644 --- a/competition/migrations/0003_alter_solution_corrected_solution_and_more.py +++ b/competition/migrations/0003_alter_solution_corrected_solution_and_more.py @@ -1,10 +1,11 @@ # Generated by Django 4.2.15 on 2024-11-23 19:43 -import base.models -import competition.models import django.core.files.storage from django.db import migrations +import base.models +import competition.models + class Migration(migrations.Migration): @@ -16,11 +17,13 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='solution', name='corrected_solution', - field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage(base_url='/protected/', location='C:\\Users\\petko\\Documents\\GitHub\\webstrom\\webstrom-backend\\protected_media/'), upload_to=competition.models.get_corrected_solution_path, verbose_name='opravené riešenie'), + field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage( + base_url='/protected/', location='C:\\Users\\petko\\Documents\\GitHub\\webstrom\\webstrom-backend\\protected_media/'), upload_to=competition.models.get_corrected_solution_path, verbose_name='opravené riešenie'), ), migrations.AlterField( model_name='solution', name='solution', - field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage(base_url='/protected/', location='C:\\Users\\petko\\Documents\\GitHub\\webstrom\\webstrom-backend\\protected_media/'), upload_to=competition.models.get_solution_path, verbose_name='účastnícke riešenie'), + field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage( + base_url='/protected/', location='C:\\Users\\petko\\Documents\\GitHub\\webstrom\\webstrom-backend\\protected_media/'), upload_to=competition.models.get_solution_path, verbose_name='účastnícke riešenie'), ), ] diff --git a/personal/migrations/0003_alter_profile_parent_phone_alter_profile_phone.py b/personal/migrations/0003_alter_profile_parent_phone_alter_profile_phone.py new file mode 100644 index 00000000..6c734c9c --- /dev/null +++ b/personal/migrations/0003_alter_profile_parent_phone_alter_profile_phone.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.15 on 2024-11-23 23:11 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('personal', '0002_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='parent_phone', + field=models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, null=True, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo na rodiča'), + ), + migrations.AlterField( + model_name='profile', + name='phone', + field=models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, null=True, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo'), + ), + ] diff --git a/personal/models.py b/personal/models.py index 6b71574d..27c9dd1b 100644 --- a/personal/models.py +++ b/personal/models.py @@ -114,12 +114,12 @@ class Meta: verbose_name='rok maturity') phone = models.CharField( - verbose_name='telefónne číslo', max_length=32, blank=True, + verbose_name='telefónne číslo', max_length=32, blank=True, null=True, validators=[phone_number_validator], help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).') parent_phone = models.CharField( - verbose_name='telefónne číslo na rodiča', max_length=32, blank=True, + verbose_name='telefónne číslo na rodiča', max_length=32, blank=True, null=True, validators=[phone_number_validator], help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).') diff --git a/personal/serializers.py b/personal/serializers.py index 03c2d617..b5d032f1 100644 --- a/personal/serializers.py +++ b/personal/serializers.py @@ -71,7 +71,7 @@ class ProfileSerializer(serializers.ModelSerializer): is_student = serializers.SerializerMethodField('get_is_student') has_school = serializers.SerializerMethodField('get_has_school') school_id = serializers.IntegerField() - email = serializers.EmailField(source='user.email') + email = serializers.EmailField(source='user.email', read_only=True) verbose_name = serializers.SerializerMethodField('get_verbose_name') class Meta: @@ -79,8 +79,8 @@ class Meta: fields = ['grade_name', 'id', 'email', 'first_name', 'last_name', 'school', 'phone', 'parent_phone', 'grade', 'is_student', 'has_school', 'school_id', 'verbose_name'] - read_only_fields = ['grade_name', 'id', 'first_name', 'last_name', - 'email', 'is_student', 'has_school', 'school', 'verbose_name'] + read_only_fields = ['grade_name', 'id', 'email', + 'is_student', 'has_school', 'school', 'verbose_name'] extra_kwargs = { 'grade': { @@ -118,13 +118,14 @@ def update(self, instance, validated_data): def create(self, validated_data): grade = Grade.objects.get(pk=validated_data['grade']) + school = School.objects.get(pk=validated_data['school_id']) return Profile.objects.create( first_name=validated_data['first_name'], last_name=validated_data['last_name'], - school=validated_data['school'], + school=school, year_of_graduation=grade.get_year_of_graduation_by_date(), - phone=validated_data['phone'], - parent_phone=validated_data['parent_phone'] + phone=validated_data.get('phone', None), + parent_phone=validated_data.get('parent_phone', None), )