-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathviews.py
49 lines (40 loc) · 1.56 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""from django.shortcuts import render
from .models import Project
def project_detail(request, project_id):
project = Project.objects.get(id=project_id)
tasks = project.tasks.all()
return render(request, 'project_detail.html', {'project': project, 'tasks': tasks})
"""
from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic import ListView, CreateView, DetailView, UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import Project, Task
class ProjectList(ListView):
model = Project
template_name = 'dms/project_list.html'
class ProjectCreate(CreateView):
model = Project
fields = ['name', 'description', 'assigned_to']
success_url = reverse_lazy('dms:project_list')
template_name = 'dms/project_form.html'
class ProjectDetail(DetailView):
model = Project
template_name = 'dms/project_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
tasks = self.object.tasks.all()
context['tasks'] = tasks
return context
def request_validation(request, pk):
task = get_object_or_404(Task, pk=pk)
task.is_validation_requested = True
task.save()
return redirect('project_detail', pk=task.project.pk)
class ProjectUpdate(UpdateView):
model = Project
fields = ['name', 'description', 'assigned_to']
template_name = 'dms/project_form.html'
class ProjectDelete(DeleteView):
model = Project
template_name = 'dms/project_confirm_delete.html'
success_url = reverse_lazy('dms:project_list')