Exemple #1
0
def new_budget_view(request):
	if request.method == 'POST':
		form = BudgetForm(request.POST)
		if form.is_valid():
			amount = form.cleaned_data['budget_amount']
			weekly = form.cleaned_data['is_weekly']
			month = datetime.today().month
			year = datetime.today().year
			end_date = datetime.today()
			if weekly:
				today = datetime.today().weekday()
				difference = 6-today
				delta = timedelta(days=difference)
				end_date = end_date+delta
			else:
				end_day = calendar.monthrange(year, month)[1]
				end_date = date(year, month, end_day)

			model = BudgetModel(user_account=request.user,
				budget_amount=amount, is_weekly=weekly,
				budget_month=month, budget_year=year,
				end_date=end_date)
			model.save()
			return HttpResponseRedirect('/accounts/profile')

	context = RequestContext(request)
	context['form'] = BudgetForm()
	context.update(csrf(request))
	return render(request, 'budget/newbudget.html', context)
Exemple #2
0
def new_budget_view(request):
    if request.method == 'POST':
        form = BudgetForm(request.POST)
        if form.is_valid():
            amount = form.cleaned_data['budget_amount']
            weekly = form.cleaned_data['is_weekly']
            month = datetime.today().month
            year = datetime.today().year
            end_date = datetime.today()
            if weekly:
                today = datetime.today().weekday()
                difference = 6 - today
                delta = timedelta(days=difference)
                end_date = end_date + delta
            else:
                end_day = calendar.monthrange(year, month)[1]
                end_date = date(year, month, end_day)

            model = BudgetModel(user_account=request.user,
                                budget_amount=amount,
                                is_weekly=weekly,
                                budget_month=month,
                                budget_year=year,
                                end_date=end_date)
            model.save()
            return HttpResponseRedirect('/accounts/profile')

    context = RequestContext(request)
    context['form'] = BudgetForm()
    context.update(csrf(request))
    return render(request, 'budget/newbudget.html', context)
Exemple #3
0
def item(request, budget_id):
    budget = get_object_or_404(Budget, id=budget_id)

    if request.method == 'GET':
        form = BudgetForm(instance=budget)
    elif request.method == 'POST':
        form = BudgetForm(data=request.POST, instance=budget)
        if form.is_valid():
            data = form.cleaned_data
            form.save()
            budget.update_budgetlines()

            sum_natures = 0
            for n in ['fo', 'mi', 'sa', 'eq']:
                if n in data and data[n]:
                    sum_natures += data[n]

            if sum_natures > budget.get_amount_left():
                error_msg(
                    request,
                    u"Montant disponible insuffisant pour cette répartition.")
            else:
                for nature in ['fo', 'mi', 'sa', 'eq']:
                    if data[nature] or data[nature] == 0:
                        sub_budget, created = Budget.objects.get_or_create(
                            team=budget.team,
                            name="%s - %s" % (budget.name, nature.upper()),
                            default_origin=budget.default_origin,
                            budget_type=budget.budget_type,
                            tva_code=budget.tva_code,
                            domain=budget.domain,
                            default_nature=nature.upper())
                        if data[nature] > 0:
                            bl = sub_budget.credit(data[nature])
                            bl.product = u"Répartition"
                            bl.save()

                            bl = budget.debit(data[nature])
                            bl.product = u"Répartition vers %s" % nature.upper(
                            )
                            bl.save()

                # if budget.get_amount_left() == 0:
                #   budget.is_active = False
                #   budget.save()
                #   for bl in BudgetLine.objects.filter( budget_id = budget.id ):
                #       bl.is_active = False
                #       bl.save()
                #   info_msg( request, "Budget modifié avec succès. Il a été automatiquement archivé car son montant dispo est égal à 0.")
                # else:
                info_msg(request, "Budget modifié avec succès.")
                return redirect('budgets')
    else:
        return redirect('error')

    return render(request, 'budget/item.html', {
        'budget': budget,
        'form': form
    })
    def test_form_save(self):
        from budget.forms import BudgetForm

        form_data = {'name': 'foo',
                     'start_date': date.today()}
        form = BudgetForm(data=form_data)

        self.assertTrue(form.is_valid())
