diff --git a/backend/project/api/teams/models.py b/backend/project/api/teams/models.py index 9d04d61..e9c5785 100644 --- a/backend/project/api/teams/models.py +++ b/backend/project/api/teams/models.py @@ -25,6 +25,12 @@ class Vacancy(models.Model): skills = models.ManyToManyField( Skill, blank=True, + related_name="vacancies", + ) + users = models.ManyToManyField( + User, + blank=True, + related_name="vacancies", ) def __str__(self): @@ -74,9 +80,7 @@ class Team(models.Model): ) author = models.ForeignKey( - User, - on_delete=models.CASCADE, - related_name="teams" + User, on_delete=models.CASCADE, related_name="teams" ) def __str__(self): diff --git a/backend/project/api/teams/serializers.py b/backend/project/api/teams/serializers.py index c7c19b3..760e908 100644 --- a/backend/project/api/teams/serializers.py +++ b/backend/project/api/teams/serializers.py @@ -1,8 +1,31 @@ from rest_framework import serializers -from teams.models import Team +from teams.models import Team, Vacancy +from datetime import datetime, timedelta, timezone class TeamSerializer(serializers.ModelSerializer): class Meta: model = Team fields = ["id", "name", "description"] + + +class VacancySerializer(serializers.ModelSerializer): + min_age = serializers.IntegerField(write_only=True, required=True) + max_age = serializers.IntegerField(write_only=True, required=True) + + class Meta: + model = Vacancy + fields = "__all__" + + def create(self, validated_data): + min_age = validated_data.pop("min_age") + max_age = validated_data.pop("max_age") + + validated_data["start_date"] = datetime.now( + timezone.utc + ).date() - timedelta(days=365 * min_age) + validated_data["end_date"] = datetime.now( + timezone.utc + ).date() - timedelta(days=365 * max_age) + + return Team.objects.create(**validated_data) diff --git a/backend/project/api/teams/views.py b/backend/project/api/teams/views.py index affb052..aa03bfb 100644 --- a/backend/project/api/teams/views.py +++ b/backend/project/api/teams/views.py @@ -1,10 +1,10 @@ -from backend.project.users.models import User from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from teams.models import Team - -from api.teams.serializers import TeamSerializer +from users.models import User +from rest_framework.generics import CreateAPIView +from api.teams.serializers import TeamSerializer, VacancySerializer class AddUserToTeam(APIView): @@ -24,3 +24,8 @@ class AddUserToTeam(APIView): team.members.add(user) team_serializer = TeamSerializer(team) return Response(team_serializer.data, status=status.HTTP_200_OK) + + +class CreateVacancy(CreateAPIView): + http_method_names = ("post",) + serializer_class = VacancySerializer