57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||
|
from django.http import HttpResponseRedirect
|
||
|
from django.views.generic import DetailView, CreateView, UpdateView
|
||
|
|
||
|
from camps.mixins import CampViewMixin
|
||
|
from ..models import TeamTask
|
||
|
from .mixins import EnsureTeamResponsibleMixin
|
||
|
|
||
|
|
||
|
class TaskDetailView(CampViewMixin, DetailView):
|
||
|
template_name = "task_detail.html"
|
||
|
context_object_name = "task"
|
||
|
model = TeamTask
|
||
|
|
||
|
|
||
|
class TaskCreateView(LoginRequiredMixin, CampViewMixin, EnsureTeamResponsibleMixin, CreateView):
|
||
|
model = TeamTask
|
||
|
template_name = "task_form.html"
|
||
|
fields = ['name', 'description']
|
||
|
|
||
|
def get_context_data(self, *args, **kwargs):
|
||
|
context = super().get_context_data(**kwargs)
|
||
|
context['team'] = self.team
|
||
|
return context
|
||
|
|
||
|
def form_valid(self, form):
|
||
|
task = form.save(commit=False)
|
||
|
task.team = self.team
|
||
|
if not task.name:
|
||
|
task.name = "noname"
|
||
|
task.save()
|
||
|
return HttpResponseRedirect(task.get_absolute_url())
|
||
|
|
||
|
def get_success_url(self):
|
||
|
return self.get_object().get_absolute_url()
|
||
|
|
||
|
|
||
|
class TaskUpdateView(LoginRequiredMixin, CampViewMixin, EnsureTeamResponsibleMixin, UpdateView):
|
||
|
model = TeamTask
|
||
|
template_name = "task_form.html"
|
||
|
fields = ['name', 'description']
|
||
|
|
||
|
def get_context_data(self, *args, **kwargs):
|
||
|
context = super().get_context_data(**kwargs)
|
||
|
context['team'] = self.team
|
||
|
return context
|
||
|
|
||
|
def form_valid(self, form):
|
||
|
task = form.save(commit=False)
|
||
|
task.team = self.team
|
||
|
if not task.name:
|
||
|
task.name = "noname"
|
||
|
task.save()
|
||
|
return HttpResponseRedirect(task.get_absolute_url())
|
||
|
|
||
|
def get_success_url(self):
|
||
|
return self.get_object().get_absolute_url()
|