Exemple #5
0
def item(request, budget_id):
    budget = get_object_or_404( Budget, id = budget_id )
    
    if request.method == 'GET':
        form = BudgetForm( instance = budget )
    elif request.method == 'POST':
        form = BudgetForm(data = request.POST, instance = budget)
        if form.is_valid():
            data = form.cleaned_data
            form.save()
            budget.update_budgetlines()
            
            sum_natures = 0
            for n in ['fo','mi','sa','eq']:
                if n in data and data[n]:
                    sum_natures += data[n]
            
            if sum_natures > budget.get_amount_left():
                error_msg( request, u"Montant disponible insuffisant pour cette répartition." )
            else:
                for nature in ['fo','mi','sa','eq']:
                    if data[nature] or data[nature] == 0:
                        sub_budget, created = Budget.objects.get_or_create(
                            team = budget.team,
                            name = "%s - %s" % (budget.name, nature.upper()),
                            default_origin = budget.default_origin,
                            budget_type = budget.budget_type,
                            tva_code = budget.tva_code,
                            domain = budget.domain,
                            default_nature = nature.upper()
                        )
                        if data[nature] > 0:
                            bl = sub_budget.credit( data[nature] )
                            bl.product = u"Répartition"
                            bl.save()
                        
                            bl = budget.debit( data[nature] )
                            bl.product = u"Répartition vers %s" % nature.upper()
                            bl.save()
                
                # if budget.get_amount_left() == 0:
                #   budget.is_active = False
                #   budget.save()
                #   for bl in BudgetLine.objects.filter( budget_id = budget.id ):
                #       bl.is_active = False
                #       bl.save()
                #   info_msg( request, "Budget modifié avec succès. Il a été automatiquement archivé car son montant dispo est égal à 0.")
                # else:
                info_msg(request, "Budget modifié avec succès.")
                return redirect('budgets')
    else:
        return redirect('error')
    
    return render(request, 'budget/item.html', {
        'budget': budget,
        'form': form
    })
    def test_form_save_should_populate_slug_field(self):
        from budget.forms import BudgetForm

        form_data = {'name': 'Foo Bar',
                     'start_date': date.today()}
        form = BudgetForm(data=form_data)

        self.assertTrue(form.is_valid())

        form.save()
        self.assertEqual('foo-bar', form.instance.slug)
Exemple #7
0
def new(request):
    if request.method == 'GET':
        form = BudgetForm()
    elif request.method == 'POST':
        form = BudgetForm(data = request.POST)
        if form.is_valid():
            data = form.cleaned_data

            if data.get('all_natures', None) and data['all_natures'] >= 0:
                budget = form.save(commit = False)
                budget.name = "[%s] %s [%s]" % (
                    data['team'].shortname,
                    data['name'],
                    data['default_origin']
                )
                budget.save()
                if data['all_natures'] > 0:
                    bl = budget.credit(data["all_natures"])
                    bl.product = u"Initial"
                    bl.save()
                info_msg(request, "Budget '%s' ajouté avec succès." % budget.name)
            else:
                for nature in ['fo','mi','sa','eq']:
                    if data.get(nature, None) and data[nature] >= 0:
                        budget = Budget.objects.create(
                            team = data['team'],
                            name = "[%s] %s - %s [%s]" % (
                                data['team'].shortname,
                                data['name'],
                                nature.upper(),
                                data['default_origin']
                            ),
                            default_origin = data['default_origin'],
                            budget_type = data['budget_type'],
                            tva_code = data['tva_code'],
                            domain = data['domain'],
                            default_nature = nature.upper()
                        )
                        info_msg(request, "Budget '%s' ajouté avec succès." % budget.name)
                        if data[nature] > 0:
                            bl = budget.credit(data[nature])
                            bl.product = u"Initial"
                            bl.save()

            return redirect('budget:list')
    else:
        return redirect('error')
        
    return render(request, 'budget/form.html',{
        'form': form
    })
Exemple #8
0
def save_budget(request):
    if request.method == 'POST':
        budget = Budget()
        form = BudgetForm(request.POST, instance=budget)
        if form.is_valid():
            try:
                form.save()
            except Exception:
                return mail_response('false')
            sendmail(form)
            return mail_response('true')
        else:
            return mail_response('false')
    else:
        raise Http404
Exemple #9
0
def post_budget(request):
    if Budget.objects.last():
        budget_info = Budget.objects.last()
    else:
        budgetform = BudgetForm()

    if request.user.username:
        if request.method == "POST":
            author = Budget(author=request.user)
            budgetform = BudgetForm(request.POST, instance=author)
            if budgetform.is_valid():
                author.save()
                return redirect("/profile/")

            else:
                budgetform = BudgetForm(instance=budget_info)

            return render(request, 'expenses.html', {'budgetform': budgetform})
Exemple #10
0
def new(request):
    if request.method == 'GET':
        form = BudgetForm()
    elif request.method == 'POST':
        form = BudgetForm(data=request.POST)
        if form.is_valid():
            data = form.cleaned_data
            if data['all_natures'] or data["all_natures"] == 0:
                budget = form.save()
                if data['all_natures'] > 0:
                    bl = budget.credit(data["all_natures"])
                    bl.product = u"Initial"
                    bl.save()
            else:
                for nature in ['fo', 'mi', 'sa', 'eq']:
                    if data[nature] or data[nature] == 0:
                        budget = Budget.objects.create(
                            team=data['team'],
                            name="[%s] %s [%s] - %s" %
                            (data['team'].shortname, data['name'],
                             data['default_origin'], nature.upper()),
                            default_origin=data['default_origin'],
                            budget_type=data['budget_type'],
                            tva_code=data['tva_code'],
                            domain=data['domain'],
                            default_nature=nature.upper())
                        if data[nature] > 0:
                            bl = budget.credit(data[nature])
                            bl.product = u"Initial"
                            bl.save()

            info_msg(request, "Budget ajouté avec succès.")
            return redirect('budgets')
    else:
        return redirect('error')

    return render(request, 'budget/form.html', {'form': form})