code quality

This commit is contained in:
bkfox
2023-03-13 17:47:00 +01:00
parent 934817da8a
commit 112770eddf
162 changed files with 4798 additions and 4069 deletions

View File

@ -1,23 +1,27 @@
from django_filters import rest_framework as filters
from rest_framework import status, viewsets
from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from django_filters import rest_framework as filters
from .models import Sound, Track
from .serializers import SoundSerializer, admin
from .views import BaseAPIView
__all__ = ('SoundFilter', 'SoundViewSet', 'TrackFilter', 'TrackROViewSet',
'UserSettingsViewSet')
__all__ = (
"SoundFilter",
"SoundViewSet",
"TrackFilter",
"TrackROViewSet",
"UserSettingsViewSet",
)
class SoundFilter(filters.FilterSet):
station = filters.NumberFilter(field_name='program__station__id')
program = filters.NumberFilter(field_name='program_id')
episode = filters.NumberFilter(field_name='episode_id')
search = filters.CharFilter(field_name='search', method='search_filter')
station = filters.NumberFilter(field_name="program__station__id")
program = filters.NumberFilter(field_name="program_id")
episode = filters.NumberFilter(field_name="episode_id")
search = filters.CharFilter(field_name="search", method="search_filter")
def search_filter(self, queryset, name, value):
return queryset.search(value)
@ -25,29 +29,30 @@ class SoundFilter(filters.FilterSet):
class SoundViewSet(BaseAPIView, viewsets.ModelViewSet):
serializer_class = SoundSerializer
queryset = Sound.objects.available().order_by('-pk')
queryset = Sound.objects.available().order_by("-pk")
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = SoundFilter
# --- admin
class TrackFilter(filters.FilterSet):
artist = filters.CharFilter(field_name='artist', lookup_expr='icontains')
album = filters.CharFilter(field_name='album', lookup_expr='icontains')
title = filters.CharFilter(field_name='title', lookup_expr='icontains')
artist = filters.CharFilter(field_name="artist", lookup_expr="icontains")
album = filters.CharFilter(field_name="album", lookup_expr="icontains")
title = filters.CharFilter(field_name="title", lookup_expr="icontains")
class TrackROViewSet(viewsets.ReadOnlyModelViewSet):
""" Track viewset used for auto completion """
"""Track viewset used for auto completion."""
serializer_class = admin.TrackSerializer
permission_classes = [IsAuthenticated]
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = TrackFilter
queryset = Track.objects.all()
@action(name='autocomplete', detail=False)
@action(name="autocomplete", detail=False)
def autocomplete(self, request):
field = request.GET.get('field', None)
field = request.GET.get("field", None)
if field:
queryset = self.filter_queryset(self.get_queryset())
values = queryset.values_list(field, flat=True).distinct()
@ -56,36 +61,38 @@ class TrackROViewSet(viewsets.ReadOnlyModelViewSet):
class UserSettingsViewSet(viewsets.ViewSet):
"""User's settings specific to aircox.
Allow only to create and edit user's own settings.
"""
User's settings specific to aircox. Allow only to create and edit
user's own settings.
"""
serializer_class = admin.UserSettingsSerializer
permission_classes = [IsAuthenticated]
def get_serializer(self, instance=None, **kwargs):
return self.serializer_class(
instance=instance, context={'user': self.request.user},
**kwargs)
instance=instance, context={"user": self.request.user}, **kwargs
)
@action(detail=False, methods=['GET'])
@action(detail=False, methods=["GET"])
def retrieve(self, request):
user = self.request.user
settings = getattr(user, 'aircox_settings', None)
settings = getattr(user, "aircox_settings", None)
data = settings and self.get_serializer(settings) or None
return Response(data)
@action(detail=False, methods=['POST', 'PUT'])
@action(detail=False, methods=["POST", "PUT"])
def update(self, request):
user = self.request.user
settings = getattr(user, 'aircox_settings', None)
settings = getattr(user, "aircox_settings", None)
data = dict(request.data)
data['user_id'] = self.request.user
data["user_id"] = self.request.user
serializer = self.get_serializer(instance=settings, data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'status': 'ok'})
return Response({"status": "ok"})
else:
return Response({'errors': serializer.errors},
status=status.HTTP_400_BAD_REQUEST)
return Response(
{"errors": serializer.errors},
status=status.HTTP_400_BAD_REQUEST,
)