Files
thrilltrack-explorer/django/apps/versioning/migrations/0001_initial.py
pacnpal d6ff4cc3a3 Add email templates for user notifications and account management
- Created a base email template (base.html) for consistent styling across all emails.
- Added moderation approval email template (moderation_approved.html) to notify users of approved submissions.
- Added moderation rejection email template (moderation_rejected.html) to inform users of required changes for their submissions.
- Created password reset email template (password_reset.html) for users requesting to reset their passwords.
- Developed a welcome email template (welcome.html) to greet new users and provide account details and tips for using ThrillWiki.
2025-11-08 15:34:04 -05:00

166 lines
6.0 KiB
Python

# Generated by Django 4.2.8 on 2025-11-08 17:51
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import django_lifecycle.mixins
import model_utils.fields
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
("contenttypes", "0002_remove_content_type_name"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("moderation", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="EntityVersion",
fields=[
(
"created",
model_utils.fields.AutoCreatedField(
default=django.utils.timezone.now,
editable=False,
verbose_name="created",
),
),
(
"modified",
model_utils.fields.AutoLastModifiedField(
default=django.utils.timezone.now,
editable=False,
verbose_name="modified",
),
),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
(
"entity_id",
models.UUIDField(db_index=True, help_text="ID of the entity"),
),
(
"version_number",
models.PositiveIntegerField(
default=1, help_text="Sequential version number for this entity"
),
),
(
"change_type",
models.CharField(
choices=[
("created", "Created"),
("updated", "Updated"),
("deleted", "Deleted"),
("restored", "Restored"),
],
db_index=True,
help_text="Type of change",
max_length=20,
),
),
(
"snapshot",
models.JSONField(
help_text="Complete snapshot of entity state as JSON"
),
),
(
"changed_fields",
models.JSONField(
default=dict,
help_text="Dict of changed fields with old/new values: {'field': {'old': ..., 'new': ...}}",
),
),
(
"comment",
models.TextField(
blank=True, help_text="Optional comment about this version"
),
),
(
"ip_address",
models.GenericIPAddressField(
blank=True, help_text="IP address of change origin", null=True
),
),
(
"user_agent",
models.CharField(
blank=True, help_text="User agent string", max_length=500
),
),
(
"changed_by",
models.ForeignKey(
blank=True,
help_text="User who made the change",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="entity_versions",
to=settings.AUTH_USER_MODEL,
),
),
(
"entity_type",
models.ForeignKey(
help_text="Type of entity (Park, Ride, Company, etc.)",
on_delete=django.db.models.deletion.CASCADE,
related_name="entity_versions",
to="contenttypes.contenttype",
),
),
(
"submission",
models.ForeignKey(
blank=True,
help_text="Submission that caused this version (if applicable)",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="versions",
to="moderation.contentsubmission",
),
),
],
options={
"verbose_name": "Entity Version",
"verbose_name_plural": "Entity Versions",
"ordering": ["-created"],
"indexes": [
models.Index(
fields=["entity_type", "entity_id", "-created"],
name="versioning__entity__8eabd9_idx",
),
models.Index(
fields=["entity_type", "entity_id", "-version_number"],
name="versioning__entity__fe6f1b_idx",
),
models.Index(
fields=["change_type"], name="versioning__change__17de57_idx"
),
models.Index(
fields=["changed_by"], name="versioning__changed_39d5fd_idx"
),
models.Index(
fields=["submission"], name="versioning__submiss_345f6b_idx"
),
],
"unique_together": {("entity_type", "entity_id", "version_number")},
},
bases=(django_lifecycle.mixins.LifecycleModelMixin, models.Model),
),
]