Skip to content

Commit 809faa9

Browse files
committed
Re-enable the TBA event download management command
1 parent 3b5ab7c commit 809faa9

File tree

7 files changed

+85
-13
lines changed

7 files changed

+85
-13
lines changed

flake.nix

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,15 @@
5353

5454
pillowHeifOverrides = import ./lib/overrides-pillow-heif.nix { inherit pkgs; };
5555
psycopgOverrides = import ./lib/overrides-psycopg.nix { inherit pkgs; };
56+
tbaApiOverrides = import ./lib/overrides-tba-api-v3client.nix { inherit pkgs; };
5657
in
5758
baseSet.overrideScope (
5859
lib.composeManyExtensions [
5960
pyproject-build-systems.overlays.default
6061
overlay
6162
pillowHeifOverrides
6263
psycopgOverrides
64+
tbaApiOverrides
6365
]
6466
);
6567

@@ -88,7 +90,13 @@
8890
'';
8991
};
9092

91-
manage = writeShellApplication {
93+
manage = import ./lib/manage.nix {
94+
inherit pkgs;
95+
inherit (self.packages.${system}) venv;
96+
inherit (self.packages.${system}) static;
97+
};
98+
99+
manage-old = writeShellApplication {
92100
name = "strykeforce-manage";
93101

94102
text = ''

lib/manage.nix

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
pkgs,
3+
static,
4+
venv,
5+
}:
6+
pkgs.writeShellApplication {
7+
name = "strykeforce-manage";
8+
text = ''
9+
if [ "$UID" -ne 0 ]; then
10+
echo "error: run this command as root."
11+
exit 1
12+
fi
13+
14+
# shellcheck source=/dev/null
15+
source /run/agenix/stryker_website_secrets
16+
17+
sudo -u strykeforce env \
18+
DJANGO_SETTINGS_MODULE=website.settings.production \
19+
DJANGO_DATABASE_URL=postgres:///strykeforce \
20+
SECRET_KEY=not-secret \
21+
STATIC_ROOT=${static} \
22+
TBA_READ_KEY="$TBA_READ_KEY" \
23+
${venv}/bin/strykeforce-manage "$@"
24+
'';
25+
}

lib/overrides-tba-api-v3client.nix

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{ pkgs }:
2+
final: prev: {
3+
tba-api-v3client = prev.tba-api-v3client.overrideAttrs (old: {
4+
nativeBuildInputs =
5+
old.nativeBuildInputs or [ ]
6+
++ (final.resolveBuildSystem {
7+
setuptools = [ ];
8+
});
9+
});
10+
}

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies = [
1212
"psycopg[c,pool]>=3.2.3",
1313
"redis>=5.2.1",
1414
"sentry-sdk>=2.19.2",
15+
"tba-api-v3client>=3.8.0",
1516
"wagtail>=6.3.2",
1617
"whitenoise[brotli]>=6.8.2",
1718
]

uv.lock

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

website/events/management/commands/import_events.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
import tbaapiv3client
44
from django.conf import settings
5-
from django.core.management import BaseCommand
6-
from django.core.management import CommandError
5+
from django.core.exceptions import ObjectDoesNotExist
6+
from django.core.management import BaseCommand, CommandError
77
from django.db import transaction
8-
from django.db.models import Model
98
from tbaapiv3client import ApiException
109

1110
from website.events.models import Event
@@ -62,7 +61,7 @@ def handle(self, *args, **options):
6261
for event in events:
6362
try:
6463
obj = Event.objects.get(key=event.key)
65-
except Model.DoesNotExist:
64+
except ObjectDoesNotExist:
6665
obj = Event()
6766

6867
obj.key = event.key

website/events/models.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
from __future__ import annotations
22

33
from django.db import models
4-
from django.db.models import CharField
5-
from django.db.models import DateField
6-
from django.db.models import FloatField
7-
from django.db.models import IntegerField
8-
from django.db.models import JSONField
9-
from django.db.models import URLField
4+
from django.db.models import (
5+
CharField,
6+
DateField,
7+
FloatField,
8+
IntegerField,
9+
JSONField,
10+
URLField,
11+
)
1012
from django.utils import timezone
1113
from wagtail.admin.panels import FieldPanel
12-
from wagtail.contrib.routable_page.models import path
13-
from wagtail.contrib.routable_page.models import RoutablePageMixin
14+
from wagtail.contrib.routable_page.models import RoutablePageMixin, path
1415
from wagtail.fields import RichTextField
1516
from wagtail.models import Page
17+
from wagtail.snippets.models import register_snippet
1618

1719
MAX_LENGTH = 1000
1820

@@ -70,6 +72,7 @@ def event_for_key(self, request, key):
7072
]
7173

7274

75+
@register_snippet
7376
class Event(models.Model):
7477
key = CharField(unique=True, default="", max_length=MAX_LENGTH)
7578
name = CharField(default="", max_length=MAX_LENGTH)

0 commit comments

Comments
 (0)