Skip to content

Instantly share code, notes, and snippets.

View xxfeel's full-sized avatar
♠️

Ivan Filippov xxfeel

♠️
View GitHub Profile
[tool.poetry]
name = "adaptive-hockey-federation"
version = "0.1.0"
description = ""
authors = []
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.11"
django = "^4.2.6"
ivan@ivan-Lenovo-B570e:~/Dev/adaptive_hockey_federation$ git add .
ivan@ivan-Lenovo-B570e:~/Dev/adaptive_hockey_federation$ git commit -m 'Refactoring User'
check docstring is first.................................................Passed
check for merge conflicts................................................Passed
fix end of files.........................................................Passed
trim trailing whitespace.................................................Passed
isort....................................................................Passed
flake8...................................................................Passed
mypy.....................................................................Failed
- hook id: mypy
def get_queryset(self):
queryset = Recipe.objects.select_related('author')
return queryset.annotate(
favorit=Exists(queryset.filter(favorite__user=self.request.user, favorite__recipe=OuterRef('id'))),
shoppings=Exists(queryset.filter(shopping__user=self.request.user, shopping__recipe=OuterRef('id'))),
)
class RecipeViewset(viewsets.ModelViewSet):
'''Представление рецептов'''
permission_classes = (IsAuthorOrReadOnly | IsAdminOrReadOnly,)
filter_backends = (DjangoFilterBackend,)
filterset_class = RecipeFilter
def get_queryset(self):
queryset = Recipe.objects.all()
from django.db.models import Exists
from django_filters import rest_framework as filter
from recipes.models import Recipe
from users.models import User
STATUS_CHOICES = (
(0, 'false',),
(1, 'true',),
)
class RecipeListSerializer(serializers.ModelSerializer):
'''Сериализация списка рецептов.'''
tags = TagSerializer(many=True, read_only=True)
author = CustomUserSerializer(read_only=True)
ingredients = serializers.SerializerMethodField(read_only=True)
is_favorited = serializers.BooleanField(default=False, source='favorit')
is_in_shopping_cart = serializers.BooleanField(default=False, source='shoppings')
class Meta:
from django.core.validators import MinValueValidator
from django.db import models
from foodgram_backend.settings import QUERY_SET_LENGTH
from users.models import User
class Ingredient(models.Model):
name = models.CharField(
verbose_name='Название ингредиента',
class RecipeViewset(viewsets.ModelViewSet):
'''Представление рецептов'''
filter_backends = (DjangoFilterBackend,)
filterset_class = RecipeFilter
def get_queryset(self):
queryset = Recipe.objects.all()
return queryset.annotate(
favorit=Exists(queryset),
Serialisers.py:
class RecipeListSerializer(serializers.ModelSerializer):
'''Сериализация списка рецептов.'''
tags = TagSerializer(many=True, read_only=True)
author = CustomUserSerializer(read_only=True)
ingredients = serializers.SerializerMethodField(read_only=True)
is_favorited = serializers.SerializerMethodField()
is_in_shopping_cart = serializers.SerializerMethodField()
views.py:
def get_queryset(self):
params = self.request.query_params
queryset = self.queryset
if params:
if 'is_favorited' in params:
follow_bool = Recipe.objects.filter(
favorite__user=self.request.user
)