рефакторинг кода
This commit is contained in:
parent
73417d12be
commit
8a10809514
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class ApiConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'api'
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
# from django.db import models
|
|
||||||
|
|
||||||
# class NowPlayingSong(models.Model):
|
|
||||||
# title = models.CharField(max_length=255)
|
|
||||||
# artist = models.CharField(max_length=255)
|
|
||||||
# album = models.CharField(max_length=255, blank=True, null=True)
|
|
||||||
# genre = models.CharField(max_length=100, blank=True, null=True)
|
|
||||||
# art = models.URLField(blank=True, null=True)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
# from rest_framework import serializers
|
|
||||||
# from .models import NowPlayingSong
|
|
||||||
|
|
||||||
|
|
||||||
# class NowPlayingSongSerializer(serializers.ModelSerializer):
|
|
||||||
# class Meta:
|
|
||||||
# model = NowPlayingSong
|
|
||||||
# fields = ['title', 'artist', 'album', 'genre', 'art']
|
|
||||||
|
|
||||||
# class WebhookSerializer(serializers.Serializer):
|
|
||||||
# song = NowPlayingSongSerializer()
|
|
||||||
# def create(self, validated_data):
|
|
||||||
# print("create")
|
|
||||||
# song_data = validated_data.get('song')
|
|
||||||
# print(song_data)
|
|
||||||
# return NowPlayingSong.objects.create(**song_data)
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import requests
|
|
||||||
from django.http import HttpResponse
|
|
||||||
from rest_framework.views import APIView
|
|
||||||
from rest_framework.viewsets import ViewSet
|
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework import status
|
|
||||||
from rest_framework.decorators import action
|
|
||||||
from rest_framework.permissions import AllowAny
|
|
||||||
from conf.settings.base import AZURACAST_API_KEY, AZURACAST_URL
|
|
||||||
|
|
@ -38,7 +38,7 @@ class PlayListViewSet(GenericViewSet):
|
||||||
|
|
||||||
if request.data.get('name', False):
|
if request.data.get('name', False):
|
||||||
try:
|
try:
|
||||||
instance = PlayList.objects.get(pk=request.data['playlist_id'], user=request.user.pk)
|
instance = self.get_queryset().objects.get(pk=request.data['playlist_id'], user=request.user.pk)
|
||||||
data = request.data
|
data = request.data
|
||||||
data.update(user=request.user.pk)
|
data.update(user=request.user.pk)
|
||||||
serializer = self.get_serializer(data=request.data, instance=instance)
|
serializer = self.get_serializer(data=request.data, instance=instance)
|
||||||
|
|
@ -63,7 +63,7 @@ class PlayListViewSet(GenericViewSet):
|
||||||
@action(detail=False, methods=['post'], schema=PlayListSchema())
|
@action(detail=False, methods=['post'], schema=PlayListSchema())
|
||||||
def update_playlist(self, request):
|
def update_playlist(self, request):
|
||||||
try:
|
try:
|
||||||
instance = PlayList.objects.get(pk=request.data['playlist_id'], user=request.user.pk)
|
instance = self.get_queryset().objects.get(pk=request.data['playlist_id'], user=request.user.pk)
|
||||||
serializer = self.get_serializer(data=request.data, partial=True, instance=instance)
|
serializer = self.get_serializer(data=request.data, partial=True, instance=instance)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
serializer.save()
|
serializer.save()
|
||||||
|
|
@ -76,7 +76,7 @@ class PlayListViewSet(GenericViewSet):
|
||||||
@action(detail=False, methods=['post'], schema=PlayListSchema())
|
@action(detail=False, methods=['post'], schema=PlayListSchema())
|
||||||
def delete_playlist(self, request):
|
def delete_playlist(self, request):
|
||||||
try:
|
try:
|
||||||
item = PlayList.objects.get(user=request.user, pk=request.data.get('playlist_id'))
|
item = self.get_queryset().objects.get(user=request.user, pk=request.data.get('playlist_id'))
|
||||||
item.delete()
|
item.delete()
|
||||||
return Response(status=status.HTTP_202_ACCEPTED)
|
return Response(status=status.HTTP_202_ACCEPTED)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
|
|
@ -88,7 +88,7 @@ class PlayListViewSet(GenericViewSet):
|
||||||
def delete_song_with_playlist(self, request):
|
def delete_song_with_playlist(self, request):
|
||||||
try:
|
try:
|
||||||
song = Song.objects.get(azura_id=request.data.get('azura_id'))
|
song = Song.objects.get(azura_id=request.data.get('azura_id'))
|
||||||
item = PlayList.objects.get(user=request.user, pk=request.data.get('playlist_id'))
|
item = self.get_queryset().objects.get(user=request.user, pk=request.data.get('playlist_id'))
|
||||||
item.song.remove(song)
|
item.song.remove(song)
|
||||||
return Response({'detail': 'Объект удалён'}, status=status.HTTP_200_OK)
|
return Response({'detail': 'Объект удалён'}, status=status.HTTP_200_OK)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
|
|
@ -117,7 +117,7 @@ class PlayListViewSet(GenericViewSet):
|
||||||
song_serializer.save()
|
song_serializer.save()
|
||||||
song = song_serializer.data.get('id')
|
song = song_serializer.data.get('id')
|
||||||
try:
|
try:
|
||||||
instance = PlayList.objects.get(pk=request.data.get('playlist_id'))
|
instance = self.get_queryset().objects.get(pk=request.data.get('playlist_id'))
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
return Response(
|
return Response(
|
||||||
{'detail': 'Плейлиста не существует', 'error': {'PlayList': 'Плейлиста не существует'}},
|
{'detail': 'Плейлиста не существует', 'error': {'PlayList': 'Плейлиста не существует'}},
|
||||||
|
|
@ -135,14 +135,14 @@ class PlayListViewSet(GenericViewSet):
|
||||||
|
|
||||||
|
|
||||||
class SongViewSet(GenericViewSet):
|
class SongViewSet(GenericViewSet):
|
||||||
queryset = Song.objects.all()
|
queryset = Song
|
||||||
serializer_class = SongSerializer
|
serializer_class = SongSerializer
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
|
|
||||||
def list(self, request):
|
def list(self, request):
|
||||||
songs_pk = FavoriteSong.objects.filter(user=request.user, song__isnull=False).values_list('song_id', flat=True)
|
songs_pk = FavoriteSong.objects.filter(user=request.user, song__isnull=False).values_list('song_id', flat=True)
|
||||||
songs = Song.objects.filter(id__in=songs_pk)
|
songs = self.get_queryset().objects.filter(id__in=songs_pk)
|
||||||
serializer = SongSerializer(songs, many=True)
|
serializer = self.get_serializer(songs, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@action(
|
@action(
|
||||||
|
|
@ -153,7 +153,7 @@ class SongViewSet(GenericViewSet):
|
||||||
)
|
)
|
||||||
def check_is_favorite(self, request, azura_id):
|
def check_is_favorite(self, request, azura_id):
|
||||||
try:
|
try:
|
||||||
song_obj = Song.objects.get(azura_id=azura_id)
|
song_obj = self.get_queryset().objects.get(azura_id=azura_id)
|
||||||
favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj)
|
favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj)
|
||||||
return Response({"is_favorite": True}, status=status.HTTP_200_OK)
|
return Response({"is_favorite": True}, status=status.HTTP_200_OK)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
|
|
@ -167,7 +167,7 @@ class SongViewSet(GenericViewSet):
|
||||||
)
|
)
|
||||||
def get_audio(self, request, azura_id):
|
def get_audio(self, request, azura_id):
|
||||||
try:
|
try:
|
||||||
song_obj = Song.objects.get(azura_id=azura_id)
|
song_obj = self.get_queryset().objects.get(azura_id=azura_id)
|
||||||
file_url = song_obj.unique_id
|
file_url = song_obj.unique_id
|
||||||
API_KEY = AZURACAST_API_KEY
|
API_KEY = AZURACAST_API_KEY
|
||||||
headers = {
|
headers = {
|
||||||
|
|
@ -190,7 +190,7 @@ class SongViewSet(GenericViewSet):
|
||||||
def add_favorite(self, request):
|
def add_favorite(self, request):
|
||||||
data = None
|
data = None
|
||||||
try:
|
try:
|
||||||
song = Song.objects.get(azura_id=request.data.get('azura_id'))
|
song = self.get_queryset().objects.get(azura_id=request.data.get('azura_id'))
|
||||||
data = {
|
data = {
|
||||||
"song": song.pk,
|
"song": song.pk,
|
||||||
"user": request.user.pk
|
"user": request.user.pk
|
||||||
|
|
@ -205,7 +205,7 @@ class SongViewSet(GenericViewSet):
|
||||||
data = request.data
|
data = request.data
|
||||||
file_play = f"{AZURACAST_URL}/api/station/it-radio/file/{response.json()['unique_id']}/play"
|
file_play = f"{AZURACAST_URL}/api/station/it-radio/file/{response.json()['unique_id']}/play"
|
||||||
data.update(unique_id=file_play)
|
data.update(unique_id=file_play)
|
||||||
serializer = SongSerializer(data=data)
|
serializer = self.get_serializer(data=data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
serializer.save()
|
||||||
data = {
|
data = {
|
||||||
|
|
@ -222,7 +222,7 @@ class SongViewSet(GenericViewSet):
|
||||||
@action(detail=False, methods=['post'], schema=DeleteSongSchema())
|
@action(detail=False, methods=['post'], schema=DeleteSongSchema())
|
||||||
def delete_song(self, request):
|
def delete_song(self, request):
|
||||||
try:
|
try:
|
||||||
song = Song.objects.get(azura_id=request.data.get('azura_id'))
|
song = self.get_queryset().objects.get(azura_id=request.data.get('azura_id'))
|
||||||
item = FavoriteSong.objects.get(user=request.user, song=song.pk)
|
item = FavoriteSong.objects.get(user=request.user, song=song.pk)
|
||||||
item.delete()
|
item.delete()
|
||||||
return Response(status=status.HTTP_202_ACCEPTED)
|
return Response(status=status.HTTP_202_ACCEPTED)
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -42,10 +42,7 @@ INSTALLED_APPS = [
|
||||||
|
|
||||||
'news',
|
'news',
|
||||||
'rubricks',
|
'rubricks',
|
||||||
'loginApi',
|
|
||||||
'userProfile',
|
|
||||||
'audio',
|
'audio',
|
||||||
'api',
|
|
||||||
'account',
|
'account',
|
||||||
'config_site'
|
'config_site'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ DATABASES = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
REST_FRAMEWORK['DEFAULT_PERMISSION_CLASSES'] = ('rest_framework.permissions.AllowAny',)
|
||||||
|
|
||||||
if len(sys.argv) >= 2 and sys.argv[1] != 'runserver':
|
if len(sys.argv) >= 2 and sys.argv[1] != 'runserver':
|
||||||
from conf.sentry import sentry_start, SENTRY_CONFIG
|
from conf.sentry import sentry_start, SENTRY_CONFIG
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from rest_framework_simplejwt.views import (
|
||||||
)
|
)
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
from userProfile.views import TeamViewSet
|
from config_site.views import TeamViewSet
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from rubricks.views import RubricViewSet
|
from rubricks.views import RubricViewSet
|
||||||
from audio.views import SongViewSet, PlayListViewSet
|
from audio.views import SongViewSet, PlayListViewSet
|
||||||
|
|
@ -22,7 +22,6 @@ router.register(r'song', SongViewSet, basename='song')
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/admin/', admin.site.urls),
|
path('api/admin/', admin.site.urls),
|
||||||
#path('api/fetch-file/<str:station>/<str:song_id>/', FetchAndServeFile.as_view(), name='fetch-file'),
|
|
||||||
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
|
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
|
||||||
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
|
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
|
||||||
path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),
|
path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
from .models import Team
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
@admin.register(Team)
|
||||||
|
class TeamAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ('name', 'last_name', 'position', 'img_person')
|
||||||
|
|
||||||
|
|
@ -11,3 +11,17 @@ class Page(models.Model):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
class Team(models.Model):
|
||||||
|
name = models.CharField('Имя участника', max_length=50)
|
||||||
|
last_name = models.CharField('Фамилия участника', max_length=50)
|
||||||
|
position = models.CharField('Должность участинка', max_length=50)
|
||||||
|
img_person = models.ImageField('Изображение участника', blank=True, null=True, upload_to="team_images/")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.last_name} {self.name} - {self.position}"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'Команда'
|
||||||
|
verbose_name_plural = 'Команда'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from rest_framework import serializers, views, status
|
from rest_framework import serializers
|
||||||
from rest_framework.response import Response
|
|
||||||
from .models import Team
|
from .models import Team
|
||||||
|
|
||||||
class TeamSerializer(serializers.ModelSerializer):
|
class TeamSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -1,11 +1,21 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from rest_framework.viewsets import ViewSet, GenericViewSet
|
from rest_framework.viewsets import GenericViewSet
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
|
|
||||||
from django.shortcuts import get_object_or_404, get_list_or_404
|
|
||||||
from rest_framework.permissions import IsAuthenticated
|
|
||||||
import requests
|
|
||||||
from .models import Page
|
|
||||||
|
|
||||||
|
|
||||||
|
from .models import Team
|
||||||
|
from .serializers import TeamSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class TeamViewSet(GenericViewSet):
|
||||||
|
queryset = Team
|
||||||
|
serializer_class = TeamSerializer
|
||||||
|
|
||||||
|
def list(self, request):
|
||||||
|
queryset = self.get_queryset().objects.all()
|
||||||
|
serializer = self.get_serializer(queryset, many=True)
|
||||||
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,3 +0,0 @@
|
||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class LoginapiConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'loginApi'
|
|
||||||
Binary file not shown.
|
|
@ -1,3 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = User
|
|
||||||
fields = ['username', 'email', 'password']
|
|
||||||
extra_kwargs = {
|
|
||||||
'password': {'write_only': True}
|
|
||||||
}
|
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
user = User.objects.create_user(
|
|
||||||
username=validated_data['username'],
|
|
||||||
email=validated_data['email'],
|
|
||||||
password=validated_data['password']
|
|
||||||
)
|
|
||||||
return user
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
""" from rest_framework import status
|
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework.views import APIView
|
|
||||||
from django.contrib.auth import authenticate
|
|
||||||
from rest_framework_simplejwt.tokens import RefreshToken
|
|
||||||
from rest_framework import generics
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
|
|
||||||
from rest_framework.decorators import api_view, permission_classes
|
|
||||||
from rest_framework.permissions import AllowAny
|
|
||||||
from userProfile.serializers import ProfileSerializer
|
|
||||||
from loginApi.serializers import UserSerializer
|
|
||||||
|
|
||||||
@api_view(['POST'])
|
|
||||||
@permission_classes([AllowAny])
|
|
||||||
def login(request):
|
|
||||||
def post(self, request):
|
|
||||||
username = request.data.get('username')
|
|
||||||
password = request.data.get('password')
|
|
||||||
user = authenticate(username=username, password=password)
|
|
||||||
if user is not None:
|
|
||||||
refresh = RefreshToken.for_user(user)
|
|
||||||
return Response({
|
|
||||||
'refresh': str(refresh),
|
|
||||||
'access': str(refresh.access_token),
|
|
||||||
})
|
|
||||||
return Response({'error': 'Invalid Credentials'}, status=status.HTTP_401_UNAUTHORIZED)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@api_view(['POST'])
|
|
||||||
@permission_classes([AllowAny])
|
|
||||||
def register(request):
|
|
||||||
user_serializer = UserSerializer(data=request.data)
|
|
||||||
if user_serializer.is_valid():
|
|
||||||
user = user_serializer.save()
|
|
||||||
profile_data = request.data.get('profile', {})
|
|
||||||
profile_data['user'] = user.id # Ensure the user ID is included in the profile data
|
|
||||||
|
|
||||||
profile_serializer = ProfileSerializer(data=profile_data)
|
|
||||||
if profile_serializer.is_valid():
|
|
||||||
profile_serializer.save()
|
|
||||||
refresh = RefreshToken.for_user(user)
|
|
||||||
return Response({
|
|
||||||
'user': user_serializer.data,
|
|
||||||
'profile': profile_serializer.data,
|
|
||||||
'refresh': str(refresh),
|
|
||||||
'access': str(refresh.access_token),
|
|
||||||
}, status=status.HTTP_201_CREATED)
|
|
||||||
else:
|
|
||||||
return Response(profile_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
||||||
return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST) """
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class SchedulerConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'scheduler'
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,9 +0,0 @@
|
||||||
from django.contrib import admin
|
|
||||||
from rest_framework.authtoken.admin import TokenAdmin
|
|
||||||
from .models import Team
|
|
||||||
|
|
||||||
TokenAdmin.raw_id_fields = ['user']
|
|
||||||
|
|
||||||
@admin.register(Team)
|
|
||||||
class TeamAdmin(admin.ModelAdmin):
|
|
||||||
list_display = ('id', 'name', 'last_name', 'position', 'img_person')
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class UserprofileConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'userProfile'
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 5.0.6 on 2024-06-19 12:09
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Team',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('name', models.CharField(max_length=50, verbose_name='Имя участника')),
|
|
||||||
('last_name', models.CharField(max_length=50, verbose_name='Фамилия участника')),
|
|
||||||
('position', models.CharField(max_length=50, verbose_name='Должность участинка')),
|
|
||||||
('img_person', models.ImageField(blank=True, null=True, upload_to='team_images/', verbose_name='Изображение участника')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'verbose_name': 'Команда',
|
|
||||||
'verbose_name_plural': 'Команда',
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,17 +0,0 @@
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from django.db import models
|
|
||||||
from django.db.models import JSONField
|
|
||||||
|
|
||||||
class Team(models.Model):
|
|
||||||
name = models.CharField('Имя участника', max_length=50)
|
|
||||||
last_name = models.CharField('Фамилия участника', max_length=50)
|
|
||||||
position = models.CharField('Должность участинка', max_length=50)
|
|
||||||
img_person = models.ImageField('Изображение участника', blank=True, null=True, upload_to="team_images/")
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.last_name} {self.name} - {self.position}"
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'Команда'
|
|
||||||
verbose_name_plural = 'Команда'
|
|
||||||
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
from rest_framework.permissions import IsAuthenticated, AllowAny
|
|
||||||
from django.shortcuts import get_object_or_404
|
|
||||||
from django.db import transaction
|
|
||||||
from rest_framework.viewsets import ViewSet
|
|
||||||
from rest_framework import viewsets, status, views
|
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework.decorators import api_view, permission_classes, action
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from rest_framework_simplejwt.authentication import JWTAuthentication
|
|
||||||
from rest_framework_simplejwt.exceptions import InvalidToken, AuthenticationFailed
|
|
||||||
from .models import Team
|
|
||||||
from .serializers import TeamSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class TeamViewSet(ViewSet):
|
|
||||||
def list(self, request):
|
|
||||||
queryset = Team.objects.all()
|
|
||||||
serializer = TeamSerializer(queryset, many=True)
|
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue