コード例 #1
0
 def compras(self, request, *args, **kwargs):
     n = int(request.query_params.get('quantidade', 20))
     top_categorias = self.get_queryset().annotate(
         n_vendas=Count('produtos__itens_vendas')).values(
             'nome', 'slug', 'qtd_acessos',
             'n_vendas').order_by('-n_vendas')
     return list_response(self, self.get_serializer, top_categorias[:n],
                          request)
コード例 #2
0
 def vendas(self, request, pk):
     """
     Obter vendas relacionadas a um determinado cliente.
     """
     try:
         cliente = self.get_object()
         return list_response(self, VendaSerializer, cliente.vendas.all(), request)
     except models.ObjectDoesNotExist:
         raise Http404
コード例 #3
0
 def list(self, request, *args, **kwargs):
     queryset = self.filter_queryset(self.get_queryset())
     slugs = request.query_params.get('tags', None)
     if slugs:
         slugs = slugs.split(',')
         categorias = Categoria.objects.filter(slug__in=slugs)
         categorias.update(qtd_acessos=F('qtd_acessos') + 1)
         queryset = queryset.filter(categorias__in=categorias).distinct()
     return list_response(self, ProdutoListSerializer, queryset, request)
コード例 #4
0
 def produtos(self, request, pk, *args, **kwargs):
     search = request.query_params.get('search', None)
     categoria = self.get_object()
     categoria.qtd_acessos += 1
     categoria.save()
     if search:
         qs = categoria.produtos.filter(descricao__icontains=search)
     else:
         qs = categoria.produtos.all()
     serializer = ProdutoSerializer(qs, many=True)
     return list_response(self, ProdutoSerializer, qs, request)
コード例 #5
0
 def list(self, request, *args, **kwargs):
     inicio = request.query_params.get('inicio', None)
     fim = request.query_params.get('fim', None)
     qs = self.get_queryset()
     if inicio is not None and fim is not None:
         qs = qs.filter(created_at__range=(inicio, fim))
     elif inicio is not None:
         qs = qs.filter(created_at__gte=inicio)
     elif fim is not None:
         qs = qs.filter(created_at__lte=fim)
     return list_response(self, self.get_serializer, qs, request)
コード例 #6
0
 def produtos(self, request, pk):
     """
     Obter produtos recomendados para um usuário.
     """
     try:
         if not recommender_produtos.is_fitted:
             recommender_produtos.fit()
         produtosId = recommender_produtos.get_topk(int(pk))
         produtos = Produto.objects.filter(id__in=produtosId)
         return list_response(self, ProdutoSerializer, produtos, request)
     except models.ObjectDoesNotExist:
         raise Http404
コード例 #7
0
 def avaliacoes(self, request, pk):
     cliente = self.get_object()
     return list_response(self, AvaliacaoProdutoSerializer, cliente.avaliacoes_produto.all(), request)
コード例 #8
0
 def acessos(self, request, *args, **kwargs):
     n = int(request.query_params.get('quantidade', 20))
     qs = self.queryset.order_by('-qtd_acessos')[:n]
     return list_response(self, self.get_serializer, qs, request)