SciPost Code Repository

Skip to content
Snippets Groups Projects
views.py 2.47 KiB
Newer Older
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"


Jorran de Wit's avatar
Jorran de Wit committed
from django.contrib import messages
Jorran de Wit's avatar
Jorran de Wit committed
from django.contrib.auth.decorators import permission_required
Jorran de Wit's avatar
Jorran de Wit committed
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.urlresolvers import reverse_lazy
Jorran de Wit's avatar
Jorran de Wit committed
from django.http import Http404
Jorran de Wit's avatar
Jorran de Wit committed
from django.shortcuts import render
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView
Jorran de Wit's avatar
Jorran de Wit committed
from .forms import LogsMonthlyActiveFilter
from .models import Subsidy, WorkLog
Jorran de Wit's avatar
Jorran de Wit committed
from .utils import slug_to_id

from scipost.mixins import PermissionsMixin


Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed

#############
# Subsidies #
#############

class SubsidyCreateView(PermissionsMixin, CreateView):
    """
    Create a new Subsidy.
    """
    permission_required = 'scipost.can_manage_subsidies'
    model = Subsidy
    fields = '__all__'
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
    template_name = 'finances/subsidy_form.html'
    success_url = reverse_lazy('finances:subsidies')


class SubsidyUpdateView(PermissionsMixin, UpdateView):
    """
    Update a Subsidy.
    """
    permission_required = 'scipost.can_manage_subsidies'
    model = Subsidy
    fields = '__all__'
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
    template_name = 'finances/subsidy_form.html'
    success_url = reverse_lazy('finances:subsidies')


class SubsidyDeleteView(PermissionsMixin, DeleteView):
    """
    Delete a Subsidy.
    """
    permission_required = 'scipost.can_manage_subsidies'
    model = Subsidy
    success_url = reverse_lazy('finances:subsidies')


class SubsidyListView(ListView):
    model = Subsidy

Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
############################
# Timesheets and Work Logs #
############################

Jorran de Wit's avatar
Jorran de Wit committed
@permission_required('scipost.can_view_timesheets', raise_exception=True)
def timesheets(request):
    """
    See an overview per month of all timesheets.
    """
Jorran de Wit's avatar
Jorran de Wit committed
    form = LogsMonthlyActiveFilter(request.GET or None)
Jorran de Wit's avatar
Jorran de Wit committed
    context = {
        'form': form,
    }

    # if form.is_valid():
    context['totals'] = form.get_totals()
Jorran de Wit's avatar
Jorran de Wit committed
    return render(request, 'finances/timesheets.html', context)
Jorran de Wit's avatar
Jorran de Wit committed
class LogDeleteView(LoginRequiredMixin, DeleteView):
Jorran de Wit's avatar
Jorran de Wit committed
    model = WorkLog

    def get_object(self):
        try:
            return WorkLog.objects.get(user=self.request.user, id=slug_to_id(self.kwargs['slug']))
        except WorkLog.DoesNotExist:
            raise Http404

    def get_success_url(self):
        messages.success(self.request, 'Log deleted.')
        return self.object.content.get_absolute_url()