mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-21 06:31:09 -05:00
Update migration files for Django 5.1.4; remove obsolete merge migrations and adjust history tracking context in templates
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
from django.db import models
|
||||
from django.utils.text import slugify
|
||||
from django.contrib.contenttypes.fields import GenericRelation
|
||||
from history_tracking.models import TrackedModel
|
||||
import pghistory
|
||||
from history_tracking.models import TrackedModel, DiffMixin
|
||||
from .events import get_ride_display_changes, get_ride_model_display_changes
|
||||
|
||||
# Shared choices that will be used by multiple models
|
||||
CATEGORY_CHOICES = [
|
||||
@@ -15,7 +15,81 @@ CATEGORY_CHOICES = [
|
||||
('OT', 'Other'),
|
||||
]
|
||||
|
||||
@pghistory.track()
|
||||
class RideEvent(models.Model, DiffMixin):
|
||||
"""Event model for tracking Ride changes - uses existing pghistory table"""
|
||||
|
||||
pgh_id = models.AutoField(primary_key=True)
|
||||
pgh_created_at = models.DateTimeField(auto_now_add=True)
|
||||
pgh_label = models.TextField()
|
||||
|
||||
# Original model fields
|
||||
id = models.BigIntegerField()
|
||||
name = models.CharField(max_length=255)
|
||||
slug = models.SlugField(max_length=255)
|
||||
description = models.TextField(blank=True)
|
||||
category = models.CharField(max_length=2)
|
||||
status = models.CharField(max_length=20)
|
||||
post_closing_status = models.CharField(max_length=20, null=True)
|
||||
opening_date = models.DateField(null=True)
|
||||
closing_date = models.DateField(null=True)
|
||||
status_since = models.DateField(null=True)
|
||||
min_height_in = models.PositiveIntegerField(null=True)
|
||||
max_height_in = models.PositiveIntegerField(null=True)
|
||||
capacity_per_hour = models.PositiveIntegerField(null=True)
|
||||
ride_duration_seconds = models.PositiveIntegerField(null=True)
|
||||
average_rating = models.DecimalField(max_digits=3, decimal_places=2, null=True)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
|
||||
# Foreign keys as IDs
|
||||
park_id = models.BigIntegerField()
|
||||
park_area_id = models.BigIntegerField(null=True)
|
||||
manufacturer_id = models.BigIntegerField(null=True)
|
||||
designer_id = models.BigIntegerField(null=True)
|
||||
ride_model_id = models.BigIntegerField(null=True)
|
||||
|
||||
# Context fields
|
||||
pgh_obj = models.ForeignKey('Ride', on_delete=models.CASCADE)
|
||||
pgh_context = models.JSONField(null=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'rides_rideevent'
|
||||
managed = False
|
||||
|
||||
def get_display_changes(self) -> dict:
|
||||
"""Returns human-readable changes"""
|
||||
return get_ride_display_changes(self.diff_against_previous())
|
||||
|
||||
class RideModelEvent(models.Model, DiffMixin):
|
||||
"""Event model for tracking RideModel changes - uses existing pghistory table"""
|
||||
|
||||
pgh_id = models.AutoField(primary_key=True)
|
||||
pgh_created_at = models.DateTimeField(auto_now_add=True)
|
||||
pgh_label = models.TextField()
|
||||
|
||||
# Original model fields
|
||||
id = models.BigIntegerField()
|
||||
name = models.CharField(max_length=255)
|
||||
description = models.TextField(blank=True)
|
||||
category = models.CharField(max_length=2)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
|
||||
# Foreign keys as IDs
|
||||
manufacturer_id = models.BigIntegerField(null=True)
|
||||
|
||||
# Context fields
|
||||
pgh_obj = models.ForeignKey('RideModel', on_delete=models.CASCADE)
|
||||
pgh_context = models.JSONField(null=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'rides_ridemodelevent'
|
||||
managed = False
|
||||
|
||||
def get_display_changes(self) -> dict:
|
||||
"""Returns human-readable changes"""
|
||||
return get_ride_model_display_changes(self.diff_against_previous())
|
||||
|
||||
class RideModel(TrackedModel):
|
||||
"""
|
||||
Represents a specific model/type of ride that can be manufactured by different companies.
|
||||
@@ -24,10 +98,10 @@ class RideModel(TrackedModel):
|
||||
name = models.CharField(max_length=255)
|
||||
manufacturer = models.ForeignKey(
|
||||
'companies.Manufacturer',
|
||||
on_delete=models.SET_NULL, # Changed to SET_NULL since it's optional
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='ride_models',
|
||||
null=True, # Made optional
|
||||
blank=True # Made optional
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
description = models.TextField(blank=True)
|
||||
category = models.CharField(
|
||||
@@ -36,8 +110,6 @@ class RideModel(TrackedModel):
|
||||
default='',
|
||||
blank=True
|
||||
)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ['manufacturer', 'name']
|
||||
@@ -46,10 +118,12 @@ class RideModel(TrackedModel):
|
||||
def __str__(self) -> str:
|
||||
return self.name if not self.manufacturer else f"{self.manufacturer.name} {self.name}"
|
||||
|
||||
@pghistory.track()
|
||||
class Ride(TrackedModel):
|
||||
"""Model for individual ride installations at parks"""
|
||||
STATUS_CHOICES = [
|
||||
('', 'Select status'),
|
||||
('OPERATING', 'Operating'),
|
||||
('CLOSED_TEMP', 'Temporarily Closed'),
|
||||
('SBNO', 'Standing But Not Operating'),
|
||||
('CLOSING', 'Closing'),
|
||||
('CLOSED_PERM', 'Permanently Closed'),
|
||||
@@ -91,7 +165,7 @@ class Ride(TrackedModel):
|
||||
blank=True
|
||||
)
|
||||
designer = models.ForeignKey(
|
||||
'designers.Designer', # Updated to point to the new Designer model
|
||||
'designers.Designer',
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='rides',
|
||||
null=True,
|
||||
@@ -130,8 +204,6 @@ class Ride(TrackedModel):
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
photos = GenericRelation('media.Photo')
|
||||
reviews = GenericRelation('reviews.Review')
|
||||
|
||||
@@ -148,6 +220,7 @@ class Ride(TrackedModel):
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
class RollerCoasterStats(models.Model):
|
||||
"""Model for tracking roller coaster specific statistics"""
|
||||
TRACK_MATERIAL_CHOICES = [
|
||||
('STEEL', 'Steel'),
|
||||
('WOOD', 'Wood'),
|
||||
|
||||
Reference in New Issue
Block a user