[feat] team view & [fix] cors
This commit is contained in:
@@ -54,6 +54,7 @@ INSTALLED_APPS = [
|
|||||||
# project apps
|
# project apps
|
||||||
"users.apps.UsersConfig",
|
"users.apps.UsersConfig",
|
||||||
"notifications.apps.NotificationsConfig",
|
"notifications.apps.NotificationsConfig",
|
||||||
|
"teams.apps.TeamsConfig",
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
@@ -155,7 +156,4 @@ REST_FRAMEWORK = {
|
|||||||
if DEBUG and not (TESTING or MIGRATING):
|
if DEBUG and not (TESTING or MIGRATING):
|
||||||
register_debug_toolbar()
|
register_debug_toolbar()
|
||||||
|
|
||||||
CORS_ALLOWED_ORIGINS = [
|
CORS_ORIGIN_ALLOW_ALL = True
|
||||||
"http://158.160.56.239:8080",
|
|
||||||
"http://158.160.56.239:3000",
|
|
||||||
]
|
|
||||||
|
|||||||
@@ -8,9 +8,11 @@ from drf_yasg import openapi
|
|||||||
from drf_yasg.views import get_schema_view
|
from drf_yasg.views import get_schema_view
|
||||||
from rest_framework import permissions, routers
|
from rest_framework import permissions, routers
|
||||||
from users.views import UserViewSet
|
from users.views import UserViewSet
|
||||||
|
from teams.views import TeamsViewSet
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register("users", UserViewSet)
|
router.register("users", UserViewSet)
|
||||||
|
router.register("teams", TeamsViewSet)
|
||||||
|
|
||||||
schema_view = get_schema_view(
|
schema_view = get_schema_view(
|
||||||
openapi.Info(title="SkillHub API", default_version="v1"),
|
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='вакансии')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -48,15 +48,11 @@ class Team(models.Model):
|
|||||||
|
|
||||||
members = models.ManyToManyField(
|
members = models.ManyToManyField(
|
||||||
users.models.User,
|
users.models.User,
|
||||||
blank=True,
|
|
||||||
unique=True,
|
|
||||||
verbose_name="участники",
|
verbose_name="участники",
|
||||||
)
|
)
|
||||||
|
|
||||||
vacancies = models.ManyToManyField(
|
vacancies = models.ManyToManyField(
|
||||||
Vacancy,
|
Vacancy,
|
||||||
blank=True,
|
|
||||||
unique=True,
|
|
||||||
verbose_name="вакансии",
|
verbose_name="вакансии",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -90,6 +86,7 @@ class Team(models.Model):
|
|||||||
author = models.ForeignKey(
|
author = models.ForeignKey(
|
||||||
users.models.User,
|
users.models.User,
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
|
related_name="teams",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
from backend.project.users.models import User
|
from 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 rest_framework.viewsets import ModelViewSet
|
||||||
from teams.serializers import TeamSerializer
|
from teams.serializers import TeamSerializer
|
||||||
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
class AddUserToTeam(APIView):
|
class AddUserToTeam(APIView):
|
||||||
def post(self, request, team_id, user_id): # noqa: ARG002
|
def post(self, request, team_id, user_id): # noqa: ARG002
|
||||||
@@ -25,3 +25,11 @@ 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 TeamsViewSet(ModelViewSet):
|
||||||
|
http_method_names = ("get",)
|
||||||
|
|
||||||
|
queryset = Team.objects.all()
|
||||||
|
serializer_class = TeamSerializer
|
||||||
|
permission_classes = [IsAuthenticated]
|
||||||
|
|||||||
Reference in New Issue
Block a user