Files
project-managment/apps/projects/views.py
T
sankalp 18acdde6e5 feat(apps): add role‑based CustomUser admin and ticketing system
- New Features
  * Introduce CustomUser with role field and admin integration
  * Add ProjectMembership model linking users to projects
  * Add Ticket model with status, type, creator, and project relationships
  * Register CustomUser and ProjectMembership in Django admin with list views
  * Add URLs and views for account management and ticket CRUD operations
- Enhancements
  * Provide pagination and filtering for ticket listings
  * Improve admin UI with role‑specific fieldsets
- Bug Fixes  * Remove obsolete serializers and placeholder files
2026-05-27 23:33:20 +05:45

52 lines
1.6 KiB
Python

from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView
from apps.core.permissions import AdminRequiredMixin
from apps.projects.models import Project
class ProjectListView(LoginRequiredMixin, ListView):
model = Project
template_name = "pages/projects/project_list.html"
context_object_name = "projects"
paginate_by = 20
def get_queryset(self):
user = self.request.user
if user.is_admin():
return Project.objects.all()
return Project.objects.filter(members=user)
class ProjectDetailView(LoginRequiredMixin, DetailView):
model = Project
template_name = "pages/projects/project_detail.html"
context_object_name = "project"
def get_queryset(self):
user = self.request.user
if user.is_admin():
return Project.objects.all()
return Project.objects.filter(members=user)
class ProjectCreateView(AdminRequiredMixin, CreateView):
model = Project
template_name = "pages/projects/project_form.html"
fields = ["name", "client", "status", "members"]
success_url = reverse_lazy("project_list")
class ProjectUpdateView(AdminRequiredMixin, UpdateView):
model = Project
template_name = "pages/projects/project_form.html"
fields = ["name", "client", "status", "members"]
success_url = reverse_lazy("project_list")
class ProjectDeleteView(AdminRequiredMixin, DeleteView):
model = Project
template_name = "pages/projects/project_confirm_delete.html"
success_url = reverse_lazy("project_list")