Files
thrillwiki_django_no_react/property_owners/views.py
pacnpal 751cd86a31 Add operators and property owners functionality
- Implemented OperatorListView and OperatorDetailView for managing operators.
- Created corresponding templates for operator listing and detail views.
- Added PropertyOwnerListView and PropertyOwnerDetailView for managing property owners.
- Developed templates for property owner listing and detail views.
- Established relationships between parks and operators, and parks and property owners in the models.
- Created migrations to reflect the new relationships and fields in the database.
- Added admin interfaces for PropertyOwner management.
- Implemented tests for operators and property owners.
2025-07-04 14:49:36 -04:00

44 lines
1.6 KiB
Python

from django.views.generic import ListView, DetailView
from django.db.models import QuerySet
from django.core.exceptions import ObjectDoesNotExist
from core.views import SlugRedirectMixin
from .models import PropertyOwner
from typing import Optional, Any, Dict
class PropertyOwnerListView(ListView):
model = PropertyOwner
template_name = "property_owners/property_owner_list.html"
context_object_name = "property_owners"
paginate_by = 20
def get_queryset(self) -> QuerySet[PropertyOwner]:
return PropertyOwner.objects.all().order_by('name')
class PropertyOwnerDetailView(SlugRedirectMixin, DetailView):
model = PropertyOwner
template_name = "property_owners/property_owner_detail.html"
context_object_name = "property_owner"
def get_object(self, queryset: Optional[QuerySet[PropertyOwner]] = None) -> PropertyOwner:
if queryset is None:
queryset = self.get_queryset()
slug = self.kwargs.get(self.slug_url_kwarg)
if slug is None:
raise ObjectDoesNotExist("No slug provided")
property_owner, _ = PropertyOwner.get_by_slug(slug)
return property_owner
def get_queryset(self) -> QuerySet[PropertyOwner]:
return PropertyOwner.objects.all()
def get_context_data(self, **kwargs) -> Dict[str, Any]:
context = super().get_context_data(**kwargs)
property_owner = self.get_object()
# Add related parks to context (using related_name="owned_parks" from Park model)
context['owned_parks'] = property_owner.owned_parks.all().order_by('name')
return context