Skip to content
Snippets Groups Projects
Select Git revision
2 results Searching

matchvector.cpp

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