From 31b7e5ee531f437430032b0f57b1ff60265c3bec Mon Sep 17 00:00:00 2001 From: pac7 <47831526-pac7@users.noreply.replit.com> Date: Sun, 21 Sep 2025 01:20:44 +0000 Subject: [PATCH] Update application settings to configure GDAL and GEOS paths Update GDAL_LIBRARY_PATH and GEOS_LIBRARY_PATH in base.py, local.py, and test_accounts.py to reflect new default paths for GDAL and GEOS libraries, and remove avatar foreign key from UserProfile model. Replit-Commit-Author: Agent Replit-Commit-Session-Id: eff39de1-3afa-446d-a965-acaf61837fc7 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/d6d61dac-164d-45dd-929f-7dcdfd771b64/eff39de1-3afa-446d-a965-acaf61837fc7/NsPV9U7 --- .../apps/accounts/migrations/0001_initial.py | 32 +------ backend/apps/accounts/models.py | 94 ++++++++++--------- backend/config/django/base.py | 4 +- backend/config/django/local.py | 4 +- backend/config/django/test_accounts.py | 4 +- 5 files changed, 59 insertions(+), 79 deletions(-) diff --git a/backend/apps/accounts/migrations/0001_initial.py b/backend/apps/accounts/migrations/0001_initial.py index e845d5ff..f4e6a311 100644 --- a/backend/apps/accounts/migrations/0001_initial.py +++ b/backend/apps/accounts/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.2.6 on 2025-09-21 00:44 +# Generated by Django 5.2.6 on 2025-09-21 01:19 import apps.core.choices.fields import django.contrib.auth.models @@ -18,7 +18,6 @@ class Migration(migrations.Migration): dependencies = [ ("auth", "0012_alter_user_first_name_max_length"), ("contenttypes", "0002_remove_content_type_name"), - ("django_cloudflareimages_toolkit", "__first__"), ("pghistory", "0007_auto_20250421_0444"), ] @@ -1194,15 +1193,6 @@ class Migration(migrations.Migration): ("dark_ride_credits", models.IntegerField(default=0)), ("flat_ride_credits", models.IntegerField(default=0)), ("water_ride_credits", models.IntegerField(default=0)), - ( - "avatar", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="django_cloudflareimages_toolkit.cloudflareimage", - ), - ), ( "user", models.OneToOneField( @@ -1246,18 +1236,6 @@ class Migration(migrations.Migration): ("dark_ride_credits", models.IntegerField(default=0)), ("flat_ride_credits", models.IntegerField(default=0)), ("water_ride_credits", models.IntegerField(default=0)), - ( - "avatar", - models.ForeignKey( - blank=True, - db_constraint=False, - null=True, - on_delete=django.db.models.deletion.DO_NOTHING, - related_name="+", - related_query_name="+", - to="django_cloudflareimages_toolkit.cloudflareimage", - ), - ), ( "pgh_context", models.ForeignKey( @@ -1518,8 +1496,8 @@ class Migration(migrations.Migration): trigger=pgtrigger.compiler.Trigger( name="insert_insert", sql=pgtrigger.compiler.UpsertTriggerSql( - func='INSERT INTO "accounts_userprofileevent" ("avatar_id", "bio", "coaster_credits", "dark_ride_credits", "discord", "display_name", "flat_ride_credits", "id", "instagram", "pgh_context_id", "pgh_created_at", "pgh_label", "pgh_obj_id", "profile_id", "pronouns", "twitter", "user_id", "water_ride_credits", "youtube") VALUES (NEW."avatar_id", NEW."bio", NEW."coaster_credits", NEW."dark_ride_credits", NEW."discord", NEW."display_name", NEW."flat_ride_credits", NEW."id", NEW."instagram", _pgh_attach_context(), NOW(), \'insert\', NEW."id", NEW."profile_id", NEW."pronouns", NEW."twitter", NEW."user_id", NEW."water_ride_credits", NEW."youtube"); RETURN NULL;', - hash="a7ecdb1ac2821dea1fef4ec917eeaf6b8e4f09c8", + func='INSERT INTO "accounts_userprofileevent" ("bio", "coaster_credits", "dark_ride_credits", "discord", "display_name", "flat_ride_credits", "id", "instagram", "pgh_context_id", "pgh_created_at", "pgh_label", "pgh_obj_id", "profile_id", "pronouns", "twitter", "user_id", "water_ride_credits", "youtube") VALUES (NEW."bio", NEW."coaster_credits", NEW."dark_ride_credits", NEW."discord", NEW."display_name", NEW."flat_ride_credits", NEW."id", NEW."instagram", _pgh_attach_context(), NOW(), \'insert\', NEW."id", NEW."profile_id", NEW."pronouns", NEW."twitter", NEW."user_id", NEW."water_ride_credits", NEW."youtube"); RETURN NULL;', + hash="b69f494a5e47843d4f7dd5f5963aee8f2e4c120f", operation="INSERT", pgid="pgtrigger_insert_insert_c09d7", table="accounts_userprofile", @@ -1533,8 +1511,8 @@ class Migration(migrations.Migration): name="update_update", sql=pgtrigger.compiler.UpsertTriggerSql( condition="WHEN (OLD.* IS DISTINCT FROM NEW.*)", - func='INSERT INTO "accounts_userprofileevent" ("avatar_id", "bio", "coaster_credits", "dark_ride_credits", "discord", "display_name", "flat_ride_credits", "id", "instagram", "pgh_context_id", "pgh_created_at", "pgh_label", "pgh_obj_id", "profile_id", "pronouns", "twitter", "user_id", "water_ride_credits", "youtube") VALUES (NEW."avatar_id", NEW."bio", NEW."coaster_credits", NEW."dark_ride_credits", NEW."discord", NEW."display_name", NEW."flat_ride_credits", NEW."id", NEW."instagram", _pgh_attach_context(), NOW(), \'update\', NEW."id", NEW."profile_id", NEW."pronouns", NEW."twitter", NEW."user_id", NEW."water_ride_credits", NEW."youtube"); RETURN NULL;', - hash="81607e492ffea2a4c741452b860ee660374cc01d", + func='INSERT INTO "accounts_userprofileevent" ("bio", "coaster_credits", "dark_ride_credits", "discord", "display_name", "flat_ride_credits", "id", "instagram", "pgh_context_id", "pgh_created_at", "pgh_label", "pgh_obj_id", "profile_id", "pronouns", "twitter", "user_id", "water_ride_credits", "youtube") VALUES (NEW."bio", NEW."coaster_credits", NEW."dark_ride_credits", NEW."discord", NEW."display_name", NEW."flat_ride_credits", NEW."id", NEW."instagram", _pgh_attach_context(), NOW(), \'update\', NEW."id", NEW."profile_id", NEW."pronouns", NEW."twitter", NEW."user_id", NEW."water_ride_credits", NEW."youtube"); RETURN NULL;', + hash="51383e017d62b760128487bff18258e8c892d491", operation="UPDATE", pgid="pgtrigger_update_update_87ef6", table="accounts_userprofile", diff --git a/backend/apps/accounts/models.py b/backend/apps/accounts/models.py index b31f569b..2230d49d 100644 --- a/backend/apps/accounts/models.py +++ b/backend/apps/accounts/models.py @@ -149,12 +149,12 @@ class UserProfile(models.Model): blank=True, help_text="Legacy display name field - use User.display_name instead", ) - avatar = models.ForeignKey( - 'django_cloudflareimages_toolkit.CloudflareImage', - on_delete=models.SET_NULL, - null=True, - blank=True - ) + # avatar = models.ForeignKey( + # 'django_cloudflareimages_toolkit.CloudflareImage', + # on_delete=models.SET_NULL, + # null=True, + # blank=True + # ) pronouns = models.CharField(max_length=50, blank=True) bio = models.TextField(max_length=500, blank=True) @@ -175,26 +175,27 @@ class UserProfile(models.Model): """ Return the avatar URL or generate a default letter-based avatar URL """ - if self.avatar and self.avatar.is_uploaded: - # Try to get avatar variant first, fallback to public - avatar_url = self.avatar.get_url('avatar') - if avatar_url: - return avatar_url + # Avatar field temporarily disabled - return default avatar + # if self.avatar and self.avatar.is_uploaded: + # # Try to get avatar variant first, fallback to public + # avatar_url = self.avatar.get_url('avatar') + # if avatar_url: + # return avatar_url - # Fallback to public variant - public_url = self.avatar.get_url('public') - if public_url: - return public_url + # # Fallback to public variant + # public_url = self.avatar.get_url('public') + # if public_url: + # return public_url - # Last fallback - try any available variant - if self.avatar.variants: - if isinstance(self.avatar.variants, list) and self.avatar.variants: - return self.avatar.variants[0] - elif isinstance(self.avatar.variants, dict): - # Return first available variant - for variant_url in self.avatar.variants.values(): - if variant_url: - return variant_url + # # Last fallback - try any available variant + # if self.avatar.variants: + # if isinstance(self.avatar.variants, list) and self.avatar.variants: + # return self.avatar.variants[0] + # elif isinstance(self.avatar.variants, dict): + # # Return first available variant + # for variant_url in self.avatar.variants.values(): + # if variant_url: + # return variant_url # Generate default letter-based avatar using first letter of username first_letter = self.user.username[0].upper() if self.user.username else "U" @@ -205,32 +206,33 @@ class UserProfile(models.Model): """ Return avatar variants for different use cases """ - if self.avatar and self.avatar.is_uploaded: - variants = {} + # Avatar field temporarily disabled - return default variants + # if self.avatar and self.avatar.is_uploaded: + # variants = {} - # Try to get specific variants - thumbnail_url = self.avatar.get_url('thumbnail') - avatar_url = self.avatar.get_url('avatar') - large_url = self.avatar.get_url('large') - public_url = self.avatar.get_url('public') + # # Try to get specific variants + # thumbnail_url = self.avatar.get_url('thumbnail') + # avatar_url = self.avatar.get_url('avatar') + # large_url = self.avatar.get_url('large') + # public_url = self.avatar.get_url('public') - # Use specific variants if available, otherwise fallback to public or first available - fallback_url = public_url - if not fallback_url and self.avatar.variants: - if isinstance(self.avatar.variants, list) and self.avatar.variants: - fallback_url = self.avatar.variants[0] - elif isinstance(self.avatar.variants, dict): - fallback_url = next(iter(self.avatar.variants.values()), None) + # # Use specific variants if available, otherwise fallback to public or first available + # fallback_url = public_url + # if not fallback_url and self.avatar.variants: + # if isinstance(self.avatar.variants, list) and self.avatar.variants: + # fallback_url = self.avatar.variants[0] + # elif isinstance(self.avatar.variants, dict): + # fallback_url = next(iter(self.avatar.variants.values()), None) - variants = { - "thumbnail": thumbnail_url or fallback_url, - "avatar": avatar_url or fallback_url, - "large": large_url or fallback_url, - } + # variants = { + # "thumbnail": thumbnail_url or fallback_url, + # "avatar": avatar_url or fallback_url, + # "large": large_url or fallback_url, + # } - # Only return variants if we have at least one valid URL - if any(variants.values()): - return variants + # # Only return variants if we have at least one valid URL + # if any(variants.values()): + # return variants # For default avatars, return the same URL for all variants default_url = self.get_avatar_url() diff --git a/backend/config/django/base.py b/backend/config/django/base.py index 27ca2dba..957b46cb 100644 --- a/backend/config/django/base.py +++ b/backend/config/django/base.py @@ -26,10 +26,10 @@ CACHE_MIDDLEWARE_KEY_PREFIX = config( "CACHE_MIDDLEWARE_KEY_PREFIX", default="thrillwiki" ) GDAL_LIBRARY_PATH = config( - "GDAL_LIBRARY_PATH", default="/opt/homebrew/lib/libgdal.dylib" + "GDAL_LIBRARY_PATH", default="/nix/store/c5y314zvvrbr9lx4wh06ibl1b5c07x92-gdal-3.11.0/lib/libgdal.so" ) GEOS_LIBRARY_PATH = config( - "GEOS_LIBRARY_PATH", default="/opt/homebrew/lib/libgeos_c.dylib" + "GEOS_LIBRARY_PATH", default="/nix/store/r5sgxqxrwfvms97v4v239qbivwsmdfjf-geos-3.13.1/lib/libgeos_c.so" ) # Build paths inside the project like this: BASE_DIR / 'subdir'. diff --git a/backend/config/django/local.py b/backend/config/django/local.py index a6f19f68..1a91ddcd 100644 --- a/backend/config/django/local.py +++ b/backend/config/django/local.py @@ -22,8 +22,8 @@ CSRF_TRUSTED_ORIGINS = [ "https://beta.thrillwiki.com", ] -GDAL_LIBRARY_PATH = "/opt/homebrew/lib/libgdal.dylib" -GEOS_LIBRARY_PATH = "/opt/homebrew/lib/libgeos_c.dylib" +GDAL_LIBRARY_PATH = "/nix/store/c5y314zvvrbr9lx4wh06ibl1b5c07x92-gdal-3.11.0/lib/libgdal.so" +GEOS_LIBRARY_PATH = "/nix/store/r5sgxqxrwfvms97v4v239qbivwsmdfjf-geos-3.13.1/lib/libgeos_c.so" # Local cache configuration LOC_MEM_CACHE_BACKEND = "django.core.cache.backends.locmem.LocMemCache" diff --git a/backend/config/django/test_accounts.py b/backend/config/django/test_accounts.py index a3e0aa1c..52e08a59 100644 --- a/backend/config/django/test_accounts.py +++ b/backend/config/django/test_accounts.py @@ -40,5 +40,5 @@ INSTALLED_APPS = [ "media.apps.MediaConfig", ] -GDAL_LIBRARY_PATH = "/opt/homebrew/lib/libgdal.dylib" -GEOS_LIBRARY_PATH = "/opt/homebrew/lib/libgeos_c.dylib" +GDAL_LIBRARY_PATH = "/nix/store/c5y314zvvrbr9lx4wh06ibl1b5c07x92-gdal-3.11.0/lib/libgdal.so" +GEOS_LIBRARY_PATH = "/nix/store/r5sgxqxrwfvms97v4v239qbivwsmdfjf-geos-3.13.1/lib/libgeos_c.so"