raise exception if user have no profile

remotes/origin/mitri4
Andrey 9 years ago
parent da3331bad8
commit e9a81c9b03
  1. 4
      project/customer/utils.py
  2. 8
      project/customer/views/bank_accounts.py
  3. 19
      project/customer/views/bank_accounts_ajax.py
  4. 10
      project/customer/views/clients.py
  5. 17
      project/customer/views/clients_ajax.py
  6. 3
      project/customer/views/docs.py
  7. 9
      project/customer/views/license.py
  8. 31
      project/customer/views/profile.py
  9. 19
      project/customer/views/profile_ajax.py
  10. 4
      project/docs/views/ajax.py
  11. 5
      project/docs/views/base_views.py

@ -79,3 +79,7 @@ def check_one_profile(profile, License, now, manual=False):
email = EmailMessage(subject=subject, to=(licenses[0].user.email,), body=email_body) email = EmailMessage(subject=subject, to=(licenses[0].user.email,), body=email_body)
email.send() email.send()
def raise_if_no_profile(request):
if not request.user.profile:
raise Exception(u"Profile not found for user: %d, '%s'" % request.user.pk, request.user.username)

@ -8,6 +8,7 @@ from project.commons.paginator import pagination, save_per_page_value
from .. import models, forms from .. import models, forms
from ..decorators import license_required from ..decorators import license_required
from ..utils import raise_if_no_profile
@login_required @login_required
@ -15,6 +16,7 @@ from ..decorators import license_required
@save_per_page_value @save_per_page_value
def bank_accounts_list(request, page_num=None): def bank_accounts_list(request, page_num=None):
"""Список расчетных счетов пользователя.""" """Список расчетных счетов пользователя."""
raise_if_no_profile(request)
template_name = 'customer/bank_accounts/list.html' template_name = 'customer/bank_accounts/list.html'
account_list = models.BankAccount.objects.get_all(request.user.profile) account_list = models.BankAccount.objects.get_all(request.user.profile)
page, pagination_form = pagination(request, account_list, page_num) page, pagination_form = pagination(request, account_list, page_num)
@ -25,6 +27,8 @@ def bank_accounts_list(request, page_num=None):
@csrf_protect @csrf_protect
def bank_accounts_add(request): def bank_accounts_add(request):
"""Добавить расчетный счет.""" """Добавить расчетный счет."""
raise_if_no_profile(request)
template_name='customer/bank_accounts/add.html' template_name='customer/bank_accounts/add.html'
form_class = forms.BankAccountForm form_class = forms.BankAccountForm
@ -57,6 +61,8 @@ def bank_accounts_add(request):
@csrf_protect @csrf_protect
def bank_accounts_edit(request, id): def bank_accounts_edit(request, id):
"""Редактировать расчетный счет.""" """Редактировать расчетный счет."""
raise_if_no_profile(request)
template_name = 'customer/bank_accounts/edit.html' template_name = 'customer/bank_accounts/edit.html'
form_class = forms.BankAccountForm form_class = forms.BankAccountForm
@ -90,6 +96,8 @@ def bank_accounts_edit(request, id):
@csrf_protect @csrf_protect
def bank_accounts_delete(request, id): def bank_accounts_delete(request, id):
"""Удалить расчетный счет.""" """Удалить расчетный счет."""
raise_if_no_profile(request)
template_name='customer/bank_accounts/delete.html' template_name='customer/bank_accounts/delete.html'
success_url = 'customer_bank_accounts_list' success_url = 'customer_bank_accounts_list'

