This commit is contained in:
parent
711979f9a1
commit
94d9acaf79
@ -2,6 +2,22 @@ from rest_framework import serializers
|
|||||||
from jobposting.models import JobListing, SkillLevels, CompanyLogo, Skill
|
from jobposting.models import JobListing, SkillLevels, CompanyLogo, Skill
|
||||||
from core.models import MyUser, AnonymousUserData
|
from core.models import MyUser, AnonymousUserData
|
||||||
|
|
||||||
|
class SkillLevelsField(serializers.Field):
|
||||||
|
def to_representation(self, value):
|
||||||
|
# Konwersja do formatu wyjściowego
|
||||||
|
return {skill_level.skill_id.skill_name: skill_level.skill_level for skill_level in value.all()}
|
||||||
|
|
||||||
|
def to_internal_value(self, data):
|
||||||
|
# Konwersja z formatu wejściowego
|
||||||
|
skill_levels = []
|
||||||
|
for skill_name, level in data.items():
|
||||||
|
try:
|
||||||
|
skill = Skill.objects.get(skill_name=skill_name)
|
||||||
|
except Skill.DoesNotExist:
|
||||||
|
raise serializers.ValidationError(f"Skill with name '{skill_name}' does not exist.")
|
||||||
|
skill_levels.append({'skill_id': skill.id, 'skill_level': level})
|
||||||
|
return skill_levels
|
||||||
|
|
||||||
class MyUserSerializer(serializers.ModelSerializer):
|
class MyUserSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MyUser
|
model = MyUser
|
||||||
@ -22,7 +38,7 @@ class SkillLevelsSerializer(serializers.ModelSerializer):
|
|||||||
class JobListingSerializer(serializers.ModelSerializer):
|
class JobListingSerializer(serializers.ModelSerializer):
|
||||||
created_by = MyUserSerializer(read_only=True)
|
created_by = MyUserSerializer(read_only=True)
|
||||||
anonymous_user_data = AnonymousUserDataSerializer(read_only=True)
|
anonymous_user_data = AnonymousUserDataSerializer(read_only=True)
|
||||||
skillLevels = SkillLevelsSerializer(read_only=True)
|
skill_levels = SkillLevelsField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobListing
|
model = JobListing
|
||||||
@ -35,10 +51,18 @@ class JobListingSerializer(serializers.ModelSerializer):
|
|||||||
'anonymous_user_data'
|
'anonymous_user_data'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
skill_levels_data = validated_data.pop('skill_levels', [])
|
||||||
|
job_listing = JobListing.objects.create(**validated_data)
|
||||||
|
for skill_data in skill_levels_data:
|
||||||
|
skill_level = SkillLevels.objects.create(**skill_data)
|
||||||
|
job_listing.skillLevels.add(skill_level)
|
||||||
|
return job_listing
|
||||||
|
|
||||||
class CompanyLogoSerializer(serializers.ModelSerializer):
|
class CompanyLogoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CompanyLogo
|
model = CompanyLogo
|
||||||
fields = ['id', 'company_logo']
|
fields = ['id', 'company_nane','company_logo']
|
||||||
|
|
||||||
class SkillSerializer(serializers.ModelSerializer):
|
class SkillSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user