comet/comet/account/views.py
Hugo LEVY-FALK 80a1a67643 Redirections
2018-12-14 18:32:30 +01:00

175 lines
4.3 KiB
Python

from django.shortcuts import (
render,
get_object_or_404,
redirect
)
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from .models import Account, Sale, Article
from .forms import SaleForm, ChooseArticleForm, AccountForm, SearchForm, ArticleForm
@login_required
def refill_balance(request, pk):
account = get_object_or_404(Account, pk=pk)
form = SaleForm(request.POST or None)
if form.is_valid():
sale = form.save(commit=False)
sale.account = account
sale.save()
account.calc_balance()
bal = account.balance
account.save()
return redirect(reverse('account', args=[account.pk,]))
return render(
request,
'account/form.html',
{
'account': account,
'form': form,
'title': "Recharge du solde",
'submit': "Recharger"
}
)
@login_required
def pay(request, pk):
account = get_object_or_404(Account, pk=pk)
form = ChooseArticleForm(request.POST or None)
if form.is_valid():
sale = form.to_sale()
sale.account = account
sale.save()
account.calc_balance()
account.save()
return redirect(reverse('account', args=[account.pk,]))
return render(
request,
'account/form.html',
{
'account': account,
'form': form,
'title': "Paiement d'une impression",
'submit': "Payer"
}
)
@login_required
def reset_balance(request, pk):
account = get_object_or_404(Account, pk=pk)
account.calc_balance()
if request.POST:
sale = Sale()
sale.price = - account.balance
sale.title = "Remise à zéro du solde."
sale.account = account
sale.save()
account.calc_balance()
account.save()
return redirect(reverse('account', args=[account.pk,]))
elif account.balance is 0:
return redirect(reverse('account', args=[account.pk,]))
return render(
request,
'account/form.html',
{
'account': account,
'title': "Rendre {}".format(account.balance),
'submit': "Argent rendu"
}
)
@login_required
def create_account(request):
form = AccountForm(request.POST or None)
if form.is_valid():
account = form.save()
return redirect(reverse('account', args=[account.pk,]))
return render(
request,
'account/form.html',
{
'form': form,
'title': "Créer un compte",
'submit': "Créer"
}
)
@login_required
def search(request):
form = SearchForm(request.POST or None)
accounts = Account.objects.order_by('firstname')
if form.is_valid():
string = form.cleaned_data['search']
accounts = Account.objects.filter(firstname__istartswith=string)\
| Account.objects.filter(lastname__istartswith=string)\
| Account.objects.filter(email__istartswith=string)
return render(
request,
'account/list_accounts.html',
{
'accounts': accounts,
'form': form,
}
)
@login_required
def account(request, pk):
account = get_object_or_404(Account, pk=pk)
return render(
request,
'account/balance.html',
locals()
)
@login_required
def article(request, pk):
article = get_object_or_404(Article, pk=pk)
form = ArticleForm(request.POST or None, instance=article)
if form.is_valid():
form.save()
return redirect(reverse('list-articles'))
return render(
request,
'account/form.html',
{
'form': form,
'submit': "Éditer",
'title': "Édition d'un article"
}
)
@login_required
def new_article(request):
form = ArticleForm(request.POST or None)
if form.is_valid():
form.save()
return redirect(reverse('list-articles'))
return render(
request,
'account/form.html',
{
'form': form,
'submit': "Créer",
'title': "Création d'un article"
}
)
@login_required
def list_articles(request):
articles = Article.objects.all()
return render(
request,
'account/list_articles.html',
locals()
)