[feat] vacancy
This commit is contained in:
@@ -25,6 +25,12 @@ class Vacancy(models.Model):
|
|||||||
skills = models.ManyToManyField(
|
skills = models.ManyToManyField(
|
||||||
Skill,
|
Skill,
|
||||||
blank=True,
|
blank=True,
|
||||||
|
related_name="vacancies",
|
||||||
|
)
|
||||||
|
users = models.ManyToManyField(
|
||||||
|
User,
|
||||||
|
blank=True,
|
||||||
|
related_name="vacancies",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -74,9 +80,7 @@ class Team(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
author = models.ForeignKey(
|
author = models.ForeignKey(
|
||||||
User,
|
User, on_delete=models.CASCADE, related_name="teams"
|
||||||
on_delete=models.CASCADE,
|
|
||||||
related_name="teams"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|||||||
@@ -1,8 +1,31 @@
|
|||||||
from rest_framework import serializers
|
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 TeamSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Team
|
model = Team
|
||||||
fields = ["id", "name", "description"]
|
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)
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
from backend.project.users.models import User
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from teams.models import Team
|
from teams.models import Team
|
||||||
|
from users.models import User
|
||||||
from api.teams.serializers import TeamSerializer
|
from rest_framework.generics import CreateAPIView
|
||||||
|
from api.teams.serializers import TeamSerializer, VacancySerializer
|
||||||
|
|
||||||
|
|
||||||
class AddUserToTeam(APIView):
|
class AddUserToTeam(APIView):
|
||||||
@@ -24,3 +24,8 @@ class AddUserToTeam(APIView):
|
|||||||
team.members.add(user)
|
team.members.add(user)
|
||||||
team_serializer = TeamSerializer(team)
|
team_serializer = TeamSerializer(team)
|
||||||
return Response(team_serializer.data, status=status.HTTP_200_OK)
|
return Response(team_serializer.data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateVacancy(CreateAPIView):
|
||||||
|
http_method_names = ("post",)
|
||||||
|
serializer_class = VacancySerializer
|
||||||
|
|||||||
Reference in New Issue
Block a user