@ -12,6 +12,7 @@ from project.commons.utils import dthandler
from .. import models, forms from .. import models, forms
from ..decorators import license_required from ..decorators import license_required
from ..utils import raise_if_no_profile
@login_required @login_required
@ -20,6 +21,8 @@ def bank_accounts_list_ajax(request):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
fields_list = ['pk', 'bik', 'name', 'address', 'korr_account', 'account', 'is_main',] fields_list = ['pk', 'bik', 'name', 'address', 'korr_account', 'account', 'is_main',]
accounts = models.BankAccount.objects.get_all(company=request.user.profile).values(*fields_list) accounts = models.BankAccount.objects.get_all(company=request.user.profile).values(*fields_list)
@ -40,6 +43,8 @@ def bank_accounts_get_ajax(request, id):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
try: try:
fields_list = forms.BankAccountForm.Meta.fields fields_list = forms.BankAccountForm.Meta.fields
except AttributeError: except AttributeError:
@ -56,11 +61,13 @@ def bank_accounts_get_ajax(request, id):
@csrf_protect @csrf_protect
def bank_accounts_add_ajax(request): def bank_accounts_add_ajax(request):
"""Добавить расчетный счет - AJAX.""" """Добавить расчетный счет - AJAX."""
form_class = forms.BankAccountForm
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
form_class = forms.BankAccountForm
form = form_class(initial={'company': request.user.profile.id}, data=request.POST) form = form_class(initial={'company': request.user.profile.id}, data=request.POST)
if form.is_valid(): if form.is_valid():
new_account = form.save(commit=False) new_account = form.save(commit=False)
@ -84,11 +91,13 @@ def bank_accounts_add_ajax(request):
@csrf_protect @csrf_protect
def bank_accounts_edit_ajax(request, id): def bank_accounts_edit_ajax(request, id):
"""Редактировать расчетный счет - AJAX.""" """Редактировать расчетный счет - AJAX."""
form_class = forms.BankAccountForm
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
form_class = forms.BankAccountForm
account = get_object_or_404(models.BankAccount, pk=id, company=request.user.profile) account = get_object_or_404(models.BankAccount, pk=id, company=request.user.profile)
form = form_class(data=request.POST, instance=account) form = form_class(data=request.POST, instance=account)
@ -115,6 +124,8 @@ def bank_accounts_delete_ajax(request, id):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
account = get_object_or_404(models.BankAccount, pk=id, company=request.user.profile) account = get_object_or_404(models.BankAccount, pk=id, company=request.user.profile)
account.delete() account.delete()

@ -7,6 +7,7 @@ from project.commons.paginator import pagination, save_per_page_value
from .. import models, forms from .. import models, forms
from ..decorators import license_required from ..decorators import license_required
from ..utils import raise_if_no_profile
@login_required @login_required
@ -14,6 +15,9 @@ from ..decorators import license_required
@save_per_page_value @save_per_page_value
def clients_list(request, page_num=None): def clients_list(request, page_num=None):
"""Список контрагентов пользователя.""" """Список контрагентов пользователя."""
raise_if_no_profile(request)
template_name='customer/clients/list.html' template_name='customer/clients/list.html'
client_list = models.Client.objects.filter(company=request.user.profile).order_by('name', '-created_at') client_list = models.Client.objects.filter(company=request.user.profile).order_by('name', '-created_at')
@ -34,6 +38,8 @@ def clients_list(request, page_num=None):
@csrf_protect @csrf_protect
def clients_add(request): def clients_add(request):
"""Добавить контрагента.""" """Добавить контрагента."""
raise_if_no_profile(request)
template_name='customer/clients/add.html' template_name='customer/clients/add.html'
success_url = 'customer_clients_list' success_url = 'customer_clients_list'
form_class = forms.ClientForm form_class = forms.ClientForm
@ -60,6 +66,8 @@ def clients_add(request):
@csrf_protect @csrf_protect
def clients_edit(request, id): def clients_edit(request, id):
"""Редактировать контрагента.""" """Редактировать контрагента."""
raise_if_no_profile(request)
template_name='customer/clients/edit.html' template_name='customer/clients/edit.html'
success_url = 'customer_clients_list' success_url = 'customer_clients_list'
@ -90,6 +98,8 @@ def clients_edit(request, id):
@csrf_protect @csrf_protect
def clients_delete(request, id): def clients_delete(request, id):
"""Удалить контрагента.""" """Удалить контрагента."""
raise_if_no_profile(request)
template_name='customer/clients/delete.html' template_name='customer/clients/delete.html'
success_url = 'customer_clients_list' success_url = 'customer_clients_list'

