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.
This commit is contained in:
pacnpal
2025-07-04 14:49:36 -04:00
parent 75bfd2cff2
commit 788cf7286b
80 changed files with 2943 additions and 2358 deletions

View File

@@ -3,7 +3,7 @@ from django.forms import ModelChoiceField
from django.urls import reverse_lazy
from .models import Ride, RideModel
from parks.models import Park, ParkArea
from companies.models import Manufacturer
from manufacturers.models import Manufacturer
from designers.models import Designer

View File

@@ -0,0 +1,45 @@
# Generated by Django 5.1.4 on 2025-07-04 15:26
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("manufacturers", "0001_initial"),
("rides", "0006_alter_rideevent_options_alter_ridemodelevent_options_and_more"),
]
operations = [
migrations.AlterField(
model_name="ride",
name="manufacturer",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="rides",
to="manufacturers.manufacturer",
),
),
migrations.AlterField(
model_name="ridemodel",
name="manufacturer",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="ride_models",
to="manufacturers.manufacturer",
),
),
migrations.AlterModelTable(
name="rideevent",
table="rides_rideevent",
),
migrations.AlterModelTable(
name="ridemodelevent",
table="rides_ridemodelevent",
),
]

View File

@@ -2,6 +2,7 @@ from django.db import models
from django.utils.text import slugify
from django.contrib.contenttypes.fields import GenericRelation
from history_tracking.models import TrackedModel, DiffMixin
from manufacturers.models import Manufacturer
from .events import get_ride_display_changes, get_ride_model_display_changes
# Shared choices that will be used by multiple models
@@ -109,7 +110,7 @@ class RideModel(TrackedModel):
"""
name = models.CharField(max_length=255)
manufacturer = models.ForeignKey(
'companies.Manufacturer',
Manufacturer,
on_delete=models.SET_NULL,
related_name='ride_models',
null=True,
@@ -171,10 +172,11 @@ class Ride(TrackedModel):
blank=True
)
manufacturer = models.ForeignKey(
'companies.Manufacturer',
on_delete=models.CASCADE,
null=True,
blank=True
Manufacturer,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='rides'
)
designer = models.ForeignKey(
'designers.Designer',

View File

@@ -17,7 +17,7 @@ from parks.models import Park
from core.views import SlugRedirectMixin
from moderation.mixins import EditSubmissionMixin, PhotoSubmissionMixin, HistoryMixin
from moderation.models import EditSubmission
from companies.models import Manufacturer
from manufacturers.models import Manufacturer
from designers.models import Designer