dodanie nowych modeli
All checks were successful
continuous-integration/drone Build is passing

This commit is contained in:
Jakub K 2024-01-02 22:41:36 +01:00
parent 47fed892cf
commit 9e1860faf9
4 changed files with 47 additions and 13 deletions

View File

@ -47,3 +47,11 @@ class MyUser(AbstractBaseUser, PermissionsMixin):
def get_short_name(self):
return self.first_name
class AnonymousUserData(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
contact_email = models.EmailField()
def __str__(self):
return f"{self.first_name} {self.last_name}"

View File

@ -1,6 +1,6 @@
from django.db import models
from core.models import MyUser
from core.models import MyUser, AnonymousUserData
from django.utils import timezone
from datetime import timedelta
@ -45,7 +45,14 @@ class JobListing(models.Model):
workFromHome = models.CharField(max_length=255)
updated_at = models.DateTimeField(auto_now=True)
skillLevels = models.ManyToManyField('SkillLevels', blank=True)
created_by = models.ForeignKey(MyUser, on_delete=models.CASCADE)
anonymous_user_data = models.ForeignKey(AnonymousUserData,
null=True,
blank=True,
on_delete=models.SET_NULL)
created_by = models.ForeignKey(MyUser,
null=True,
blank=True,
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)
@ -58,6 +65,9 @@ class JobListing(models.Model):
def __str__(self):
return f"{self.name} at {self.company_name}"
class Skill(models.Model):
skill_name = models.CharField(max_length=255)
class SkillLevels(models.Model):
proficiency_choices = [
@ -68,7 +78,7 @@ class SkillLevels(models.Model):
('E', 'Ekspert'),
]
skill_name = models.CharField(max_length=255)
skill_id = models.ForeignKey(Skill)
skill_level = models.CharField(max_length=1, choices=proficiency_choices,)
class CompanyLogo(models.Model):

View File

@ -1,5 +1,5 @@
from rest_framework import serializers
from jobposting.models import JobListing, SkillLevels, CompanyLogo
from jobposting.models import JobListing, SkillLevels, CompanyLogo, Skills
from core.models import MyUser
class MyUserSerializer(serializers.ModelSerializer):
@ -10,7 +10,7 @@ class MyUserSerializer(serializers.ModelSerializer):
class SkillLevelsSerializer(serializers.ModelSerializer):
class Meta:
model = SkillLevels
fields = ['id', 'jobPostingId', 'skill_name', 'skill_level']
fields = ['id', 'skill_id', 'skill_level']
class JobListingSerializer(serializers.ModelSerializer):
created_by = MyUserSerializer(read_only=True)
@ -23,10 +23,15 @@ class JobListingSerializer(serializers.ModelSerializer):
'company_name', 'name', 'content', 'minsalary', 'maxsalary',
'localization', 'created_by', 'created_at', 'status', 'status_paid',
'expiration_date', 'experience_level', 'employmentType', 'workFromHome',
'updated_at', 'job_skills', 'contact_email', 'first_name', 'last_name',
'updated_at', 'skillLevels', 'contact_email', 'first_name', 'last_name',
]
class CompanyLogoSerializer(serializers.ModelSerializer):
class Meta:
model = CompanyLogo
fields = ['id', 'company_logo']
fields = ['id', 'company_logo']
class SkillsSerializer(serializers.ModelSerializer):
class Meta:
model = Skills
fields = ['id', 'skill_name']

View File

@ -1,5 +1,6 @@
from rest_framework import viewsets, permissions
from jobposting.models import JobListing, SkillLevels, CompanyLogo
from core.models import MyUser, AnonymousUserData
from jobposting.serializers import (
JobListingSerializer,
@ -7,7 +8,6 @@ from jobposting.serializers import (
MyUserSerializer,
CompanyLogoSerializer
)
from core.models import MyUser
class MyUserViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny] # test only
@ -25,12 +25,19 @@ class JobListingViewSet(viewsets.ModelViewSet):
if self.request.user.is_authenticated:
serializer.save(created_by=self.request.user)
else:
# Pobieranie danych z formularza
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)
# Tworzenie rekordu AnonymousUserData
anonymous_user_data = AnonymousUserData.objects.create(
first_name=first_name,
last_name=last_name,
contact_email=contact_email
)
serializer.save(anonymous_user_data=anonymous_user_data)
class SkillLevelsViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny] # test only
@ -38,8 +45,12 @@ class SkillLevelsViewSet(viewsets.ModelViewSet):
serializer_class = SkillLevelsSerializer
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
# Możesz także chcieć dodać widoki szczegółowe lub niestandardowe akcje.
class CompanyLogoViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny]
queryset = CompanyLogo.objects.all()
serializer_class = CompanyLogoSerializer
serializer_class = CompanyLogoSerializer
class SkillsViewset(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny]
queryset = CompanyLogo.objects.all()
serializer_class = SkillsSerializer