Files
links/backend/customization/views.py
Andrey K. Choi 2e535513b5 + Приведены все функции приложения в рабочий вид
+ Наведен порядок в файлах проекта
+ Наведен порядок в документации
+ Настроены скрипты установки, развертки и так далее, расширен MakeFile
2025-11-02 06:09:55 +09:00

67 lines
3.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
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)