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 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 Meta:
|
||||
model = MyUser
|
||||
@ -22,7 +38,7 @@ class SkillLevelsSerializer(serializers.ModelSerializer):
|
||||
class JobListingSerializer(serializers.ModelSerializer):
|
||||
created_by = MyUserSerializer(read_only=True)
|
||||
anonymous_user_data = AnonymousUserDataSerializer(read_only=True)
|
||||
skillLevels = SkillLevelsSerializer(read_only=True)
|
||||
skill_levels = SkillLevelsField()
|
||||
|
||||
class Meta:
|
||||
model = JobListing
|
||||
@ -35,10 +51,18 @@ class JobListingSerializer(serializers.ModelSerializer):
|
||||
'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 Meta:
|
||||
model = CompanyLogo
|
||||
fields = ['id', 'company_logo']
|
||||
fields = ['id', 'company_nane','company_logo']
|
||||
|
||||
class SkillSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user