+ Приведены все функции приложения в рабочий вид

+ Наведен порядок в файлах проекта
+ Наведен порядок в документации
+ Настроены скрипты установки, развертки и так далее, расширен MakeFile
This commit is contained in:
2025-11-02 06:09:55 +09:00
parent 367e1c932e
commit 2e535513b5
6103 changed files with 7040 additions and 1027861 deletions

View File

@@ -1,3 +1,66 @@
from django.shortcuts import render
from rest_framework import generics, status
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
from django.shortcuts import get_object_or_404
from .models import DesignSettings
from .serializers import DesignSettingsSerializer, PublicDesignSettingsSerializer
# Create your views here.
class DesignSettingsView(generics.RetrieveUpdateAPIView):
"""
API для получения и обновления настроек дизайна пользователя
"""
serializer_class = DesignSettingsSerializer
permission_classes = [IsAuthenticated]
parser_classes = [MultiPartParser, FormParser, JSONParser] # Поддержка файлов и JSON
def get_object(self):
# Получаем или создаем настройки для текущего пользователя
settings, created = DesignSettings.objects.get_or_create(
user=self.request.user
)
return settings
def perform_update(self, serializer):
serializer.save(user=self.request.user)
@api_view(['GET'])
def get_user_design_settings(request, username=None):
"""
Получение публичных настроек дизайна пользователя для отображения его страницы
"""
if username:
from django.contrib.auth import get_user_model
User = get_user_model()
try:
user = User.objects.get(username=username)
try:
settings = DesignSettings.objects.get(user=user)
# Возвращаем только публичные настройки
serializer = PublicDesignSettingsSerializer(settings, context={'request': request})
return Response(serializer.data)
except DesignSettings.DoesNotExist:
# Возвращаем настройки по умолчанию, если пользователь еще не настроил дизайн
default_settings = {
'theme_color': '#ffffff',
'dashboard_layout': 'list',
'groups_default_expanded': True,
'show_group_icons': True,
'show_link_icons': True,
'dashboard_background_color': '#f8f9fa',
'font_family': 'sans-serif'
}
return Response(default_settings)
except User.DoesNotExist:
return Response({'error': 'Пользователь не найден'}, status=404)
else:
# Для получения настроек текущего пользователя требуется авторизация
if not request.user.is_authenticated:
return Response({'error': 'Требуется авторизация'}, status=401)
# Возвращаем настройки текущего пользователя
settings, created = DesignSettings.objects.get_or_create(user=request.user)
serializer = DesignSettingsSerializer(settings, context={'request': request})
return Response(serializer.data)