def itens_mais(cls, shopping_id, acao, tipo): hoje = date.today() mais_vistas_query = cls.query_relatorio(shopping_id, acao, tipo) mes_query = cls.query_relatorio(shopping_id, acao, tipo, date=hoje + timedelta(days=-30)) semana_query = cls.query_relatorio(shopping_id, acao, tipo, date=hoje + timedelta(days=-7)) mais_vistas, total_vistas = listas_e_totais(mais_vistas_query, 'vistas') mais_do_mes, total_mes = listas_e_totais(mes_query, 'vistas') mais_da_semana, total_semana = listas_e_totais(semana_query, 'vistas') return { 'tipo': cls.TIPOS[tipo][1], 'nome_shopping': Shopping.objects.get(id=shopping_id).nome, 'mais_vistas': mais_vistas, 'total_vistas': total_vistas, 'mais_do_mes': mais_do_mes, 'total_mes': total_mes, 'mais_da_semana': mais_da_semana, 'total_semana': total_semana }
def lojas_mais_solicitadas(request, shopping_id): inicio_str = inicio = fim_str = fim = None if request.method == "POST": inicio_str = request.POST.get('inicio', None) inicio = datetime.strptime(inicio_str, '%d/%m/%Y') fim_str = request.POST.get('fim', None) fim = datetime.strptime(fim_str, '%d/%m/%Y') contexto = {'nome_shopping': Shopping.objects.get(id=shopping_id).nome} if inicio and fim: query_filtro = Loja.objects.annotate(pedidos=Count('pk', only=Q(shopping=shopping_id, solicitacoes__data_criacao__gte=inicio, solicitacoes__data_criacao__lte=fim))) \ .order_by('-pedidos') filtradas, total_filtradas = listas_e_totais(query_filtro, 'pedidos') contexto.update({'filtradas': filtradas, 'total_filtradas': total_filtradas, 'inicio': inicio_str, 'fim': fim_str}) else: hoje = date.today() mes = hoje + timedelta(days=-30) semana = hoje + timedelta(days=-7) solicitadas_query = Loja.relatorio_solicitacoes(shopping_id) mais_solicitadas, total_solicitadas = listas_e_totais(solicitadas_query, 'pedidos') mes_query = Loja.relatorio_solicitacoes(shopping_id, date=mes) mais_do_mes, total_mes = listas_e_totais(mes_query, 'pedidos') semana_query = Loja.relatorio_solicitacoes(shopping_id, date=semana) mais_da_semana, total_semana = listas_e_totais(semana_query, 'pedidos') contexto.update({'mais_solicitadas': mais_solicitadas, 'total_solicitadas': total_solicitadas, 'mais_do_mes': mais_do_mes, 'total_mes': total_mes, 'mais_da_semana': mais_da_semana, 'total_semana': total_semana}) return render(request, "relatorios/lojas_mais_solicitadas.html", contexto)
def itens_mais(cls, shopping_id, acao, tipo): hoje = date.today() mais_vistas_query = cls.query_relatorio(shopping_id, acao, tipo) mes_query = cls.query_relatorio(shopping_id, acao, tipo, date=hoje + timedelta(days=-30)) semana_query = cls.query_relatorio(shopping_id, acao, tipo, date=hoje + timedelta(days=-7)) mais_vistas, total_vistas = listas_e_totais(mais_vistas_query, 'vistas') mais_do_mes, total_mes = listas_e_totais(mes_query, 'vistas') mais_da_semana, total_semana = listas_e_totais(semana_query, 'vistas') return {'tipo': cls.TIPOS[tipo][1], 'nome_shopping': Shopping.objects.get(id=shopping_id).nome, 'mais_vistas': mais_vistas, 'total_vistas': total_vistas, 'mais_do_mes': mais_do_mes, 'total_mes': total_mes, 'mais_da_semana': mais_da_semana, 'total_semana': total_semana}
def categorias_mais_vistas(request, shopping_id): inicio_str = inicio = fim_str = fim = None if request.method == "POST": inicio_str = request.POST.get('inicio', None) inicio = datetime.strptime(inicio_str, '%d/%m/%Y') fim_str = request.POST.get('fim', None) fim = datetime.strptime(fim_str, '%d/%m/%Y') contexto = {'tipo': 'categoria', 'modalidade': None, 'nome_shopping': Shopping.objects.get(id=shopping_id).nome} if inicio and fim: query_filtro = Categoria.objects.annotate(vistas=Count('pk', only=Q(ofertas__loja__shopping=shopping_id, ofertas__logs__acao=1, ofertas__logs__data_criacao__gte=inicio, ofertas__logs__data_criacao__lte=fim+timedelta(days=1)))) \ .order_by('-vistas') filtradas, total_filtradas = listas_e_totais(query_filtro, 'vistas') contexto.update({'filtradas': filtradas, 'total_filtradas': total_filtradas, 'inicio': inicio_str, 'fim': fim_str}) else: hoje = date.today() mes = hoje + timedelta(days=-30) semana = hoje + timedelta(days=-7) mais_query = Categoria.objects.annotate(vistas=Count('pk', only=Q(ofertas__loja__shopping=shopping_id, ofertas__logs__acao=1))).order_by('-vistas') mes_query = Categoria.objects.annotate(vistas=Count('pk', only=Q(ofertas__loja__shopping=shopping_id, ofertas__logs__acao=1, ofertas__logs__data_criacao__gte=mes)))\ .order_by('-vistas') semana_query = Categoria.objects.annotate(vistas=Count('pk', only=Q(ofertas__loja__shopping=shopping_id, ofertas__logs__acao=1, ofertas__logs__data_criacao__gte=semana)))\ .order_by('-vistas') mais_vistas, total_vistas = listas_e_totais(mais_query, 'vistas') mais_do_mes, total_mes = listas_e_totais(mes_query, 'vistas') mais_da_semana, total_semana = listas_e_totais(semana_query, 'vistas') contexto.update({'mais_vistas': mais_vistas, 'total_vistas': total_vistas, 'mais_do_mes': mais_do_mes, 'total_mes': total_mes, 'mais_da_semana': mais_da_semana, 'total_semana': total_semana}) return render(request, "relatorios/mais_vistas.html", contexto)
def itens_com_mais(request, shopping_id, acao, tipo): inicio_str = inicio = fim_str = fim = None if request.method == "POST": inicio_str = request.POST.get('inicio', None) inicio = datetime.strptime(inicio_str, '%d/%m/%Y') fim_str = request.POST.get('fim', None) fim = datetime.strptime(fim_str, '%d/%m/%Y') if inicio and fim: query_filtro = Oferta.relatorio_filtrado(shopping_id, acao, tipo, inicio, fim) filtradas, total_filtradas = listas_e_totais(query_filtro, 'vistas') contexto = {'tipo': Oferta.TIPOS[tipo][1], 'nome_shopping': Shopping.objects.get(id=shopping_id).nome, 'filtradas': filtradas, 'total_filtradas': total_filtradas, 'inicio': inicio_str, 'fim': fim_str} else: contexto = Oferta.itens_mais(shopping_id, acao, tipo) return contexto