Add the HYPERKITTY_DATABASE_NAME environment variable (#1435)

This commit is contained in:
Brian Perrett
2024-11-13 09:32:54 -08:00
committed by GitHub
parent 5d9da9e486
commit 48c7c87a54
11 changed files with 40 additions and 10 deletions

View File

@@ -144,7 +144,7 @@ Then as a superuser log into the admin interface, go to "Versions" and click on
## Syncing EmailData Locally
To work with mailinglist data locally, the django application expects to be
able to query a copy of the hyperkitty database at HYPERKITTY_DATABASE_URL.
able to query a copy of the hyperkitty database from HYPERKITTY_DATABASE_NAME.
Then, the `sync_mailinglist_stats` management command can be run.
## Deploying

View File

@@ -279,7 +279,17 @@ CACHES = {
CLEAR_STATIC_CONTENT_CACHE_DAYS = 7
# Hyperkitty
HYPERKITTY_DATABASE_URL = env("HYPERKITTY_DATABASE_URL", default="")
HYPERKITTY_DATABASE_NAME = env("HYPERKITTY_DATABASE_NAME", default="")
if HYPERKITTY_DATABASE_NAME:
HYPERKITTY_DATABASE_URL = "postgresql://{}:{}@{}:{}/{}".format(
DATABASES["default"]["USER"],
DATABASES["default"]["PASSWORD"],
DATABASES["default"]["HOST"],
DATABASES["default"]["PORT"],
HYPERKITTY_DATABASE_NAME,
)
else:
HYPERKITTY_DATABASE_URL = ""
# Mailman API credentials
MAILMAN_REST_API_URL = env("MAILMAN_REST_API_URL", default="http://localhost:8001")

View File

@@ -27,7 +27,7 @@ STATIC_CONTENT_REGION="us-east-2"
STATIC_CONTENT_AWS_S3_ENDPOINT_URL="https://s3.us-east-2.amazonaws.com"
# Mailman database settings
HYPERKITTY_DATABASE_URL="postgresql://postgres:postgres@db:5432/hyperkitty"
HYPERKITTY_DATABASE_NAME=""
DATABASE_URL="postgresql://postgres@db:5432/postgres"
DATABASE_TYPE="postgres"
DATABASE_CLASS="mailman.database.postgresql.PostgreSQLDatabase"

View File

@@ -199,6 +199,11 @@ Env:
secretKeyRef:
name: githubtoken
key: key
- name: HYPERKITTY_DATABASE_NAME
valueFrom:
secretKeyRef:
name: hyperkitty
key: database_name
# Static content cache timeout
- name: STATIC_CACHE_TIMEOUT
value: "60"

View File

@@ -199,6 +199,11 @@ Env:
secretKeyRef:
name: githubtoken
key: key
- name: HYPERKITTY_DATABASE_NAME
valueFrom:
secretKeyRef:
name: hyperkitty
key: database_name
# Static content cache timeout
- name: STATIC_CACHE_TIMEOUT
value: "60"

View File

@@ -199,6 +199,11 @@ Env:
secretKeyRef:
name: githubtoken
key: key
- name: HYPERKITTY_DATABASE_NAME
valueFrom:
secretKeyRef:
name: hyperkitty
key: database_name
# Static content cache timeout
- name: STATIC_CACHE_TIMEOUT
value: "60"

View File

@@ -179,6 +179,11 @@ Env:
secretKeyRef:
name: githubtoken
key: key
- name: HYPERKITTY_DATABASE_NAME
valueFrom:
secretKeyRef:
name: hyperkitty
key: database_name
# Static content cache timeout
- name: STATIC_CACHE_TIMEOUT
value: "60"

View File

@@ -423,7 +423,7 @@ class CreateReportForm(CreateReportFullForm):
.order_by("-release_date")
.first()
)
if not prior_version or not settings.HYPERKITTY_DATABASE_URL:
if not prior_version or not settings.HYPERKITTY_DATABASE_NAME:
return []
conn = psycopg2.connect(settings.HYPERKITTY_DATABASE_URL)
with conn.cursor(name="fetch-mail-content") as cursor:

View File

@@ -30,13 +30,13 @@ class EmailDataAdmin(admin.ModelAdmin):
return my_urls + urls
def sync_mailinglist_stats(self, request):
if settings.HYPERKITTY_DATABASE_URL:
if settings.HYPERKITTY_DATABASE_NAME:
sync_mailinglist_stats.delay()
self.message_user(request, "Syncing EmailData.")
else:
self.message_user(
request,
"HYPERKITTY_DATABASE_URL setting not configured.",
"HYPERKITTY_DATABASE_NAME setting not configured.",
level=messages.WARNING,
)
return HttpResponseRedirect("../")

View File

@@ -19,8 +19,8 @@ from versions.models import Version
help="Delete all EmailData objects before importing.",
)
def command(clean):
if not settings.HYPERKITTY_DATABASE_URL:
click.echo("HYPERKITTY_DATABASE_URL setting is empty. Not syncing.")
if not settings.HYPERKITTY_DATABASE_NAME:
click.echo("HYPERKITTY_DATABASE_NAME setting is empty. Not syncing.")
return
conn = psycopg2.connect(settings.HYPERKITTY_DATABASE_URL)
with transaction.atomic():

View File

@@ -12,7 +12,7 @@ logger = structlog.getLogger(__name__)
@app.task
def sync_mailinglist_stats():
"""Task to create EmailData from hyperkitty database."""
if not settings.HYPERKITTY_DATABASE_URL:
logger.warning("HYPERKITTY_DATABASE_URL not set.")
if not settings.HYPERKITTY_DATABASE_NAME:
logger.warning("HYPERKITTY_DATABASE_NAME not set.")
return
call_command("sync_mailinglist_stats")