This commit is contained in:
parent
9f7e8398a1
commit
874e023535
1
.gitignore
vendored
1
.gitignore
vendored
@ -160,3 +160,4 @@ cython_debug/
|
|||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
#.idea/
|
||||||
|
|
||||||
|
inits.txt
|
||||||
@ -83,6 +83,7 @@ class SkillLevels(models.Model):
|
|||||||
|
|
||||||
skill_id = models.ForeignKey(Skill, on_delete=models.CASCADE)
|
skill_id = models.ForeignKey(Skill, on_delete=models.CASCADE)
|
||||||
skill_level = models.CharField(max_length=1, choices=proficiency_choices,)
|
skill_level = models.CharField(max_length=1, choices=proficiency_choices,)
|
||||||
|
jobposting_id = models.ForeignKey(JobListing, on_delete=models.CASCADE)
|
||||||
|
|
||||||
class CompanyLogo(models.Model):
|
class CompanyLogo(models.Model):
|
||||||
company_logo = models.ImageField(upload_to=rename_file)
|
company_logo = models.ImageField(upload_to=rename_file)
|
||||||
|
|||||||
@ -2,22 +2,6 @@ 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
|
||||||
@ -31,14 +15,14 @@ class AnonymousUserDataSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class SkillLevelsSerializer(serializers.ModelSerializer):
|
class SkillLevelsSerializer(serializers.ModelSerializer):
|
||||||
skill_id = serializers.PrimaryKeyRelatedField(read_only=True, source='skill.id')
|
skill_id = serializers.PrimaryKeyRelatedField(read_only=True, source='skill.id')
|
||||||
|
jobposting_id = serializers.PrimaryKeyRelatedField(read_only=True, source='jobposting.id')
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SkillLevels
|
model = SkillLevels
|
||||||
fields = ['skill_id', 'skill_level']
|
fields = ['skill_id', 'skill_level', 'jobposting_id']
|
||||||
|
|
||||||
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 = SkillLevelsField()
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobListing
|
model = JobListing
|
||||||
@ -47,8 +31,7 @@ class JobListingSerializer(serializers.ModelSerializer):
|
|||||||
'company_name', 'name', 'content', 'minsalary', 'maxsalary',
|
'company_name', 'name', 'content', 'minsalary', 'maxsalary',
|
||||||
'localization', 'created_by', 'created_at', 'status', 'status_paid',
|
'localization', 'created_by', 'created_at', 'status', 'status_paid',
|
||||||
'expiration_date', 'experience_level', 'employmentType', 'workFromHome',
|
'expiration_date', 'experience_level', 'employmentType', 'workFromHome',
|
||||||
'updated_at', 'skillLevels', 'contact_email', 'first_name', 'last_name',
|
'updated_at', 'contact_email', 'first_name', 'last_name', 'anonymous_user_data'
|
||||||
'anonymous_user_data'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user