From bc3d8158ec57faea491f85b70ccbf90c4ee06732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gremaud?= Date: Fri, 23 Oct 2026 18:53:28 +0200 Subject: [PATCH] fetch steam collection from event path --- .../management/commands/fetch_steam_collection.py | 14 +++++++++++++- polylan_submitter/opus_magnum/utils.py | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/polylan_submitter/opus_magnum/management/commands/fetch_steam_collection.py b/polylan_submitter/opus_magnum/management/commands/fetch_steam_collection.py index 21fa976..2d04f38 100644 --- a/polylan_submitter/opus_magnum/management/commands/fetch_steam_collection.py +++ b/polylan_submitter/opus_magnum/management/commands/fetch_steam_collection.py @@ -4,6 +4,7 @@ Django management command to fetch Steam Workshop collections from django.core.management.base import BaseCommand, CommandError from opus_magnum.utils import create_or_update_collection +from events.models import Event from opus_magnum.models import SteamAPIKey, SteamCollection @@ -12,6 +13,12 @@ class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument("url", type=str, help="Steam Workshop collection URL") + parser.add_argument( + "--event", + type=str, + required=True, + help="Path of the event the collection belongs to", + ) parser.add_argument( "--force", action="store_true", @@ -22,6 +29,11 @@ class Command(BaseCommand): url = options["url"] force = options["force"] + try: + event = Event.objects.get(path=options["event"]) + except Event.DoesNotExist: + raise CommandError(f"No event with path '{options['event']}'") + self.stdout.write(f"Fetching Steam collection from: {url}") api_key = SteamAPIKey.objects.filter(is_active=True).first() @@ -53,7 +65,7 @@ class Command(BaseCommand): return # Fetch and create/update collection - collection, created = create_or_update_collection(url) + collection, created = create_or_update_collection(url, event) if created: self.stdout.write( diff --git a/polylan_submitter/opus_magnum/utils.py b/polylan_submitter/opus_magnum/utils.py index afa17a7..fd023d0 100644 --- a/polylan_submitter/opus_magnum/utils.py +++ b/polylan_submitter/opus_magnum/utils.py @@ -4,6 +4,7 @@ Utilities for fetching Steam Workshop collection data using Steam Web API import re import requests +from events.models import Event from opus_magnum.models import SteamCollection, SteamCollectionItem, SubmissionFile from datetime import datetime from django.utils import timezone @@ -373,12 +374,15 @@ def fetch_steam_collection(url: str) -> Dict: return fetcher.fetch_collection_data(url) -def create_or_update_collection(url: str) -> Tuple[SteamCollection, bool]: +def create_or_update_collection( + url: str, event: Event +) -> Tuple[SteamCollection, bool]: """ Create or update a Steam collection in the database Args: url: Steam Workshop collection URL + event: Event the collection belongs to Returns: Tuple of (SteamCollection instance, created_flag) @@ -395,6 +399,7 @@ def create_or_update_collection(url: str) -> Tuple[SteamCollection, bool]: collection, created = SteamCollection.objects.update_or_create( steam_id=data["steam_id"], defaults={ + "event": event, "url": data["url"], "title": data["title"], "description": data["description"],