def get_queryset(self): qs = User.get_moderator_qs(self.request.user) if self.request.GET.get('email'): qs = qs.filter(email=self.request.GET.get('email')) if self.request.GET.get('last_name'): qs = qs.filter(last_name=self.request.GET.get('last_name')) if self.request.GET.get('first_name'): qs = qs.filter(first_name=self.request.GET.get('first_name')) if self.request.GET.get('patronymic'): qs = qs.filter(patronymic=self.request.GET.get('patronymic')) if self.request.GET.get('phone'): qs = qs.filter(phone=self.request.GET.get('phone')) return qs
def manager_report(request): context = {} user = request.user manager_qs = Manager.objects.get_qs(user) moderator_qs = User.get_moderator_qs(user) r_email = request.GET.get('email') r_moderator = request.GET.get('moderator') r_last_name = request.GET.get('last_name') r_first_name = request.GET.get('first_name') r_phone = request.GET.get('phone') r_date_s = request.GET.get('date_s') r_date_e = request.GET.get('date_e') if r_moderator and int(r_moderator) != 0: manager_qs = manager_qs.filter(moderator=int(r_moderator)) context.update({ 'r_moderator': int(r_moderator) }) if r_email: manager_qs = manager_qs.filter(user__email__icontains=r_email) context.update({ 'r_email': r_email }) if r_last_name: manager_qs = manager_qs.filter(user__last_name__icontains=r_last_name) context.update({ 'r_last_name': r_last_name }) if r_first_name: manager_qs = manager_qs.filter(user__first_name__icontains=r_first_name) context.update({ 'r_first_name': r_first_name }) if r_date_s: context.update({ 'r_date_s': r_date_s }) if r_date_e: context.update({ 'r_date_e': r_date_e }) for manager in manager_qs: manager.client_count = manager.incomingclient_set.count() task_qs = manager.incomingtask_set.all() sale_qs = ClientJournal.objects.filter(client__manager=manager) payment_qs = ClientJournalPayment.objects.filter(client__manager=manager) if r_date_s: task_qs = task_qs.filter(date__gte=datetime.datetime.strptime(r_date_s, '%d.%m.%Y')) sale_qs = sale_qs.filter(created__gte=datetime.datetime.strptime(r_date_s, '%d.%m.%Y')) payment_qs = payment_qs.filter(created__gte=datetime.datetime.strptime(r_date_s, '%d.%m.%Y')) if r_date_e: task_qs = task_qs.filter(date__lte=datetime.datetime.strptime(r_date_e, '%d.%m.%Y')) sale_qs = sale_qs.filter(created__lte=datetime.datetime.strptime(r_date_e, '%d.%m.%Y')) payment_qs = payment_qs.filter(created__lte=datetime.datetime.strptime(r_date_e, '%d.%m.%Y')) manager.task_count = task_qs.count() manager.call_count = task_qs.filter(type=1).count() manager.meet_count = task_qs.filter(type=0).count() manager.sale_count = task_qs.filter(type=2).count() manager.deny_count = task_qs.filter(type=3).count() manager.total_sale = 0 for sale in sale_qs: manager.total_sale += sale.total_cost() manager.total_payment = payment_qs.aggregate(Sum('sum'))['sum__sum'] or 0 if r_phone: manager_qs = manager_qs.filter(user__phone__icontains=r_phone) context.update({ 'r_phone': r_phone }) context.update({ 'moderator_list': moderator_qs, 'object_list': manager_qs }) return render(request, 'manager/manager_report.html', context)