Select Git revision
matchvector.cpp
views.py 3.54 KiB
from django.apps import apps
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.contrib.sites.shortcuts import get_current_site
from django.http import JsonResponse
from django.shortcuts import get_object_or_404, render, redirect
from django.utils.translation import gettext_lazy as _
from django.views.decorators.http import require_http_methods
from financial_settlement.forms import FinStatementForm
from financial_settlement.models import FinStatement
from unifier.choices import UnifiedFrameStatus
from unifier.models import UnifiedFrame
from users.forms import UserForm, UserProfileForm, NoteForm
def statement_list(request):
"""
Redirecting to the statement list view for the 'statement_id' given in the request.
:param request: Http request
:return: fin_statements_list view
"""
current_user = request.user
cat_edit_statement = current_user.has_perm(FinStatement, 'edit_statement')
statements = None
if cat_edit_statement:
statements = FinStatement.objects.order_by('statement_id')
else:
statements = FinStatement.objects.filter(user=current_user).order_by('statement_id')
for statement in statements:
statement.unified_frame_count = statement.unified_frame.count()
statement.current_cost = statement.unified_frame.count() * statement.price_per_unified_frame
return render(request, 'fin_statements_list.html', {'statements': statements})
@permission_required('finstatement.add_statement')
def statement_add(request):
"""
Redirecting to the statement add form.
:param request: Http request
:return: fin_statement_form view
"""
if request.method == 'POST':
form = FinStatementForm(instance=FinStatement(), data=request.POST)
if form.is_valid():
statement = form.save()
return redirect('financial_settlement:statement_list')
else:
form = FinStatementForm(instance=FinStatement())
return render(request, 'fin_statement_form.html', {'form': form, 'title': _('Dodaj umowę')})
@permission_required('finstatement.change_statement')
def statement_edit(request, pk):
"""
Redirecting to the statement edit form.
If the request method is POST, then save the form; otherwise, edit the given statement.
:param request: Http request
:param pk: Id of the statement to edit.
:return: Redirecting to fin_statement_form or fin_statement_form regardless of the method type.
"""
statement = get_object_or_404(FinStatement, pk=pk)
if request.method == 'POST':
form = FinStatementForm(instance=statement, data=request.POST)
if form.is_valid():
form.save()
return redirect('financial_settlement:statement_list')
else:
form = FinStatementForm(instance=statement)
return render(request, 'fin_statement_form.html', {'form': form, 'title': _('Edytuj umowę')})
def statement_detail(request, pk):
"""
Redirecting to the statement details form.
:param request: Http request
:param pk: 'pk' as statement id
:return: Redirecting to fin_statement_details
"""
statement = get_object_or_404(FinStatement, pk=pk)
unified_frames = statement.unified_frame
return render(request, 'fin_statement_details.html',
{'statement': statement,
'unified_frame_count': unified_frames.count(),
'current_cost': unified_frames.count() * statement.price_per_unified_frame})