[feat] vacancy
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user