Esempio n. 1
0
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(),
        },
    )
Esempio n. 2
0
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()
        })
Esempio n. 3
0
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()
    })
Esempio n. 4
0
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
Esempio n. 5
0
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