def get(self, request, *args, **kwargs): self.model = ContentType.objects.get_for_id(self.kwargs["content_type"]).model_class() pagination = request.GET.get("pagination", "") if pagination == "False": self.pagination_class = None return ListAPIView.get(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs): if self.tr == AutorListView.TR_AUTOR_SERIALIZER: self.serializer_class = AutorSerializer self.permission_classes = (IsAuthenticated, ) if self.filter_class and 'q_0' in request.GET: self.filter_class = AutorSearchForFieldFilterSet return ListAPIView.get(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs): self.model = ContentType.objects.get_for_id( self.kwargs['content_type']).model_class() pagination = request.GET.get('pagination', '') if pagination == 'False': self.pagination_class = None return ListAPIView.get(self, request, *args, **kwargs)
def list(self, request, *args, **kwargs): try: if Room.objects.get(id=kwargs['id']).members.filter( id=request.user.id): self.queryset = Message.objects.filter(room=kwargs['id']) return ListAPIView.list(self, request, *args, **kwargs) return Response('Permission denied', status=status.HTTP_403_FORBIDDEN) except ObjectDoesNotExist: return Response({'detail': 'Not found.'}, status=status.HTTP_404_NOT_FOUND)
def get(self, request, *args, **kwargs): """ desativa o django-filter se a busca for por possiveis autores parametro tr = TR_CHOICE_SERIALIZER """ if self.tr == AutorListView.TR_CHOICE_SERIALIZER: self.filter_class = None self.filter_backends = [] self.serializer_class = ChoiceSerializer elif self.tr == AutorListView.TR_AUTOR_SERIALIZER: self.serializer_class = AutorSerializer self.permission_classes = (IsAuthenticated, ) return ListAPIView.get(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs): """ desativa o django-filter se a busca for por possiveis autores parametro tr = TR_CHOICE_SERIALIZER """ if self.tr == AutorListView.TR_CHOICE_SERIALIZER: self.filter_class = None self.filter_backends = [] self.serializer_class = ChoiceSerializer elif self.tr == AutorListView.TR_AUTOR_SERIALIZER: self.serializer_class = AutorSerializer self.permission_classes = (IsAuthenticated,) return ListAPIView.get(self, request, *args, **kwargs)
def list(self, request, *args, **kwargs): try: # Verify that the user is a member of the room if (Room.objects.get(id=kwargs["id"]).members.filter( id=request.user.id).exists()): # Retrieve the messages for the room self.queryset = Message.objects.filter(room=kwargs["id"]) return ListAPIView.list(self, request, *args, **kwargs) return Response("Permission denied", status=status.HTTP_403_FORBIDDEN) # Room was not found except ObjectDoesNotExist: return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND)
from django.urls import path from rest_framework.generics import ListAPIView, RetrieveUpdateAPIView from rest_framework.permissions import IsAuthenticated from v1.apps.organizations.models import Organization, Building from v1.apps.organizations.permissions import IsOrganizationAdmin from v1.apps.organizations.serializers import OrganizationListSerializer, OrganizationSerializer, BuildingListSerializer from v1.apps.organizations.views import BuildingView urlpatterns = [ path('', ListAPIView.as_view(queryset=Organization.objects.all(), serializer_class=OrganizationListSerializer, permission_classes=[IsAuthenticated]), name='organization-list'), path('<int:pk>', RetrieveUpdateAPIView.as_view( queryset=Organization.objects.all(), serializer_class=OrganizationSerializer, permission_classes=[IsOrganizationAdmin]), name='organization-RW'), path('buildings', BuildingView.as_view({'get': 'list'})) ]
def get(self, request, *args, **kwargs): return ListAPIView.get(self, request, *args, **kwargs)
def get_queryset(self): queryset = ListAPIView.get_queryset(self) if self.filter_backends: return queryset params = {'content_type__isnull': False} tipo = '' try: tipo = int(self.request.GET.get('tipo', '')) if tipo: params['id'] = tipo except: pass tipos = TipoAutor.objects.filter(**params) if not tipos.exists() and tipo: raise Http404() r = [] for tipo in tipos: q = self.request.GET.get('q', '').strip() model_class = tipo.content_type.model_class() fields = list( filter( lambda field: isinstance(field, SaplGenericRelation) and field.related_model == Autor, model_class._meta.get_fields(include_hidden=True))) """ fields - é um array de SaplGenericRelation que deve possuir o atributo fields_search. Verifique na documentação da classe a estrutura de fields_search. """ assert len(fields) >= 1, ( _('Não foi encontrado em %(model)s um atributo do tipo ' 'SaplGenericRelation que use o model %(model_autor)s') % { 'model': model_class._meta.verbose_name, 'model_autor': Autor._meta.verbose_name }) qs = model_class.objects.all() q_filter = Q() if q: for item in fields: if item.related_model != Autor: continue q_fs = Q() for field in item.fields_search: q_fs = q_fs | Q(**{'%s%s' % (field[0], field[1]): q}) q_filter = q_filter & q_fs qs = qs.filter(q_filter).distinct( fields[0].fields_search[0][0]) qs = qs.order_by(fields[0].fields_search[0][0]).values_list( 'id', fields[0].fields_search[0][0]) r += list(qs) if tipos.count() > 1: r.sort(key=lambda x: x[1].upper()) return r
def get(self, request, *args, **kwargs): return RetrieveAPIView.get(self, request, *args, **kwargs) \ if 'pk' in kwargs else ListAPIView.get(self, request, *args, **kwargs)
path('logout', views.Logout.as_view(), name="logout"), path('create', views.CreateUser.as_view(), name="create_user"), path('item/dailychance', views.DailyChance.as_view(), name="set_dailyChance"), path('profile/<str:username>', views.ProfileView.as_view(), name="profile_view"), path('profile/edit/<str:username>', OwnProfileView.as_view(), name="profile_edit_view"), path( 'view/all', ListAPIView.as_view( authentication_classes=settings.AUTH_CLASSES, permission_classes=settings.PERM_CLASSES, serializer_class=QuickUserSerializer, queryset=User.objects.all(), )), path( 'view/<str:username>', RetrieveAPIView.as_view( authentication_classes=settings.AUTH_CLASSES, permission_classes=settings.PERM_CLASSES, serializer_class=QuickUserSerializer, lookup_field="username", queryset=User.objects.all(), )), path('validate', views.ValidateUserData.as_view(), name="validate_username"), path('activate/<uidb64>/<token>',
def get_queryset(self): queryset = ListAPIView.get_queryset(self) if self.filter_backends: return queryset params = {"content_type__isnull": False} tipo = "" try: tipo = int(self.request.GET.get("tipo", "")) if tipo: params["id"] = tipo except: pass tipos = TipoAutor.objects.filter(**params) if not tipos.exists() and tipo: raise Http404() r = [] for tipo in tipos: q = self.request.GET.get("q", "").strip() model_class = tipo.content_type.model_class() fields = list( filter( lambda field: isinstance(field, SaplGenericRelation) and field.related_model == Autor, model_class._meta.get_fields(include_hidden=True), ) ) """ fields - é um array de SaplGenericRelation que deve possuir o atributo fields_search. Verifique na documentação da classe a estrutura de fields_search. """ assert len(fields) >= 1, _( "Não foi encontrado em %(model)s um atributo do tipo " "SaplGenericRelation que use o model %(model_autor)s" ) % {"model": model_class._meta.verbose_name, "model_autor": Autor._meta.verbose_name} qs = model_class.objects.all() q_filter = Q() if q: for item in fields: if item.related_model != Autor: continue q_fs = Q() for field in item.fields_search: q_fs = q_fs | Q(**{"%s%s" % (field[0], field[1]): q}) q_filter = q_filter & q_fs qs = qs.filter(q_filter).distinct(fields[0].fields_search[0][0]) qs = qs.order_by(fields[0].fields_search[0][0]).values_list("id", fields[0].fields_search[0][0]) r += list(qs) if tipos.count() > 1: r.sort(key=lambda x: x[1].upper()) return r
def list(self, request, *args, **kwargs): return ListAPIView.list(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs): Light.objects.all().update(activate=True) return ListAPIView.get(self, request, *args, **kwargs)
queryset = queryset.exclude( type=models.Project.PROJECT_TYPE_DATA_TRANSFER) request_user = self.request.user logger.debug('Current user: %s' % request_user) return queryset class DataStewardViewSet(viewsets.ModelViewSet): queryset = models.DataSteward.objects.all() serializer_class = serializers.DataStewardSerializer filter_fields = '__all__' search_fields = '__all__' # ordering_fields = ('name', 'owner', ) class DataProviderViewSet(viewsets.ModelViewSet): queryset = models.DataProvider.objects.all() serializer_class = serializers.DataProviderSerializer filter_fields = '__all__' search_fields = '__all__' # ordering_fields = ('name', 'owner', ) lookup_field = 'slug' lookup_url_kwarg = 'slug' DatabaseSyncListView = ListAPIView.as_view( queryset=models.Project.objects.all(), serializer_class=serializers.DatabaseSyncSerializer)
from django.conf.urls import include, url from rest_framework.generics import ListAPIView from views import InfoViewer, InfoAdd from core.models import InfoStorage from serializers import InfoStorageSerializer urlpatterns = [ # ex: /api/backend/info/1/ url(r'^backend/info/(?P<pk>[0-9]+)/$', InfoViewer.as_view()), # ex: /api/backend/info/ url(r'^backend/info/$', InfoAdd.as_view()), # ex: /api/backend/info/all/ # url(r'^backend/info/all/$', InfoViewerAll.as_view()), url( r'^backend/info/all/$', ListAPIView.as_view(queryset=InfoStorage.objects.all(), serializer_class=InfoStorageSerializer)), ]