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): def get_short_name(self):
return self.first_name 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 django.db import models
from core.models import MyUser from core.models import MyUser, AnonymousUserData
from django.utils import timezone from django.utils import timezone
from datetime import timedelta from datetime import timedelta
@ -45,7 +45,14 @@ class JobListing(models.Model):
workFromHome = models.CharField(max_length=255) workFromHome = models.CharField(max_length=255)
updated_at = models.DateTimeField(auto_now=True) updated_at = models.DateTimeField(auto_now=True)
skillLevels = models.ManyToManyField('SkillLevels', blank=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) first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255)
contact_email = models.EmailField(max_length=255, null=True, blank=True) contact_email = models.EmailField(max_length=255, null=True, blank=True)
@ -58,6 +65,9 @@ class JobListing(models.Model):
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):
skill_name = models.CharField(max_length=255)
class SkillLevels(models.Model): class SkillLevels(models.Model):
proficiency_choices = [ proficiency_choices = [
@ -68,7 +78,7 @@ class SkillLevels(models.Model):
('E', 'Ekspert'), ('E', 'Ekspert'),
] ]
skill_name = models.CharField(max_length=255) skill_id = models.ForeignKey(Skill)
skill_level = models.CharField(max_length=1, choices=proficiency_choices,) skill_level = models.CharField(max_length=1, choices=proficiency_choices,)
class CompanyLogo(models.Model): class CompanyLogo(models.Model):

View File

@ -1,5 +1,5 @@
from rest_framework import serializers 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 from core.models import MyUser
class MyUserSerializer(serializers.ModelSerializer): class MyUserSerializer(serializers.ModelSerializer):
@ -10,7 +10,7 @@ class MyUserSerializer(serializers.ModelSerializer):
class SkillLevelsSerializer(serializers.ModelSerializer): class SkillLevelsSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = SkillLevels model = SkillLevels
fields = ['id', 'jobPostingId', 'skill_name', 'skill_level'] fields = ['id', 'skill_id', 'skill_level']
class JobListingSerializer(serializers.ModelSerializer): class JobListingSerializer(serializers.ModelSerializer):
created_by = MyUserSerializer(read_only=True) created_by = MyUserSerializer(read_only=True)
@ -23,10 +23,15 @@ 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', 'job_skills', 'contact_email', 'first_name', 'last_name', 'updated_at', 'skillLevels', 'contact_email', 'first_name', 'last_name',
] ]
class CompanyLogoSerializer(serializers.ModelSerializer): class CompanyLogoSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = CompanyLogo 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 rest_framework import viewsets, permissions
from jobposting.models import JobListing, SkillLevels, CompanyLogo from jobposting.models import JobListing, SkillLevels, CompanyLogo
from core.models import MyUser, AnonymousUserData
from jobposting.serializers import ( from jobposting.serializers import (
JobListingSerializer, JobListingSerializer,
@ -7,7 +8,6 @@ from jobposting.serializers import (
MyUserSerializer, MyUserSerializer,
CompanyLogoSerializer CompanyLogoSerializer
) )
from core.models import MyUser
class MyUserViewSet(viewsets.ModelViewSet): class MyUserViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny] # test only permission_classes = [permissions.AllowAny] # test only
@ -25,12 +25,19 @@ class JobListingViewSet(viewsets.ModelViewSet):
if self.request.user.is_authenticated: if self.request.user.is_authenticated:
serializer.save(created_by=self.request.user) serializer.save(created_by=self.request.user)
else: else:
# Pobieranie danych z formularza
first_name = self.request.data.get('first_name') first_name = self.request.data.get('first_name')
last_name = self.request.data.get('last_name') last_name = self.request.data.get('last_name')
contact_email = self.request.data.get('contact_email') contact_email = self.request.data.get('contact_email')
serializer.save(contact_email=contact_email,
last_name=last_name, # Tworzenie rekordu AnonymousUserData
first_name=first_name) 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): class SkillLevelsViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny] # test only permission_classes = [permissions.AllowAny] # test only
@ -38,8 +45,12 @@ class SkillLevelsViewSet(viewsets.ModelViewSet):
serializer_class = SkillLevelsSerializer serializer_class = SkillLevelsSerializer
# permission_classes = [permissions.IsAuthenticatedOrReadOnly] # permission_classes = [permissions.IsAuthenticatedOrReadOnly]
# Możesz także chcieć dodać widoki szczegółowe lub niestandardowe akcje.
class CompanyLogoViewSet(viewsets.ModelViewSet): class CompanyLogoViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny] permission_classes = [permissions.AllowAny]
queryset = CompanyLogo.objects.all() 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