@ -12,6 +12,7 @@ from django.template.loader import render_to_string
from .. import models, forms from .. import models, forms
from ...docs.models import Invoice, Faktura, AktRabot, AktSverki, Nakladn, Platejka, Dover from ...docs.models import Invoice, Faktura, AktRabot, AktSverki, Nakladn, Platejka, Dover
from ..decorators import license_required from ..decorators import license_required
from ..utils import raise_if_no_profile
@login_required @login_required
@ -23,6 +24,8 @@ def clients_get_ajax(request, id):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
try: try:
fields_list = forms.ClientForm.Meta.fields fields_list = forms.ClientForm.Meta.fields
except AttributeError: except AttributeError:
@ -38,11 +41,13 @@ def clients_get_ajax(request, id):
@csrf_protect @csrf_protect
def clients_add_ajax(request): def clients_add_ajax(request):
"""Добавить контрагента - AJAX.""" """Добавить контрагента - AJAX."""
form_class = forms.ClientForm
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
form_class = forms.ClientForm
new_client_id = None new_client_id = None
new_client_str = None new_client_str = None
form = form_class(data=request.POST) form = form_class(data=request.POST)
@ -81,11 +86,13 @@ def clients_add_ajax(request):
@csrf_protect @csrf_protect
def clients_edit_ajax(request, id): def clients_edit_ajax(request, id):
"""Редактировать контрагента - AJAX.""" """Редактировать контрагента - AJAX."""
form_class = forms.ClientForm
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
form_class = forms.ClientForm
client = get_object_or_404(models.Client, pk=id, company=request.user.profile) client = get_object_or_404(models.Client, pk=id, company=request.user.profile)
form = form_class(data=request.POST, instance=client) form = form_class(data=request.POST, instance=client)
@ -121,6 +128,8 @@ def clients_delete_ajax(request, id):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
client = get_object_or_404(models.Client, pk=id, company=request.user.profile) client = get_object_or_404(models.Client, pk=id, company=request.user.profile)
client_docs = [] client_docs = []
doc_list = [(Invoice, u'счета'), (Faktura, u'счета-фактуры'), (Nakladn, u'накладные'), doc_list = [(Invoice, u'счета'), (Faktura, u'счета-фактуры'), (Nakladn, u'накладные'),

@ -11,6 +11,7 @@ from xlutils.copy import copy
from pytils.numeral import rubles from pytils.numeral import rubles
from ..models import License from ..models import License
from ..utils import raise_if_no_profile
XLS_ROOT = os.path.join(settings.TEMPLATE_DIRS[0], 'xls') XLS_ROOT = os.path.join(settings.TEMPLATE_DIRS[0], 'xls')
@ -20,6 +21,8 @@ def get_doc(request, order_num=None):
if not request.user.is_authenticated(): if not request.user.is_authenticated():
raise HttpResponseForbidden raise HttpResponseForbidden
raise_if_no_profile(request)
license = License.objects.get(pk=order_num) license = License.objects.get(pk=order_num)
pm = license.payform pm = license.payform
data = request.user.profile data = request.user.profile

@ -17,6 +17,7 @@ from yandex_money.models import Payment
from ..models import License, LicensePrice from ..models import License, LicensePrice
from ..consts import PAYFORMS from ..consts import PAYFORMS
from ..forms import LicenseForm, YaForm from ..forms import LicenseForm, YaForm
from ..utils import raise_if_no_profile
@login_required @login_required
@ -36,6 +37,8 @@ def yandex_pay(request, payment_id):
def order_license(request): def order_license(request):
"""заказ лицензии """заказ лицензии
""" """
raise_if_no_profile(request)
template_name = 'customer/profile/license.html' template_name = 'customer/profile/license.html'
form = LicenseForm(request.POST or None, form = LicenseForm(request.POST or None,
initial = {'term': LicensePrice.objects.all()[1], 'payform': 0}) initial = {'term': LicensePrice.objects.all()[1], 'payform': 0})
@ -70,6 +73,8 @@ def order_license(request):
def license_list(request): def license_list(request):
"""Список счетов на лицензии """Список счетов на лицензии
""" """
raise_if_no_profile(request)
template_name = 'customer/profile/license_list.html' template_name = 'customer/profile/license_list.html'
licenses = License.objects.filter(company=request.user.profile, deleted=False, status__gt=-1).order_by('-id') licenses = License.objects.filter(company=request.user.profile, deleted=False, status__gt=-1).order_by('-id')
dictionary = { dictionary = {
@ -82,6 +87,8 @@ def license_list(request):
def paid_list(request): def paid_list(request):
"""Оплаченные лицензии """Оплаченные лицензии
""" """
raise_if_no_profile(request)
template_name = 'customer/profile/paid_list.html' template_name = 'customer/profile/paid_list.html'
licenses = License.objects.filter(company=request.user.profile, licenses = License.objects.filter(company=request.user.profile,
status__in=[-1, 1, 2, 3, 4], deleted=False).order_by('-id') status__in=[-1, 1, 2, 3, 4], deleted=False).order_by('-id')
@ -96,6 +103,8 @@ def delete_license(request, pk):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
try: try:
license = License.objects.get(pk=pk, status=0, company=request.user.profile) license = License.objects.get(pk=pk, status=0, company=request.user.profile)
if request.method == 'POST': if request.method == 'POST':

@ -21,6 +21,7 @@ from project.commons.pdf_tools import render_pdf_to_string, pdf_to_response
from .. import models, forms from .. import models, forms
from ..decorators import license_required from ..decorators import license_required
from ..utils import raise_if_no_profile
PDF_PROFILE_NAME = u'Реквизиты.pdf' PDF_PROFILE_NAME = u'Реквизиты.pdf'
@ -33,13 +34,13 @@ SUPPORT_EMAIL = getattr(settings, 'SUPPORT_EMAIL', '')
@csrf_protect @csrf_protect
def profile_view(request): def profile_view(request):
"""Просмотр профиля пользователя, фильтрация реквизитов, скачать/отправить реквизиты по почте.""" """Просмотр профиля пользователя, фильтрация реквизитов, скачать/отправить реквизиты по почте."""
raise_if_no_profile(request)
template_name = 'customer/profile/view.html' template_name = 'customer/profile/view.html'
try: profile = request.user.profile
profile = request.user.profile
except: accounts = models.BankAccount.objects.get_all(profile)
raise Http404
accounts = models.BankAccount.objects.get_all(request.user.profile)
filters_form_class = forms.get_profile_filters_form_class(profile.profile_type) filters_form_class = forms.get_profile_filters_form_class(profile.profile_type)
filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user) filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user)
@ -72,20 +73,20 @@ def profile_view(request):
@csrf_protect @csrf_protect
def profile_edit(request): def profile_edit(request):
"""Редактировать профиль пользователя.""" """Редактировать профиль пользователя."""
raise_if_no_profile(request)
template_name = 'customer/profile/edit.html' template_name = 'customer/profile/edit.html'
success_url = 'customer_profile_view' success_url = 'customer_profile_view'
if request.method == 'POST' and '_cancel' in request.POST: if request.method == 'POST' and '_cancel' in request.POST:
return redirect(success_url) return redirect(success_url)
try: profile = request.user.profile
profile = request.user.profile
except:
raise Http404
form_class = forms.get_profile_form_class(profile.profile_type) form_class = forms.get_profile_form_class(profile.profile_type)
accounts = models.BankAccount.objects.get_all(request.user.profile) accounts = models.BankAccount.objects.get_all(profile)
bank_account_form = forms.BankAccountForm(initial={'company': request.user.profile}) bank_account_form = forms.BankAccountForm(initial={'company': profile})
if request.method == 'POST': if request.method == 'POST':
form = form_class(data=request.POST, files=request.FILES, instance=profile) form = form_class(data=request.POST, files=request.FILES, instance=profile)
@ -193,6 +194,8 @@ def _send_profile_email(subject, to, body, pdf_content):
@csrf_protect @csrf_protect
def profile_email(request): def profile_email(request):
"""Форма отправки профиля пользователя на email аттачем в PDF.""" """Форма отправки профиля пользователя на email аттачем в PDF."""
raise_if_no_profile(request)
template_name = 'customer/profile/email.html' template_name = 'customer/profile/email.html'
success_url = 'customer_profile_view' success_url = 'customer_profile_view'
@ -201,10 +204,8 @@ def profile_email(request):
if request.method == 'POST' and '_cancel' in request.POST: if request.method == 'POST' and '_cancel' in request.POST:
return redirect('customer_profile_view') return redirect('customer_profile_view')
try: profile = request.user.profile
profile = request.user.profile
except:
raise Http404
filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user) filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user)
if request.method == 'POST': if request.method == 'POST':

