# -*- coding: utf-8 -*- from django.shortcuts import render, redirect, get_object_or_404 from django.core.urlresolvers import reverse from django.views.decorators.csrf import csrf_protect from django.contrib.auth.decorators import login_required from project.commons.paginator import pagination, save_per_page_value from .. import models, forms @login_required @csrf_protect @save_per_page_value def bank_accounts_list(request, page_num=None): """Список расчетных счетов пользователя.""" template_name = 'customer/bank_accounts/list.html' account_list = models.BankAccount.objects.get_all(request.user) page, pagination_form = pagination(request, account_list, page_num) return render(request, template_name, {'page': page, 'pagination_form': pagination_form,}) @login_required @csrf_protect def bank_accounts_add(request): """Добавить расчетный счет.""" template_name='customer/bank_accounts/add.html' form_class = forms.BankAccountForm success_url = 'customer_bank_accounts_list' referer = request.POST.get('referer') if referer and reverse('customer_profile_edit') in referer: success_url = 'customer_profile_edit' if request.method == 'POST' and '_cancel' in request.POST: return redirect(success_url) if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): new_account = form.save(commit=False) new_account.user = request.user new_account.save() return redirect(success_url) else: form = form_class() dictionary = { 'form': form, 'referer': request.META.get('HTTP_REFERER'), } return render(request, template_name, dictionary) @login_required @csrf_protect def bank_accounts_edit(request, id): """Редактировать расчетный счет.""" template_name = 'customer/bank_accounts/edit.html' form_class = forms.BankAccountForm success_url = 'customer_bank_accounts_list' referer = request.POST.get('referer') if referer and reverse('customer_profile_edit') in referer: success_url = 'customer_profile_edit' if request.method == 'POST' and '_cancel' in request.POST: return redirect(success_url) account = get_object_or_404(models.BankAccount, pk=id, user=request.user) if request.method == 'POST': form = form_class(data=request.POST, instance=account) if form.is_valid(): form.save() return redirect(success_url) else: form = form_class(instance=account) dictionary = { 'account': account, 'form': form, 'referer': request.META.get('HTTP_REFERER'), } return render(request, template_name, dictionary) @login_required @csrf_protect def bank_accounts_delete(request, id): """Удалить расчетный счет.""" template_name='customer/bank_accounts/delete.html' success_url = 'customer_bank_accounts_list' referer = request.POST.get('referer') if referer and reverse('customer_profile_edit') in referer: success_url = 'customer_profile_edit' if request.method == 'POST' and '_cancel' in request.POST: return redirect(success_url) account = get_object_or_404(models.BankAccount, pk=id, user=request.user) if request.method == 'POST': account.delete() # TODO обработать ошибки удаления return redirect(success_url) dictionary = { 'account': account, 'referer': request.META.get('HTTP_REFERER'), } return render(request, template_name, dictionary)