From 515beef39d0e35d4fb06679744559875f44c4fcb Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 16 Jul 2025 19:28:00 +0300 Subject: [PATCH] Features: 1) Introduce `OrderedDict` for `CONSTANCE_CONFIG` for predictable key order; 2) Add `CONSTANCE_CONFIG_FIELDSETS` for better organization of configuration fields; Fixes: 1) None; Extra: 1) Refactor `CONSTANCE_CONFIG` definition for improved readability and structure; --- evibes/settings/constance.py | 110 ++++++++++++++++++++++++----------- 1 file changed, 76 insertions(+), 34 deletions(-) diff --git a/evibes/settings/constance.py b/evibes/settings/constance.py index 79f1748d..363ffe26 100644 --- a/evibes/settings/constance.py +++ b/evibes/settings/constance.py @@ -1,3 +1,5 @@ +from collections import OrderedDict + from django.utils.translation import gettext_lazy as _ from evibes.settings.base import getenv @@ -14,42 +16,82 @@ CONSTANCE_ADDITIONAL_FIELDS = { ], } -CONSTANCE_CONFIG = { - "PROJECT_NAME": (getenv("EVIBES_PROJECT_NAME"), _("Name of the project")), - "FRONTEND_DOMAIN": (getenv("EVIBES_FRONTEND_DOMAIN"), _("Frontend domain name")), - "BASE_DOMAIN": (getenv("EVIBES_BASE_DOMAIN"), _("Base domain name")), - "COMPANY_NAME": (getenv("COMPANY_NAME"), _("Name of the company")), - "COMPANY_ADDRESS": (getenv("COMPANY_ADDRESS"), _("Address of the company")), - "COMPANY_PHONE_NUMBER": (getenv("COMPANY_PHONE_NUMBER"), _("Phone number of the company")), - "EMAIL_HOST": (getenv("EMAIL_HOST", "smtp.404.org"), _("SMTP host")), - "EMAIL_PORT": (int(getenv("EMAIL_PORT", "465")), _("SMTP port")), - "EMAIL_USE_TLS": (bool(int(getenv("EMAIL_USE_TLS", 0))), _("Use TLS (Specify 0 for No and 1 for Yes)")), - "EMAIL_USE_SSL": (bool(int(getenv("EMAIL_USE_SSL", 1))), _("Use SSL (Specify 0 for No and 1 for Yes)")), - "EMAIL_HOST_USER": (getenv("EMAIL_HOST_USER", "no-user@fix.this"), _("SMTP username")), - "EMAIL_HOST_PASSWORD": (getenv("EMAIL_HOST_PASSWORD", "SUPERsecretPASSWORD"), _("SMTP password")), - "EMAIL_FROM": (getenv("EMAIL_FROM", "eVibes"), _("Mail from option")), - "PAYMENT_GATEWAY_URL": (getenv("PAYMENT_GATEWAY_URL", "http://404.org"), _("Payment gateway URL")), - "PAYMENT_GATEWAY_TOKEN": (getenv("PAYMENT_GATEWAY_TOKEN", "example token"), _("Payment gateway token")), - "PAYMENT_GATEWAY_MINIMUM": (getenv("PAYMENT_GATEWAY_MINIMUM", 5.0), _("Payment gateway minimum amount")), - "PAYMENT_GATEWAY_MAXIMUM": (getenv("PAYMENT_GATEWAY_MAXIMUM", 500.0), _("Payment gateway maximum amount")), - "EXCHANGE_RATE_API_KEY": (getenv("EXCHANGE_RATE_API_KEY", "example token"), _("Exchange rate API key")), - "NOMINATIM_URL": (getenv("NOMINATIM_URL", ""), _("OpenStreetMap Nominatim API URL")), - "OPENAI_API_KEY": (getenv("OPENAI_API_KEY", "example key"), _("OpenAI API Key")), - "ABSTRACT_API_KEY": ( - getenv("ABSTRACT_API_KEY", "example key"), - _("Abstract API Key, if empty - no Abstract features provided"), +CONSTANCE_CONFIG = OrderedDict( + { + "PROJECT_NAME": (getenv("EVIBES_PROJECT_NAME"), _("Name of the project")), + "FRONTEND_DOMAIN": (getenv("EVIBES_FRONTEND_DOMAIN"), _("Frontend domain name")), + "BASE_DOMAIN": (getenv("EVIBES_BASE_DOMAIN"), _("Base domain name")), + "COMPANY_NAME": (getenv("COMPANY_NAME"), _("Name of the company")), + "COMPANY_ADDRESS": (getenv("COMPANY_ADDRESS"), _("Address of the company")), + "COMPANY_PHONE_NUMBER": (getenv("COMPANY_PHONE_NUMBER"), _("Phone number of the company")), + "EMAIL_HOST": (getenv("EMAIL_HOST", "smtp.404.org"), _("SMTP host")), + "EMAIL_PORT": (int(getenv("EMAIL_PORT", "465")), _("SMTP port")), + "EMAIL_USE_TLS": (bool(int(getenv("EMAIL_USE_TLS", 0))), _("Use TLS (Specify 0 for No and 1 for Yes)")), + "EMAIL_USE_SSL": (bool(int(getenv("EMAIL_USE_SSL", 1))), _("Use SSL (Specify 0 for No and 1 for Yes)")), + "EMAIL_HOST_USER": (getenv("EMAIL_HOST_USER", "no-user@fix.this"), _("SMTP username")), + "EMAIL_HOST_PASSWORD": (getenv("EMAIL_HOST_PASSWORD", "SUPERsecretPASSWORD"), _("SMTP password")), + "EMAIL_FROM": (getenv("EMAIL_FROM", "eVibes"), _("Mail from option")), + "PAYMENT_GATEWAY_URL": (getenv("PAYMENT_GATEWAY_URL", "http://404.org"), _("Payment gateway URL")), + "PAYMENT_GATEWAY_TOKEN": (getenv("PAYMENT_GATEWAY_TOKEN", "example token"), _("Payment gateway token")), + "PAYMENT_GATEWAY_MINIMUM": (getenv("PAYMENT_GATEWAY_MINIMUM", 5.0), _("Payment gateway minimum amount")), + "PAYMENT_GATEWAY_MAXIMUM": (getenv("PAYMENT_GATEWAY_MAXIMUM", 500.0), _("Payment gateway maximum amount")), + "EXCHANGE_RATE_API_KEY": (getenv("EXCHANGE_RATE_API_KEY", "example token"), _("Exchange rate API key")), + "NOMINATIM_URL": (getenv("NOMINATIM_URL", ""), _("OpenStreetMap Nominatim API URL")), + "OPENAI_API_KEY": (getenv("OPENAI_API_KEY", "example key"), _("OpenAI API Key")), + "ABSTRACT_API_KEY": ( + getenv("ABSTRACT_API_KEY", "example key"), + _("Abstract API Key, if empty - no Abstract features provided"), + ), + "HTTP_PROXY": (getenv("DJANGO_HTTP_PROXY", "http://username:password@proxy_address:port"), _("HTTP Proxy")), + "DISABLED_COMMERCE": (getenv("DISABLED_COMMERCE", False), _("Disable buy functionality")), + "ADVERTISEMENT_DATA": ( + getenv("EVIBES_ADVERTISEMENT_DATA", ""), + _("An entity for storing advertisiment data"), + "json", + ), + "ANALYTICS_DATA": ( + getenv("EVIBES_ANALYTICS_DATA", ""), + _("An entity for storing analytics data"), + "json", + ), + } +) + +CONSTANCE_CONFIG_FIELDSETS = { + _("General Options"): ( + "PROJECT_NAME", + "FRONTEND_DOMAIN", + "BASE_DOMAIN", + "COMPANY_NAME", + "COMPANY_ADDRESS", + "COMPANY_PHONE_NUMBER", ), - "HTTP_PROXY": (getenv("DJANGO_HTTP_PROXY", "http://username:password@proxy_address:port"), _("HTTP Proxy")), - "DISABLED_COMMERCE": (getenv("DISABLED_COMMERCE", False), _("Disable buy functionality")), - "ADVERTISEMENT_DATA": ( - getenv("EVIBES_ADVERTISEMENT_DATA", ""), - _("An entity for storing advertisiment data"), - "json", + _("Email Options"): ( + "EMAIL_HOST", + "EMAIL_PORT", + "EMAIL_USE_TLS", + "EMAIL_USE_SSL", + "EMAIL_HOST_USER", + "EMAIL_HOST_PASSWORD", + "EMAIL_FROM", ), - "ANALYTICS_DATA": ( - getenv("EVIBES_ANALYTICS_DATA", ""), - _("An entity for storing analytics data"), - "json", + _("Payment Gateway Options"): ( + "PAYMENT_GATEWAY_URL", + "PAYMENT_GATEWAY_TOKEN", + "EXCHANGE_RATE_API_KEY", + "PAYMENT_GATEWAY_MINIMUM", + "PAYMENT_GATEWAY_MAXIMUM", + ), + _("Features Options"): ( + "DISABLED_COMMERCE", + "NOMINATIM_URL", + "OPENAI_API_KEY", + "ABSTRACT_API_KEY", + "HTTP_PROXY", + ), + _("SEO Options"): ( + "ADVERTISEMENT_DATA", + "ANALYTICS_DATA", ), }