@ -11,6 +11,7 @@ from .. import models, forms
from ..decorators import license_required from ..decorators import license_required
from .profile import _send_profile_email, _profile_get_pdf from .profile import _send_profile_email, _profile_get_pdf
from ..utils import raise_if_no_profile
@login_required @login_required
@ -21,11 +22,11 @@ def profile_filters_edit_ajax(request):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
try: raise_if_no_profile(request)
profile = request.user.profile
except: profile = request.user.profile
raise Http404
accounts = models.BankAccount.objects.get_all(request.user.profile) accounts = models.BankAccount.objects.get_all(profile)
filters_form_class = forms.get_profile_filters_form_class(profile.profile_type) filters_form_class = forms.get_profile_filters_form_class(profile.profile_type)
filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user) filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user)
@ -54,12 +55,12 @@ def profile_email_ajax(request):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
form_class = forms.EmailProfileForm form_class = forms.EmailProfileForm
try: profile = request.user.profile
profile = request.user.profile
except:
raise Http404
filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user) filters = models.UserProfileFilters.objects.get_or_create_filters(user=request.user)
form = form_class(data=request.POST) form = form_class(data=request.POST)

@ -8,6 +8,7 @@ from django.db.models import get_model
from django.views.decorators.csrf import csrf_protect from django.views.decorators.csrf import csrf_protect
from ..models import Invoice from ..models import Invoice
from project.customer.utils import raise_if_no_profile
def get_pair(request, model, param1, val1, param2): def get_pair(request, model, param1, val1, param2):
@ -30,6 +31,9 @@ def get_pair(request, model, param1, val1, param2):
def get_invoices(request, client_id=None): def get_invoices(request, client_id=None):
if not request.is_ajax(): if not request.is_ajax():
return HttpResponseBadRequest() return HttpResponseBadRequest()
raise_if_no_profile(request)
if client_id: if client_id:
invoices = Invoice.objects.filter(client__id=client_id) invoices = Invoice.objects.filter(client__id=client_id)
else: else:

