diff --git a/izaac/urls.py b/izaac/urls.py index 511de7d..21f18c9 100644 --- a/izaac/urls.py +++ b/izaac/urls.py @@ -19,4 +19,5 @@ from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path("api/user/", include('core.urls')) + patj("api/jobposting/", include('jobposting.urls')) ] diff --git a/jobposting/serializers.py b/jobposting/serializers.py new file mode 100644 index 0000000..e8234aa --- /dev/null +++ b/jobposting/serializers.py @@ -0,0 +1,33 @@ +from rest_framework import serializers +from jobposting.models import JobListing, Skill, JobSkill +from core.models import MyUser + +class MyUserSerializer(serializers.ModelSerializer): + class Meta: + model = MyUser + fields = ['id', 'email', 'first_name', 'last_name'] + +class SkillSerializer(serializers.ModelSerializer): + class Meta: + model = Skill + fields = ['id', 'name', 'proficiency'] + +class JobSkillSerializer(serializers.ModelSerializer): + skill = SkillSerializer(read_only=True) + + class Meta: + model = JobSkill + fields = ['id', 'job_listing', 'skill', 'proficiency'] + +class JobListingSerializer(serializers.ModelSerializer): + created_by = MyUserSerializer(read_only=True) + job_skills = JobSkillSerializer(many=True, read_only=True) + + class Meta: + model = JobListing + fields = [ + 'id', 'company_name', 'name', 'content', 'min_salary', 'max_salary', + 'location', 'coordinates', 'created_by', 'created_at', 'status', + 'status_paid', 'category', 'expiration_date', 'company_description', + 'experience_level', 'contract_type', 'is_remote', 'updated_at', 'job_skills' + ] diff --git a/jobposting/urls.py b/jobposting/urls.py new file mode 100644 index 0000000..566be41 --- /dev/null +++ b/jobposting/urls.py @@ -0,0 +1,16 @@ +from django.urls import path, include + +from rest_framework.routers import DefaultRouter +from jobposting import views + +router = DefaultRouter() +router.register(r'users', views.MyUserViewSet) +router.register(r'joblistings', views.JobListingViewSet) +router.register(r'skills', views.SkillViewSet) +router.register(r'jobskills', views.JobSkillViewSet) + +# Twoje urlpatterns +urlpatterns = [ + # ... + path('api/', include(router.urls)), +] \ No newline at end of file diff --git a/jobposting/views.py b/jobposting/views.py index 91ea44a..81cf301 100644 --- a/jobposting/views.py +++ b/jobposting/views.py @@ -1,3 +1,35 @@ -from django.shortcuts import render +from rest_framework import viewsets, permissions +from jobposting.models import JobListing, Skill, JobSkill -# Create your views here. +from jobposting.serializers import ( + JobListingSerializer, + SkillSerializer, + JobSkillSerializer, + MyUserSerializer, +) +from core.models import MyUser + +class MyUserViewSet(viewsets.ModelViewSet): + queryset = MyUser.objects.all() + serializer_class = MyUserSerializer + permission_classes = [permissions.IsAuthenticated] + +class JobListingViewSet(viewsets.ModelViewSet): + queryset = JobListing.objects.all() + serializer_class = JobListingSerializer + permission_classes = [permissions.IsAuthenticatedOrReadOnly] + + def perform_create(self, serializer): + serializer.save(created_by=self.request.user) + +class SkillViewSet(viewsets.ModelViewSet): + queryset = Skill.objects.all() + serializer_class = SkillSerializer + permission_classes = [permissions.IsAuthenticatedOrReadOnly] + +class JobSkillViewSet(viewsets.ModelViewSet): + queryset = JobSkill.objects.all() + serializer_class = JobSkillSerializer + permission_classes = [permissions.IsAuthenticatedOrReadOnly] + +# Możesz także chcieć dodać widoki szczegółowe lub niestandardowe akcje.