From 9e1860faf935de64788c25a045c0332d4a5b481a Mon Sep 17 00:00:00 2001 From: Jakub K Date: Tue, 2 Jan 2024 22:41:36 +0100 Subject: [PATCH] dodanie nowych modeli --- core/models.py | 8 ++++++++ jobposting/models.py | 16 +++++++++++++--- jobposting/serializers.py | 13 +++++++++---- jobposting/views.py | 23 +++++++++++++++++------ 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/core/models.py b/core/models.py index a84cb83..9f3d965 100644 --- a/core/models.py +++ b/core/models.py @@ -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}" \ No newline at end of file diff --git a/jobposting/models.py b/jobposting/models.py index ec7542d..2ade887 100644 --- a/jobposting/models.py +++ b/jobposting/models.py @@ -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): diff --git a/jobposting/serializers.py b/jobposting/serializers.py index e1a9223..cbfd948 100644 --- a/jobposting/serializers.py +++ b/jobposting/serializers.py @@ -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'] \ No newline at end of file + fields = ['id', 'company_logo'] + +class SkillsSerializer(serializers.ModelSerializer): + class Meta: + model = Skills + fields = ['id', 'skill_name'] \ No newline at end of file diff --git a/jobposting/views.py b/jobposting/views.py index 6617c9b..d700892 100644 --- a/jobposting/views.py +++ b/jobposting/views.py @@ -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 \ No newline at end of file + serializer_class = CompanyLogoSerializer + +class SkillsViewset(viewsets.ModelViewSet): + permission_classes = [permissions.AllowAny] + queryset = CompanyLogo.objects.all() + serializer_class = SkillsSerializer \ No newline at end of file