[feat] team view & [fix] cors

This commit is contained in:
Data-Name-ID
2024-03-31 22:07:33 +03:00
parent c3d39ba55b
commit c0f48eae12
6 changed files with 79 additions and 11 deletions
+2 -4
View File
@@ -54,6 +54,7 @@ INSTALLED_APPS = [
# project apps
"users.apps.UsersConfig",
"notifications.apps.NotificationsConfig",
"teams.apps.TeamsConfig",
]
MIDDLEWARE = [
@@ -155,7 +156,4 @@ REST_FRAMEWORK = {
if DEBUG and not (TESTING or MIGRATING):
register_debug_toolbar()
CORS_ALLOWED_ORIGINS = [
"http://158.160.56.239:8080",
"http://158.160.56.239:3000",
]
CORS_ORIGIN_ALLOW_ALL = True
+2
View File
@@ -8,9 +8,11 @@ from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from rest_framework import permissions, routers
from users.views import UserViewSet
from teams.views import TeamsViewSet
router = routers.DefaultRouter()
router.register("users", UserViewSet)
router.register("teams", TeamsViewSet)
schema_view = get_schema_view(
openapi.Info(title="SkillHub API", default_version="v1"),
@@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-03-31 19:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('notifications', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='notification',
name='content',
field=models.TextField(verbose_name='содержание'),
),
]
@@ -0,0 +1,45 @@
# Generated by Django 4.2.11 on 2024-03-31 19:06
from django.conf import settings
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('users', '0002_rename_technologies_user_skills'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Vacancy',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='название вакансии')),
('start_date', models.DateField(blank=True, null=True, verbose_name='дата начала диапазона возраста участников')),
('end_date', models.DateField(blank=True, null=True, verbose_name='дата конец диапазона возраста участников')),
('skills', models.ManyToManyField(blank=True, to='users.skill', verbose_name='Технологии')),
('specialization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='users.specialization', verbose_name='специализация')),
],
),
migrations.CreateModel(
name='Team',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('description', models.TextField(verbose_name='описание команды')),
('name', models.CharField(max_length=255, verbose_name='название команды')),
('avatar', models.ImageField(blank=True, upload_to='teams_avatars', verbose_name='аватарка')),
('count_of_members', models.IntegerField(null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxLengthValidator(5)], verbose_name='количество участников')),
('country', models.CharField(blank=True, max_length=255, verbose_name='страна')),
('city', models.CharField(blank=True, max_length=255, verbose_name='город')),
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='teams', to=settings.AUTH_USER_MODEL)),
('members', models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='участники')),
('vacancies', models.ManyToManyField(to='teams.vacancy', verbose_name='вакансии')),
],
),
]
+1 -4
View File
@@ -48,15 +48,11 @@ class Team(models.Model):
members = models.ManyToManyField(
users.models.User,
blank=True,
unique=True,
verbose_name="участники",
)
vacancies = models.ManyToManyField(
Vacancy,
blank=True,
unique=True,
verbose_name="вакансии",
)
@@ -90,6 +86,7 @@ class Team(models.Model):
author = models.ForeignKey(
users.models.User,
on_delete=models.CASCADE,
related_name="teams",
)
def __str__(self):
+11 -3
View File
@@ -1,12 +1,12 @@
from backend.project.users.models import User
from 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 rest_framework.viewsets import ModelViewSet
from teams.serializers import TeamSerializer
from rest_framework.permissions import IsAuthenticated
class AddUserToTeam(APIView):
def post(self, request, team_id, user_id): # noqa: ARG002
@@ -25,3 +25,11 @@ class AddUserToTeam(APIView):
team.members.add(user)
team_serializer = TeamSerializer(team)
return Response(team_serializer.data, status=status.HTTP_200_OK)
class TeamsViewSet(ModelViewSet):
http_method_names = ("get",)
queryset = Team.objects.all()
serializer_class = TeamSerializer
permission_classes = [IsAuthenticated]