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 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)
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
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 })
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})