removed django-random-queryset

the looping strategy is not efficient when using spacing as ids for a single user might be spaced far apart. A single user also only has a few hundred recipes so using the order by ? method should be more efficient and also automatically be compatible with spaces
This commit is contained in:
vabene1111 2021-02-25 16:44:42 +01:00
parent 29ab6cfb2d
commit d01f7409bf
2 changed files with 6 additions and 13 deletions

View File

@ -4,25 +4,20 @@ import re
import uuid import uuid
import requests import requests
from PIL import Image
from annoying.decorators import ajax_request from annoying.decorators import ajax_request
from annoying.functions import get_object_or_None from annoying.functions import get_object_or_None
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core import management
from django.core.exceptions import FieldError, ValidationError from django.core.exceptions import FieldError, ValidationError
from django.core.files import File from django.core.files import File
from django.db.models import Q from django.db.models import Q
from django.http import FileResponse, HttpResponse, JsonResponse from django.http import FileResponse, HttpResponse, JsonResponse
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils import timezone
from django.utils.formats import date_format
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from icalendar import Calendar, Event from icalendar import Calendar, Event
from PIL import Image from rest_framework import decorators, viewsets
from rest_framework import decorators, permissions, viewsets
from rest_framework.exceptions import APIException, PermissionDenied from rest_framework.exceptions import APIException, PermissionDenied
from rest_framework.mixins import (ListModelMixin, RetrieveModelMixin,
UpdateModelMixin, CreateModelMixin)
from rest_framework.parsers import MultiPartParser from rest_framework.parsers import MultiPartParser
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.viewsets import ViewSetMixin from rest_framework.viewsets import ViewSetMixin
@ -59,7 +54,7 @@ from recipes.settings import DEMO
class StandardFilterMixin(ViewSetMixin): class StandardFilterMixin(ViewSetMixin):
def get_queryset(self): def get_queryset(self):
queryset = self.queryset.filter(userpreference__space=self.request.user.userpreference.space) queryset = self.queryset
query = self.request.query_params.get('query', None) query = self.request.query_params.get('query', None)
if query is not None: if query is not None:
queryset = queryset.filter(name__icontains=query) queryset = queryset.filter(name__icontains=query)
@ -77,7 +72,7 @@ class StandardFilterMixin(ViewSetMixin):
random = self.request.query_params.get('random', False) random = self.request.query_params.get('random', False)
if limit is not None: if limit is not None:
if random: if random:
queryset = queryset.random(int(limit)) queryset = queryset.order_by("?")[:limit]
else: else:
queryset = queryset[:int(limit)] queryset = queryset[:int(limit)]
return queryset return queryset
@ -289,14 +284,13 @@ class RecipeViewSet(viewsets.ModelViewSet, StandardFilterMixin):
permission_classes = [CustomIsShare | CustomIsGuest] permission_classes = [CustomIsShare | CustomIsGuest]
def get_queryset(self): def get_queryset(self):
if self.request.space: self.queryset = self.queryset.filter(space=self.request.space)
self.queryset = self.queryset.filter(space=self.request.space)
internal = self.request.query_params.get('internal', None) internal = self.request.query_params.get('internal', None)
if internal: if internal:
self.queryset = self.queryset.filter(internal=True) self.queryset = self.queryset.filter(internal=True)
return self.queryset return super().get_queryset()
# TODO write extensive tests for permissions # TODO write extensive tests for permissions

View File

@ -26,7 +26,6 @@ pyyaml==5.4.1
uritemplate==3.0.1 uritemplate==3.0.1
beautifulsoup4==4.9.3 beautifulsoup4==4.9.3
microdata==0.7.1 microdata==0.7.1
django-random-queryset==0.1.3
Jinja2==2.11.3 Jinja2==2.11.3
django-webpack-loader==0.7.0 django-webpack-loader==0.7.0
django-js-reverse==0.9.1 django-js-reverse==0.9.1