def history_budgets(request): if not request.user.has_perm("budget.custom_view_budget"): not_allowed_msg(request) return redirect("home") budgets = Budget.objects.filter(is_active=False) if not request.user.has_perm("team.custom_view_teams"): budgets = budgets.filter(team__in=get_teams(request.user)) # # Filter history_list depending on received GET data form = BudgetHistoryFilterForm(user=request.user, data=request.GET) if len(request.GET.keys()) > 0 and form.is_valid(): data = form.cleaned_data for key, value in data.items(): if not value: del data[key] if "team" in data: data["team"] = data["team"].name Q_obj = Q() Q_obj.connector = data.pop("connector") Q_obj.children = data.items() budget_lines = BudgetLine.objects.filter(budget_id__in=budgets.values_list("id", flat=True)).filter(Q_obj) else: budget_lines = BudgetLine.objects.none() return render( request, "history/budgets.html", { "filter_form": form, "budgets": paginate(request, budgets), "budget_lines": paginate(request, budget_lines), "url_args": request.GET.urlencode(), }, )
def history_budgets(request): if not request.user.has_perm("budget.custom_view_budget"): not_allowed_msg(request) return redirect("home") budgets = Budget.objects.filter(is_active=False) if not request.user.has_perm('team.custom_view_teams'): budgets = budgets.filter(team__in=get_teams(request.user)) # # Filter history_list depending on received GET data form = BudgetHistoryFilterForm(user=request.user, data=request.GET) if len(request.GET.keys()) > 0 and form.is_valid(): data = form.cleaned_data for key, value in data.items(): if not value: del data[key] if 'team' in data: data['team'] = data['team'].name Q_obj = Q() Q_obj.connector = data.pop("connector") Q_obj.children = data.items() budget_lines = BudgetLine.objects.filter( budget_id__in=budgets.values_list("id", flat=True)).filter(Q_obj) else: budget_lines = BudgetLine.objects.none() return render( request, 'history/budgets.html', { 'filter_form': form, 'budgets': paginate(request, budgets), 'budget_lines': paginate(request, budget_lines), 'url_args': request.GET.urlencode() })
def history_budgets(request): if not request.user.has_perm("budget.custom_view_budget"): not_allowed_msg(request) return redirect('home') budgets = Budget.objects.filter(is_active = False) if not request.user.has_perm('team.custom_view_teams'): budgets = budgets.filter(team__in = get_teams(request.user)) # # Filter history_list depending on received GET data form = BudgetHistoryFilterForm(user = request.user, data = request.GET) if len(request.GET.keys()) > 0 and form.is_valid(): Q_obj = Q() Q_obj.connector = form.cleaned_data.pop("connector") Q_obj.children = [] for key, value in form.cleaned_data.items(): if value: if key == 'team': Q_obj.children.append((key, value.name)) # value if of type 'Team' here else: Q_obj.children.append((key, value)) budget_lines = BudgetLine.objects.filter( budget_id__in = budgets.values_list("id", flat=True) ).filter(Q_obj) else: budget_lines = BudgetLine.objects.none() return render(request, 'history/budgets.html', { 'filter_form': form, 'budgets': paginate(request, budgets), 'budget_lines': paginate(request, budget_lines), 'url_args': request.GET.urlencode() })
def export_budgetlines(request): # # Filter budget_lines depending on received GET data form = BudgetHistoryFilterForm(user = request.user, data = request.GET) if form.is_valid(): Q_obj = Q() Q_obj.connector = form.cleaned_data.pop("connector") Q_obj.children = [] for key, value in form.cleaned_data.items(): if value: if key == 'team': Q_obj.children.append((key, value.name)) # value if of type 'Team' here else: Q_obj.children.append((key, value)) budget_lines = BudgetLine.objects.filter(is_active = False).filter(Q_obj) else: error_msg(request, "Impossible d'exporter cette page.") return redirect(reverse('history:budgets')) wb = xlwt.Workbook() ws = wb.add_sheet("export") header = [ u"EQUIPE", u"BUDGET", u"N°CMDE", u"DATE", u"NATURE", u"TUTELLE", u"FOURNISSEUR", u"COMMENTAIRE", u"DESIGNATION", u"CREDIT", u"DEBIT", u"QUANTITE", u"TOTAL", u"MONTANT DISPO" ] for col, title in enumerate(header): ws.write(0, col, title) prev_budget = None row = 1 for bl in budget_lines.order_by("budget"): if prev_budget != bl.budget: if prev_budget: row += 1 prev_budget = bl.budget ws.write(row, 0, bl.team) ws.write(row, 1, bl.budget) ws.write(row, 2, bl.number) ws.write(row, 3, bl.date.strftime("%d/%m/%Y")) ws.write(row, 4, bl.nature) ws.write(row, 5, bl.get_budget_type_display()) ws.write(row, 6, bl.provider) ws.write(row, 7, bl.offer) ws.write(row, 8, bl.product) ws.write(row, 9, bl.credit) ws.write(row, 10, bl.debit) ws.write(row, 11, bl.quantity) if bl.debit: ws.write(row, 12, "%s" % (bl.debit * bl.quantity * -1)) else: ws.write(row, 12, "%s" % (bl.credit * bl.quantity)) ws.write(row, 13, str(bl.get_amount_left())) row += 1 response = HttpResponse() response['Content-Disposition'] = 'attachment; filename=export_historique_budget.xls' response['Content-Type'] = 'application/vnd.ms-excel; charset=utf-8' wb.save(response) return response
def export_budgetlines(request): # # Filter budget_lines depending on received GET data form = BudgetHistoryFilterForm(user=request.user, data=request.GET) if form.is_valid(): data = form.cleaned_data for key, value in data.items(): if not value: del data[key] if 'team' in data: data['team'] = data['team'].name Q_obj = Q() Q_obj.connector = data.pop("connector") Q_obj.children = data.items() budget_lines = BudgetLine.objects.filter(is_active=False).filter(Q_obj) else: error_msg(request, "Impossible d'exporter cette page.") return redirect(reverse("history_budgets")) wb = xlwt.Workbook() ws = wb.add_sheet("export") header = [ u"EQUIPE", u"BUDGET", u"N°CMDE", u"DATE", u"NATURE", u"TUTELLE", u"FOURNISSEUR", u"COMMENTAIRE", u"DESIGNATION", u"CREDIT", u"DEBIT", u"QUANTITE", u"TOTAL", u"MONTANT DISPO" ] for col, title in enumerate(header): ws.write(0, col, title) prev_budget = None row = 1 for bl in budget_lines.order_by("budget"): if prev_budget != bl.budget: if prev_budget: row += 1 prev_budget = bl.budget ws.write(row, 0, bl.team) ws.write(row, 1, bl.budget) ws.write(row, 2, bl.number) ws.write(row, 3, bl.date.strftime("%d/%m/%Y")) ws.write(row, 4, bl.nature) ws.write(row, 5, bl.get_budget_type_display()) ws.write(row, 6, bl.provider) ws.write(row, 7, bl.offer) ws.write(row, 8, bl.product) ws.write(row, 9, bl.credit) ws.write(row, 10, bl.debit) ws.write(row, 11, bl.quantity) if bl.debit: ws.write(row, 12, "%s" % (bl.debit * bl.quantity * -1)) else: ws.write(row, 12, "%s" % (bl.credit * bl.quantity)) ws.write(row, 13, str(bl.get_amount_left())) row += 1 response = HttpResponse(mimetype="application/ms-excel") response[ 'Content-Disposition'] = 'attachment; filename=export_historique_budget.xls' response['Content-Type'] = 'application/vnd.ms-excel; charset=utf-8' wb.save(response) return response