AleksandrKosmylev/python-project-52

View on GitHub
task_manager/tasks/views.py

Summary

Maintainability
B
5 hrs
Test Coverage
A
100%
from task_manager.tasks.mixins import TaskAuthorMixin
from task_manager.tasks.models import Task
from task_manager.tasks.forms import TaskForm
from django.urls import reverse_lazy
from django.views.generic import CreateView, UpdateView, DeleteView, DetailView
from django.contrib.messages.views import SuccessMessageMixin
from task_manager.mixins import CustomLoginRequiredMixin
from django.utils.translation import gettext as _
from django_filters.views import FilterView
from task_manager.tasks.filter import TaskFilter


class TaskView(CustomLoginRequiredMixin, FilterView):
    model = Task
    filterset_class = TaskFilter
    template_name = 'tasks/tasks.html'


class TaskInfoView(DetailView):
    model = Task
    template_name = 'tasks/task_card.html'


class TaskCreateView(CustomLoginRequiredMixin,
                     SuccessMessageMixin,
                     CreateView):
    model = Task
    form_class = TaskForm
    template_name = 'form.html'
    extra_context = {
        'title': _('Create Task'),
        'btn_text': _('Create'),
        'btn_class': 'btn-primary'}
    success_url = reverse_lazy('tasks')
    success_message = _("Task successfully created")

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)


class TaskUpdateView(CustomLoginRequiredMixin,
                     SuccessMessageMixin,
                     UpdateView):
    model = Task
    form_class = TaskForm
    template_name = 'form.html'
    extra_context = {
        'title': _('Update Task'),
        'btn_text': _('Update'),
        'btn_class': 'btn-primary'}
    success_url = reverse_lazy('tasks')
    success_message = _("Task successfully updated")


class TaskDeleteView(CustomLoginRequiredMixin,
                     SuccessMessageMixin,
                     TaskAuthorMixin,
                     DeleteView):
    model = Task
    extra_context = {
        'description': _('Are you sure you want to delete'),
        'title': _('Delete Task'),
        'btn_text': _('Yes, delete'),
        'btn_class': 'btn-danger'}
    template_name = 'form.html'
    success_url = reverse_lazy('tasks')
    success_message = _("Task successfully deleted")