dodanie nowych pól, dostosowanie do pol w front
All checks were successful
continuous-integration/drone Build is passing
All checks were successful
continuous-integration/drone Build is passing
This commit is contained in:
parent
78d0a3c55f
commit
25946fbbd1
@ -9,7 +9,6 @@ class JobListing(models.Model):
|
|||||||
('C', 'Zakończona'),
|
('C', 'Zakończona'),
|
||||||
('W', 'Oczekująca na sprawdzenie'),
|
('W', 'Oczekująca na sprawdzenie'),
|
||||||
('R', 'Zarchiwizowana'),
|
('R', 'Zarchiwizowana'),
|
||||||
('','')
|
|
||||||
]
|
]
|
||||||
paid_status = [
|
paid_status = [
|
||||||
('P', 'Oplacona'),
|
('P', 'Oplacona'),
|
||||||
@ -19,42 +18,42 @@ class JobListing(models.Model):
|
|||||||
company_name = models.CharField(max_length=255)
|
company_name = models.CharField(max_length=255)
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
content = models.TextField()
|
content = models.TextField()
|
||||||
min_salary = models.DecimalField(max_digits=10, decimal_places=2)
|
minsalary = models.IntegerField()
|
||||||
max_salary = models.DecimalField(max_digits=10, decimal_places=2)
|
maxsalary = models.IntegerField()
|
||||||
location = models.CharField(max_length=255)
|
requiresalary = models.BooleanField()
|
||||||
coordinates = models.CharField(max_length=255) # rozwaz GEODJANGO
|
webpage = models.CharField(max_length=255)
|
||||||
created_by = models.ForeignKey(MyUser, on_delete=models.CASCADE, related_name='job_listings')
|
localization = models.CharField(max_length=255)
|
||||||
|
vat_number = models.CharField(max_length=10)
|
||||||
created_at = models.DateTimeField(default=timezone.now)
|
created_at = models.DateTimeField(default=timezone.now)
|
||||||
status = models.CharField(max_length=1, choices=status_choices, default='A')
|
status = models.CharField(max_length=1, choices=status_choices, default='W')
|
||||||
status_paid = models.CharField(max_length=1, choices=paid_status, default='N')
|
status_paid = models.CharField(max_length=1, choices=paid_status, default='N')
|
||||||
category = models.CharField(max_length=255, null=True, blank=True)
|
# category = models.CharField(max_length=255, null=True, blank=True)
|
||||||
expiration_date = models.DateField(null=True, blank=True)
|
expiration_date = models.DateField(null=True, blank=True)
|
||||||
company_description = models.TextField(null=True, blank=True)
|
|
||||||
# company_logo = models.ImageField(upload_to='company_logos/', null=True, blank=True)
|
# company_logo = models.ImageField(upload_to='company_logos/', null=True, blank=True)
|
||||||
experience_level = models.CharField(max_length=255, null=True, blank=True)
|
experience_level = models.CharField(max_length=255, null=True, blank=True)
|
||||||
contract_type = models.CharField(max_length=255, null=True, blank=True)
|
employmentType = models.CharField(max_length=255, null=True, blank=True)
|
||||||
is_remote = models.BooleanField(default=False)
|
workFromHome = models.CharField(max_length=255)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
job_skills = models.ManyToManyField(SkillLevels, on_delete=models.CASCADE)
|
||||||
|
created_by = models.ForeignKey(MyUser, on_delete=models.CASCADE)
|
||||||
|
first_name = models.CharField(max_length=255)
|
||||||
|
last_name = models.CharField(max_length=255)
|
||||||
|
contact_email = models.EmailField(max_length=255, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.name} at {self.company_name}"
|
return f"{self.name} at {self.company_name}"
|
||||||
|
|
||||||
class Skill(models.Model):
|
class SkillLevels(models.Model):
|
||||||
name = models.CharField(max_length=255)
|
|
||||||
proficiency_choices = [
|
proficiency_choices = [
|
||||||
|
('N', 'Nice to have'),
|
||||||
('B', 'Podstawowy'),
|
('B', 'Podstawowy'),
|
||||||
|
('M', 'Średnio zaawansowany'),
|
||||||
('A', 'Zaawansowany'),
|
('A', 'Zaawansowany'),
|
||||||
('E', 'Ekspert'),
|
('E', 'Ekspert'),
|
||||||
]
|
]
|
||||||
proficiency = models.CharField(max_length=1, choices=proficiency_choices)
|
|
||||||
|
|
||||||
def __str__(self):
|
jobPostingId = models.ForeignKey(JobListing, on_delete=models.CASCADE)
|
||||||
return self.name
|
skill_name =models.CharField(max_length=255)
|
||||||
|
skill_level = models.CharField(max_length=1, choices=proficiency_choices,)
|
||||||
class JobSkill(models.Model):
|
|
||||||
job_listing = models.ForeignKey(JobListing, on_delete=models.CASCADE, related_name='job_skills')
|
|
||||||
skill = models.ForeignKey(Skill, on_delete=models.CASCADE, related_name='job_skills')
|
|
||||||
proficiency = models.CharField(max_length=255)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.skill.name} for {self.job_listing.name} ({self.proficiency})"
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from jobposting.models import JobListing, Skill, JobSkill
|
from jobposting.models import JobListing, SkillLevels
|
||||||
from core.models import MyUser
|
from core.models import MyUser
|
||||||
|
|
||||||
class MyUserSerializer(serializers.ModelSerializer):
|
class MyUserSerializer(serializers.ModelSerializer):
|
||||||
@ -7,27 +7,20 @@ class MyUserSerializer(serializers.ModelSerializer):
|
|||||||
model = MyUser
|
model = MyUser
|
||||||
fields = ['id', 'email', 'first_name', 'last_name']
|
fields = ['id', 'email', 'first_name', 'last_name']
|
||||||
|
|
||||||
class SkillSerializer(serializers.ModelSerializer):
|
class SkillLevelsSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Skill
|
model = SkillLevels
|
||||||
fields = ['id', 'name', 'proficiency']
|
fields = ['id', 'jobPostingId', 'skill_name', 'skill_level']
|
||||||
|
|
||||||
class JobSkillSerializer(serializers.ModelSerializer):
|
|
||||||
skill = SkillSerializer(read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = JobSkill
|
|
||||||
fields = ['id', 'job_listing', 'skill', 'proficiency']
|
|
||||||
|
|
||||||
class JobListingSerializer(serializers.ModelSerializer):
|
class JobListingSerializer(serializers.ModelSerializer):
|
||||||
created_by = MyUserSerializer(read_only=True)
|
created_by = MyUserSerializer(read_only=True)
|
||||||
job_skills = JobSkillSerializer(many=True, read_only=True)
|
job_skills = SkillLevelsSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobListing
|
model = JobListing
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'company_name', 'name', 'content', 'min_salary', 'max_salary',
|
'id', 'company_name', 'name', 'content', 'minsalary', 'maxsalary',
|
||||||
'location', 'coordinates', 'created_by', 'created_at', 'status',
|
'localization', 'created_by', 'created_at', 'status', 'status_paid',
|
||||||
'status_paid', 'category', 'expiration_date', 'company_description',
|
'expiration_date', 'experience_level', 'employmentType', 'is_remote',
|
||||||
'experience_level', 'contract_type', 'is_remote', 'updated_at', 'job_skills'
|
'updated_at', 'job_skills', 'contact_email', 'first_name', 'last_name',
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
from rest_framework import viewsets, permissions
|
from rest_framework import viewsets, permissions
|
||||||
from jobposting.models import JobListing, Skill, JobSkill
|
from jobposting.models import JobListing, SkillLevels
|
||||||
|
|
||||||
from jobposting.serializers import (
|
from jobposting.serializers import (
|
||||||
JobListingSerializer,
|
JobListingSerializer,
|
||||||
SkillSerializer,
|
SkillLevelSerializer,
|
||||||
JobSkillSerializer,
|
|
||||||
MyUserSerializer,
|
MyUserSerializer,
|
||||||
)
|
)
|
||||||
from core.models import MyUser
|
from core.models import MyUser
|
||||||
@ -22,18 +21,20 @@ class JobListingViewSet(viewsets.ModelViewSet):
|
|||||||
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
serializer.save(created_by=self.request.user)
|
serializer.save(created_by=self.request.user)
|
||||||
|
else:
|
||||||
|
first_name = self.request.data.get('first_name')
|
||||||
|
last_name = self.request.data.get('last_name')
|
||||||
|
contact_email = self.request.data.get('contact_email')
|
||||||
|
serializer.save(contact_email=contact_email,
|
||||||
|
last_name=last_name,
|
||||||
|
first_name=first_name)
|
||||||
|
|
||||||
class SkillViewSet(viewsets.ModelViewSet):
|
class SkillLevelsViewSet(viewsets.ModelViewSet):
|
||||||
permission_classes = [permissions.AllowAny] # test only
|
permission_classes = [permissions.AllowAny] # test only
|
||||||
queryset = Skill.objects.all()
|
queryset = SkillLevels.objects.all()
|
||||||
serializer_class = SkillSerializer
|
serializer_class = SkillLevelSerializer
|
||||||
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
|
||||||
|
|
||||||
class JobSkillViewSet(viewsets.ModelViewSet):
|
|
||||||
permission_classes = [permissions.AllowAny] # test only
|
|
||||||
queryset = JobSkill.objects.all()
|
|
||||||
serializer_class = JobSkillSerializer
|
|
||||||
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
# Możesz także chcieć dodać widoki szczegółowe lub niestandardowe akcje.
|
# Możesz także chcieć dodać widoki szczegółowe lub niestandardowe akcje.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user