mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-01-01 22:07:03 -05:00
feat: Implement initial schema and add various API, service, and management command enhancements across the application.
This commit is contained in:
@@ -38,9 +38,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
(
|
||||
"last_login",
|
||||
models.DateTimeField(
|
||||
blank=True, null=True, verbose_name="last login"
|
||||
),
|
||||
models.DateTimeField(blank=True, null=True, verbose_name="last login"),
|
||||
),
|
||||
(
|
||||
"is_superuser",
|
||||
@@ -53,29 +51,21 @@ class Migration(migrations.Migration):
|
||||
(
|
||||
"username",
|
||||
models.CharField(
|
||||
error_messages={
|
||||
"unique": "A user with that username already exists."
|
||||
},
|
||||
error_messages={"unique": "A user with that username already exists."},
|
||||
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
|
||||
max_length=150,
|
||||
unique=True,
|
||||
validators=[
|
||||
django.contrib.auth.validators.UnicodeUsernameValidator()
|
||||
],
|
||||
validators=[django.contrib.auth.validators.UnicodeUsernameValidator()],
|
||||
verbose_name="username",
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=150, verbose_name="first name"
|
||||
),
|
||||
models.CharField(blank=True, max_length=150, verbose_name="first name"),
|
||||
),
|
||||
(
|
||||
"last_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=150, verbose_name="last name"
|
||||
),
|
||||
models.CharField(blank=True, max_length=150, verbose_name="last name"),
|
||||
),
|
||||
(
|
||||
"email",
|
||||
|
||||
@@ -57,9 +57,7 @@ class Migration(migrations.Migration):
|
||||
("password", models.CharField(max_length=128, verbose_name="password")),
|
||||
(
|
||||
"last_login",
|
||||
models.DateTimeField(
|
||||
blank=True, null=True, verbose_name="last login"
|
||||
),
|
||||
models.DateTimeField(blank=True, null=True, verbose_name="last login"),
|
||||
),
|
||||
(
|
||||
"is_superuser",
|
||||
@@ -72,34 +70,24 @@ class Migration(migrations.Migration):
|
||||
(
|
||||
"username",
|
||||
models.CharField(
|
||||
error_messages={
|
||||
"unique": "A user with that username already exists."
|
||||
},
|
||||
error_messages={"unique": "A user with that username already exists."},
|
||||
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
|
||||
max_length=150,
|
||||
validators=[
|
||||
django.contrib.auth.validators.UnicodeUsernameValidator()
|
||||
],
|
||||
validators=[django.contrib.auth.validators.UnicodeUsernameValidator()],
|
||||
verbose_name="username",
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=150, verbose_name="first name"
|
||||
),
|
||||
models.CharField(blank=True, max_length=150, verbose_name="first name"),
|
||||
),
|
||||
(
|
||||
"last_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=150, verbose_name="last name"
|
||||
),
|
||||
models.CharField(blank=True, max_length=150, verbose_name="last name"),
|
||||
),
|
||||
(
|
||||
"email",
|
||||
models.EmailField(
|
||||
blank=True, max_length=254, verbose_name="email address"
|
||||
),
|
||||
models.EmailField(blank=True, max_length=254, verbose_name="email address"),
|
||||
),
|
||||
(
|
||||
"is_staff",
|
||||
@@ -119,9 +107,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
(
|
||||
"date_joined",
|
||||
models.DateTimeField(
|
||||
default=django.utils.timezone.now, verbose_name="date joined"
|
||||
),
|
||||
models.DateTimeField(default=django.utils.timezone.now, verbose_name="date joined"),
|
||||
),
|
||||
(
|
||||
"user_id",
|
||||
|
||||
@@ -41,9 +41,7 @@ class Migration(migrations.Migration):
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
(
|
||||
"expires_at",
|
||||
models.DateTimeField(
|
||||
help_text="When this deletion request expires"
|
||||
),
|
||||
models.DateTimeField(help_text="When this deletion request expires"),
|
||||
),
|
||||
(
|
||||
"email_sent_at",
|
||||
@@ -55,9 +53,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
(
|
||||
"attempts",
|
||||
models.PositiveIntegerField(
|
||||
default=0, help_text="Number of verification attempts made"
|
||||
),
|
||||
models.PositiveIntegerField(default=0, help_text="Number of verification attempts made"),
|
||||
),
|
||||
(
|
||||
"max_attempts",
|
||||
@@ -103,9 +99,7 @@ class Migration(migrations.Migration):
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
(
|
||||
"expires_at",
|
||||
models.DateTimeField(
|
||||
help_text="When this deletion request expires"
|
||||
),
|
||||
models.DateTimeField(help_text="When this deletion request expires"),
|
||||
),
|
||||
(
|
||||
"email_sent_at",
|
||||
@@ -117,9 +111,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
(
|
||||
"attempts",
|
||||
models.PositiveIntegerField(
|
||||
default=0, help_text="Number of verification attempts made"
|
||||
),
|
||||
models.PositiveIntegerField(default=0, help_text="Number of verification attempts made"),
|
||||
),
|
||||
(
|
||||
"max_attempts",
|
||||
@@ -171,21 +163,15 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="userdeletionrequest",
|
||||
index=models.Index(
|
||||
fields=["verification_code"], name="accounts_us_verific_94460d_idx"
|
||||
),
|
||||
index=models.Index(fields=["verification_code"], name="accounts_us_verific_94460d_idx"),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="userdeletionrequest",
|
||||
index=models.Index(
|
||||
fields=["expires_at"], name="accounts_us_expires_1d1dca_idx"
|
||||
),
|
||||
index=models.Index(fields=["expires_at"], name="accounts_us_expires_1d1dca_idx"),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="userdeletionrequest",
|
||||
index=models.Index(
|
||||
fields=["user", "is_used"], name="accounts_us_user_id_1ce18a_idx"
|
||||
),
|
||||
index=models.Index(fields=["user", "is_used"], name="accounts_us_user_id_1ce18a_idx"),
|
||||
),
|
||||
pgtrigger.migrations.AddTrigger(
|
||||
model_name="userdeletionrequest",
|
||||
|
||||
@@ -57,9 +57,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="last_password_change",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, default=django.utils.timezone.now
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
@@ -185,9 +183,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name="userevent",
|
||||
name="last_password_change",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, default=django.utils.timezone.now
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
|
||||
@@ -454,9 +454,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="usernotification",
|
||||
index=models.Index(
|
||||
fields=["user", "is_read"], name="accounts_us_user_id_785929_idx"
|
||||
),
|
||||
index=models.Index(fields=["user", "is_read"], name="accounts_us_user_id_785929_idx"),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="usernotification",
|
||||
@@ -467,15 +465,11 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="usernotification",
|
||||
index=models.Index(
|
||||
fields=["created_at"], name="accounts_us_created_a62f54_idx"
|
||||
),
|
||||
index=models.Index(fields=["created_at"], name="accounts_us_created_a62f54_idx"),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="usernotification",
|
||||
index=models.Index(
|
||||
fields=["expires_at"], name="accounts_us_expires_f267b1_idx"
|
||||
),
|
||||
index=models.Index(fields=["expires_at"], name="accounts_us_expires_f267b1_idx"),
|
||||
),
|
||||
pgtrigger.migrations.AddTrigger(
|
||||
model_name="usernotification",
|
||||
|
||||
@@ -26,25 +26,24 @@ def safe_add_avatar_field(apps, schema_editor):
|
||||
"""
|
||||
# Check if the column already exists
|
||||
with schema_editor.connection.cursor() as cursor:
|
||||
cursor.execute("""
|
||||
cursor.execute(
|
||||
"""
|
||||
SELECT column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name='accounts_userprofile'
|
||||
AND column_name='avatar_id'
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
||||
column_exists = cursor.fetchone() is not None
|
||||
|
||||
if not column_exists:
|
||||
# Column doesn't exist, add it
|
||||
UserProfile = apps.get_model('accounts', 'UserProfile')
|
||||
UserProfile = apps.get_model("accounts", "UserProfile")
|
||||
field = models.ForeignKey(
|
||||
'django_cloudflareimages_toolkit.CloudflareImage',
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True
|
||||
"django_cloudflareimages_toolkit.CloudflareImage", on_delete=models.SET_NULL, null=True, blank=True
|
||||
)
|
||||
field.set_attributes_from_name('avatar')
|
||||
field.set_attributes_from_name("avatar")
|
||||
schema_editor.add_field(UserProfile, field)
|
||||
|
||||
|
||||
@@ -54,24 +53,23 @@ def reverse_safe_add_avatar_field(apps, schema_editor):
|
||||
"""
|
||||
# Check if the column exists and remove it
|
||||
with schema_editor.connection.cursor() as cursor:
|
||||
cursor.execute("""
|
||||
cursor.execute(
|
||||
"""
|
||||
SELECT column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name='accounts_userprofile'
|
||||
AND column_name='avatar_id'
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
||||
column_exists = cursor.fetchone() is not None
|
||||
|
||||
if column_exists:
|
||||
UserProfile = apps.get_model('accounts', 'UserProfile')
|
||||
UserProfile = apps.get_model("accounts", "UserProfile")
|
||||
field = models.ForeignKey(
|
||||
'django_cloudflareimages_toolkit.CloudflareImage',
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True
|
||||
"django_cloudflareimages_toolkit.CloudflareImage", on_delete=models.SET_NULL, null=True, blank=True
|
||||
)
|
||||
field.set_attributes_from_name('avatar')
|
||||
field.set_attributes_from_name("avatar")
|
||||
schema_editor.remove_field(UserProfile, field)
|
||||
|
||||
|
||||
@@ -89,15 +87,13 @@ class Migration(migrations.Migration):
|
||||
# First, remove the old avatar column (CloudflareImageField)
|
||||
migrations.RunSQL(
|
||||
"ALTER TABLE accounts_userprofile DROP COLUMN IF EXISTS avatar;",
|
||||
reverse_sql="-- Cannot reverse this operation"
|
||||
reverse_sql="-- Cannot reverse this operation",
|
||||
),
|
||||
|
||||
# Safely add the new avatar_id column for ForeignKey
|
||||
migrations.RunPython(
|
||||
safe_add_avatar_field,
|
||||
reverse_safe_add_avatar_field,
|
||||
),
|
||||
|
||||
# Run the data migration
|
||||
migrations.RunPython(
|
||||
migrate_avatar_data,
|
||||
|
||||
@@ -6,17 +6,16 @@ from django.db import migrations
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0010_auto_20250830_1657'),
|
||||
('django_cloudflareimages_toolkit', '0001_initial'),
|
||||
("accounts", "0010_auto_20250830_1657"),
|
||||
("django_cloudflareimages_toolkit", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# Remove the old avatar field from the event table
|
||||
migrations.RunSQL(
|
||||
"ALTER TABLE accounts_userprofileevent DROP COLUMN IF EXISTS avatar;",
|
||||
reverse_sql="-- Cannot reverse this operation"
|
||||
reverse_sql="-- Cannot reverse this operation",
|
||||
),
|
||||
|
||||
# Add the new avatar_id field to match the main table (only if it doesn't exist)
|
||||
migrations.RunSQL(
|
||||
"""
|
||||
@@ -32,6 +31,6 @@ class Migration(migrations.Migration):
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="ALTER TABLE accounts_userprofileevent DROP COLUMN IF EXISTS avatar_id;"
|
||||
reverse_sql="ALTER TABLE accounts_userprofileevent DROP COLUMN IF EXISTS avatar_id;",
|
||||
),
|
||||
]
|
||||
|
||||
@@ -13,28 +13,28 @@ from django.db import migrations, models
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0012_alter_toplist_category_and_more'),
|
||||
("accounts", "0012_alter_toplist_category_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# Add db_index to is_banned field
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='is_banned',
|
||||
model_name="user",
|
||||
name="is_banned",
|
||||
field=models.BooleanField(default=False, db_index=True),
|
||||
),
|
||||
# Add composite index for common query patterns
|
||||
migrations.AddIndex(
|
||||
model_name='user',
|
||||
index=models.Index(fields=['is_banned', 'role'], name='accounts_user_banned_role_idx'),
|
||||
model_name="user",
|
||||
index=models.Index(fields=["is_banned", "role"], name="accounts_user_banned_role_idx"),
|
||||
),
|
||||
# Add CheckConstraint for ban consistency
|
||||
migrations.AddConstraint(
|
||||
model_name='user',
|
||||
model_name="user",
|
||||
constraint=models.CheckConstraint(
|
||||
name='user_ban_consistency',
|
||||
name="user_ban_consistency",
|
||||
check=models.Q(is_banned=False) | models.Q(ban_date__isnull=False),
|
||||
violation_error_message='Banned users must have a ban_date set'
|
||||
violation_error_message="Banned users must have a ban_date set",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -18,7 +18,6 @@ class Migration(migrations.Migration):
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
||||
migrations.AlterModelOptions(
|
||||
name="user",
|
||||
options={"verbose_name": "User", "verbose_name_plural": "Users"},
|
||||
@@ -58,9 +57,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name="userprofile",
|
||||
name="location",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="User's location (City, Country)", max_length=100
|
||||
),
|
||||
field=models.CharField(blank=True, help_text="User's location (City, Country)", max_length=100),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="userprofile",
|
||||
@@ -78,9 +75,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name="userprofileevent",
|
||||
name="location",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="User's location (City, Country)", max_length=100
|
||||
),
|
||||
field=models.CharField(blank=True, help_text="User's location (City, Country)", max_length=100),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="userprofileevent",
|
||||
@@ -98,23 +93,17 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="emailverification",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When this verification was created"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When this verification was created"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="emailverification",
|
||||
name="last_sent",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When the verification email was last sent"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When the verification email was last sent"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="emailverification",
|
||||
name="token",
|
||||
field=models.CharField(
|
||||
help_text="Verification token", max_length=64, unique=True
|
||||
),
|
||||
field=models.CharField(help_text="Verification token", max_length=64, unique=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="emailverification",
|
||||
@@ -128,16 +117,12 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="emailverificationevent",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When this verification was created"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When this verification was created"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="emailverificationevent",
|
||||
name="last_sent",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When the verification email was last sent"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When the verification email was last sent"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="emailverificationevent",
|
||||
@@ -181,9 +166,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="passwordreset",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When this reset was requested"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When this reset was requested"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="passwordreset",
|
||||
@@ -198,9 +181,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="passwordreset",
|
||||
name="used",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether this token has been used"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether this token has been used"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="passwordreset",
|
||||
@@ -214,9 +195,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="passwordresetevent",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When this reset was requested"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When this reset was requested"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="passwordresetevent",
|
||||
@@ -231,9 +210,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="passwordresetevent",
|
||||
name="used",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether this token has been used"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether this token has been used"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="passwordresetevent",
|
||||
@@ -267,30 +244,22 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="allow_friend_requests",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to allow friend requests"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to allow friend requests"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="allow_messages",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to allow direct messages"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to allow direct messages"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="allow_profile_comments",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether to allow profile comments"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether to allow profile comments"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="ban_date",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="Date the user was banned", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="Date the user was banned", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
@@ -300,37 +269,27 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="email_notifications",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to send email notifications"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to send email notifications"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="is_banned",
|
||||
field=models.BooleanField(
|
||||
db_index=True, default=False, help_text="Whether this user is banned"
|
||||
),
|
||||
field=models.BooleanField(db_index=True, default=False, help_text="Whether this user is banned"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="last_password_change",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When the password was last changed"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When the password was last changed"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="login_history_retention",
|
||||
field=models.IntegerField(
|
||||
default=90, help_text="How long to retain login history (days)"
|
||||
),
|
||||
field=models.IntegerField(default=90, help_text="How long to retain login history (days)"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="login_notifications",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to send login notifications"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to send login notifications"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
@@ -352,9 +311,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="push_notifications",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether to send push notifications"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether to send push notifications"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
@@ -378,9 +335,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="search_visibility",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether profile appears in search results"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether profile appears in search results"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
@@ -390,51 +345,37 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_email",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether to show email on profile"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether to show email on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_join_date",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show join date on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show join date on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_photos",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show photos on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show photos on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_real_name",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show real name on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show real name on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_reviews",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show reviews on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show reviews on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_statistics",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show statistics on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show statistics on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="show_top_lists",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show top lists on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show top lists on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
@@ -452,9 +393,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="two_factor_enabled",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether two-factor authentication is enabled"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether two-factor authentication is enabled"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
@@ -476,30 +415,22 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="allow_friend_requests",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to allow friend requests"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to allow friend requests"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="allow_messages",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to allow direct messages"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to allow direct messages"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="allow_profile_comments",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether to allow profile comments"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether to allow profile comments"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="ban_date",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="Date the user was banned", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="Date the user was banned", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
@@ -509,37 +440,27 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="email_notifications",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to send email notifications"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to send email notifications"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="is_banned",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether this user is banned"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether this user is banned"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="last_password_change",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, help_text="When the password was last changed"
|
||||
),
|
||||
field=models.DateTimeField(auto_now_add=True, help_text="When the password was last changed"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="login_history_retention",
|
||||
field=models.IntegerField(
|
||||
default=90, help_text="How long to retain login history (days)"
|
||||
),
|
||||
field=models.IntegerField(default=90, help_text="How long to retain login history (days)"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="login_notifications",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to send login notifications"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to send login notifications"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
@@ -561,9 +482,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="push_notifications",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether to send push notifications"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether to send push notifications"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
@@ -586,9 +505,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="search_visibility",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether profile appears in search results"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether profile appears in search results"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
@@ -598,51 +515,37 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_email",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether to show email on profile"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether to show email on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_join_date",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show join date on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show join date on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_photos",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show photos on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show photos on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_real_name",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show real name on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show real name on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_reviews",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show reviews on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show reviews on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_statistics",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show statistics on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show statistics on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="show_top_lists",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Whether to show top lists on profile"
|
||||
),
|
||||
field=models.BooleanField(default=True, help_text="Whether to show top lists on profile"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
@@ -660,9 +563,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userevent",
|
||||
name="two_factor_enabled",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether two-factor authentication is enabled"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether two-factor authentication is enabled"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
@@ -678,23 +579,17 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="email_sent",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether email was sent"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether email was sent"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="email_sent_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="When email was sent", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="When email was sent", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="is_read",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether this notification has been read"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether this notification has been read"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
@@ -704,30 +599,22 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="object_id",
|
||||
field=models.PositiveIntegerField(
|
||||
blank=True, help_text="ID of related object", null=True
|
||||
),
|
||||
field=models.PositiveIntegerField(blank=True, help_text="ID of related object", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="push_sent",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether push notification was sent"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether push notification was sent"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="push_sent_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="When push notification was sent", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="When push notification was sent", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
name="read_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="When this notification was read", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="When this notification was read", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotification",
|
||||
@@ -761,23 +648,17 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="email_sent",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether email was sent"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether email was sent"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="email_sent_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="When email was sent", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="When email was sent", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="is_read",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether this notification has been read"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether this notification has been read"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
@@ -787,30 +668,22 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="object_id",
|
||||
field=models.PositiveIntegerField(
|
||||
blank=True, help_text="ID of related object", null=True
|
||||
),
|
||||
field=models.PositiveIntegerField(blank=True, help_text="ID of related object", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="push_sent",
|
||||
field=models.BooleanField(
|
||||
default=False, help_text="Whether push notification was sent"
|
||||
),
|
||||
field=models.BooleanField(default=False, help_text="Whether push notification was sent"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="push_sent_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="When push notification was sent", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="When push notification was sent", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
name="read_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, help_text="When this notification was read", null=True
|
||||
),
|
||||
field=models.DateTimeField(blank=True, help_text="When this notification was read", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="usernotificationevent",
|
||||
@@ -844,37 +717,27 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="bio",
|
||||
field=models.TextField(
|
||||
blank=True, help_text="User biography", max_length=500
|
||||
),
|
||||
field=models.TextField(blank=True, help_text="User biography", max_length=500),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="coaster_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of roller coasters ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of roller coasters ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="dark_ride_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of dark rides ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of dark rides ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="discord",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="Discord username", max_length=100
|
||||
),
|
||||
field=models.CharField(blank=True, help_text="Discord username", max_length=100),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="flat_ride_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of flat rides ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of flat rides ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
@@ -884,9 +747,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="pronouns",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="User's preferred pronouns", max_length=50
|
||||
),
|
||||
field=models.CharField(blank=True, help_text="User's preferred pronouns", max_length=50),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
@@ -906,9 +767,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="water_ride_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of water rides ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of water rides ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
@@ -932,37 +791,27 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="bio",
|
||||
field=models.TextField(
|
||||
blank=True, help_text="User biography", max_length=500
|
||||
),
|
||||
field=models.TextField(blank=True, help_text="User biography", max_length=500),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="coaster_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of roller coasters ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of roller coasters ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="dark_ride_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of dark rides ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of dark rides ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="discord",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="Discord username", max_length=100
|
||||
),
|
||||
field=models.CharField(blank=True, help_text="Discord username", max_length=100),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="flat_ride_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of flat rides ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of flat rides ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
@@ -972,9 +821,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="pronouns",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="User's preferred pronouns", max_length=50
|
||||
),
|
||||
field=models.CharField(blank=True, help_text="User's preferred pronouns", max_length=50),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
@@ -996,9 +843,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
name="water_ride_credits",
|
||||
field=models.IntegerField(
|
||||
default=0, help_text="Number of water rides ridden"
|
||||
),
|
||||
field=models.IntegerField(default=0, help_text="Number of water rides ridden"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofileevent",
|
||||
|
||||
Reference in New Issue
Block a user