@ -34,6 +34,7 @@ from ..forms import EmailForm, InvoicesListForm
from .. import filters from .. import filters
from project.customer.decorators import license_required from project.customer.decorators import license_required
from project.customer.utils import raise_if_no_profile
DEBUG = getattr(settings, 'DEBUG', False) DEBUG = getattr(settings, 'DEBUG', False)
@ -249,6 +250,8 @@ class BaseViews(object):
"""Добавить документ. """Добавить документ.
Если при GET-запросе в kwargs передать initial, то создаст предзаполненный документ. Если при GET-запросе в kwargs передать initial, то создаст предзаполненный документ.
""" """
raise_if_no_profile(self.request)
if self.request.method == 'POST' and '_cancel' in self.request.POST: if self.request.method == 'POST' and '_cancel' in self.request.POST:
return redirect(self.REDIRECT_AFTER_ADD) return redirect(self.REDIRECT_AFTER_ADD)
@ -635,6 +638,8 @@ class BaseItemsViews(BaseViews):
"""Добавить документ. """Добавить документ.
Если при GET-запросе в kwargs передать initial и/или initial_items, то создаст предзаполненный документ. Если при GET-запросе в kwargs передать initial и/или initial_items, то создаст предзаполненный документ.
""" """
raise_if_no_profile(self.request)
if self.request.method == 'POST' and '_cancel' in self.request.POST: if self.request.method == 'POST' and '_cancel' in self.request.POST:
return redirect(self.REDIRECT_AFTER_ADD) return redirect(self.REDIRECT_AFTER_ADD)

Loading…
Cancel
Save