Best Python code snippet using autotest_python
views.py
Source:views.py
1from django.contrib.auth.models import User2from rest_framework import status, viewsets3from rest_framework.permissions import AllowAny4from django.db.models import Count, Q5from question.models import Tag6from question.views import paginate_objects7from tag.serializers import TagListSerializer, TagUserSerializer8from tag.constants import *9from tag.models import UserTag10from rest_framework.response import Response11class TagViewSet(viewsets.GenericViewSet):12 queryset = Tag.objects.all()13 serializer_class = TagUserSerializer14 permission_classes = (AllowAny,)15 def retrieve(self, request, pk=None):16 if pk == "me":17 if not request.user.is_authenticated:18 return Response(19 {"message": "Invalid Token"}, status=status.HTTP_401_UNAUTHORIZED20 )21 user = request.user22 else:23 try:24 user = User.objects.get(pk=pk, is_active=True)25 except (User.DoesNotExist, ValueError):26 return Response(27 {"message": "There is no user with that id"},28 status=status.HTTP_404_NOT_FOUND,29 )30 user_tags = UserTag.objects.filter(user=user)31 user_tags = sort_user_tag(request, user_tags)32 if user_tags is None:33 return Response(34 {"error": "Invalid sorted_by"}, status=status.HTTP_400_BAD_REQUEST35 )36 user_tags = paginate_objects(request, user_tags, TAG_USER_PER_PAGE)37 if user_tags is None:38 return Response(39 {"error": "Invalid page"}, status=status.HTTP_400_BAD_REQUEST40 )41 return Response({"tags": self.get_serializer(user_tags, many=True).data})42class TagListViewSet(viewsets.GenericViewSet):43 queryset = Tag.objects.all()44 serializer_class = TagListSerializer45 permission_classes = (AllowAny,)46 def list(self, request):47 tags = search_tag_list(request, self.get_queryset())48 tags = sort_tags_list(request, tags)49 if tags is None:50 return Response(51 {"error": "Invalid sorted_by"}, status=status.HTTP_400_BAD_REQUEST52 )53 tags = paginate_objects(request, tags, TAG_LIST_PER_PAGE)54 if tags is None:55 return Response(56 {"error": "Invalid page"}, status=status.HTTP_400_BAD_REQUEST57 )58 return Response({"tags": self.get_serializer(tags, many=True).data})59def search_tag_list(request, tags):60 search = request.query_params.get("search")61 if search is None or search == "":62 return tags63 return Tag.objects.filter(name__icontains=search)64def sort_tags_list(request, tags):65 sorted_by = request.query_params.get("sorted_by")66 if not (sorted_by in (POPULAR, NAME, NEWEST)):67 return None68 if sorted_by == POPULAR:69 return tags.annotate(70 question_count=Count(71 "question_tags", filter=Q(question_tags__question__is_active=True)72 )73 ).order_by("-question_count")74 elif sorted_by == NAME:75 return tags.order_by("name")76 elif sorted_by == NEWEST:77 return tags.order_by("-created_at")78 return tags79def sort_user_tag(request, user_tags):80 sorted_by = request.query_params.get("sorted_by")81 if not (sorted_by in (VOTES, NAME)):82 return None83 if sorted_by == VOTES:84 return user_tags.order_by("-score")85 elif sorted_by == NAME:86 return user_tags.order_by("tag__name")...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!