mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-23 23:11:09 -05:00
- Introduced a comprehensive Secret Management Guide detailing best practices, secret classification, development setup, production management, rotation procedures, and emergency protocols. - Implemented a client-side performance monitoring script to track various metrics including page load performance, paint metrics, layout shifts, and memory usage. - Enhanced search accessibility with keyboard navigation support for search results, ensuring compliance with WCAG standards and improving user experience.
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from django.db import models
|
|
from django.utils.text import slugify
|
|
import pghistory
|
|
|
|
from apps.core.history import TrackedModel
|
|
from .parks import Park
|
|
|
|
|
|
@pghistory.track()
|
|
class ParkArea(TrackedModel):
|
|
# Import managers
|
|
from ..managers import ParkAreaManager
|
|
|
|
objects = ParkAreaManager()
|
|
id: int # Type hint for Django's automatic id field
|
|
park = models.ForeignKey(
|
|
Park,
|
|
on_delete=models.CASCADE,
|
|
related_name="areas",
|
|
help_text="Park this area belongs to",
|
|
)
|
|
name = models.CharField(max_length=255, help_text="Name of the park area")
|
|
slug = models.SlugField(
|
|
max_length=255, help_text="URL-friendly identifier (unique within park)"
|
|
)
|
|
description = models.TextField(blank=True, help_text="Detailed description of the area")
|
|
opening_date = models.DateField(
|
|
null=True, blank=True, help_text="Date this area opened"
|
|
)
|
|
closing_date = models.DateField(
|
|
null=True, blank=True, help_text="Date this area closed (if applicable)"
|
|
)
|
|
|
|
def save(self, *args, **kwargs):
|
|
if not self.slug:
|
|
self.slug = slugify(self.name)
|
|
super().save(*args, **kwargs)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta(TrackedModel.Meta):
|
|
verbose_name = "Park Area"
|
|
verbose_name_plural = "Park Areas"
|
|
ordering = ["park", "name"]
|
|
unique_together = ("park", "slug")
|