[chore] Global project refactoring

This commit is contained in:
ITQ
2024-04-01 11:20:07 +03:00
parent 0a8b3773f5
commit 5c64e1f3b9
49 changed files with 731 additions and 496 deletions
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class TeamsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "teams"
+78
View File
@@ -0,0 +1,78 @@
from django.core import validators
from django.db import models
from api.users.models import Skill, Specialization, User
class Vacancy(models.Model):
name = models.CharField(
max_length=255,
)
age_restriction = models.DateField(
blank=True,
null=True,
)
specialization = models.ForeignKey(
Specialization,
on_delete=models.CASCADE,
blank=True,
null=True,
)
skills = models.ManyToManyField(
Skill,
blank=True,
)
def __str__(self):
return self.name
class Team(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
members = models.ManyToManyField(
User,
blank=True,
unique=True,
)
vacancies = models.ManyToManyField(
Vacancy,
blank=True,
unique=True,
)
avatar = models.ImageField(
upload_to="teams_avatars",
blank=True,
)
count_of_members = models.IntegerField(
validators=[
validators.MinValueValidator(1),
validators.MaxLengthValidator(5),
],
verbose_name="количество участников",
null=True,
)
country = models.CharField(
blank=True,
max_length=255,
verbose_name="страна",
)
city = models.CharField(
blank=True,
max_length=255,
verbose_name="город",
)
author = models.ForeignKey(
User,
on_delete=models.CASCADE,
)
def __str__(self):
return self.name
+8
View File
@@ -0,0 +1,8 @@
from rest_framework import serializers
from teams.models import Team
class TeamSerializer(serializers.ModelSerializer):
class Meta:
model = Team
fields = ["id", "name", "description"]
+11
View File
@@ -0,0 +1,11 @@
from django.urls import path
from .views import AddUserToTeam
urlpatterns = [
path(
"add_user_to_team/<int:team_id>/<int:user_id>/",
AddUserToTeam.as_view(),
name="add_user_to_team",
),
]
+26
View File
@@ -0,0 +1,26 @@
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 .serializers import TeamSerializer
class AddUserToTeam(APIView):
def post(self, request, team_id, user_id): # noqa: ARG002
try:
team = Team.objects.get(id=team_id)
user = User.objects.get(id=user_id)
except Team.DoesNotExist:
return Response(
{"error": "Team not found"}, status=status.HTTP_404_NOT_FOUND
)
except User.DoesNotExist:
return Response(
{"error": "User not found"}, status=status.HTTP_404_NOT_FOUND
)
team.members.add(user)
team_serializer = TeamSerializer(team)
return Response(team_serializer.data, status=status.HTTP_200_OK)