from datetime import date from django.core.management.base import BaseCommand, CommandError from flower.app_version import set_cached_app_version_payload class Command(BaseCommand): help = "更新 App 最新版本信息缓存" def add_arguments(self, parser): parser.add_argument("--major", type=int, required=True) parser.add_argument("--minor", type=int, required=True) parser.add_argument("--build", type=int, required=True) parser.add_argument("--download-url", required=True) parser.add_argument("--force", action="store_true", default=False) parser.add_argument( "--publish-date", help="发布日期,格式 YYYY-MM-DD;不传则使用当前日期", ) def handle(self, *args, **options): publish_date = options.get("publish_date") if publish_date: try: date.fromisoformat(publish_date) except ValueError as exc: raise CommandError("publish-date 必须是 YYYY-MM-DD 格式") from exc payload = set_cached_app_version_payload( major=options["major"], minor=options["minor"], build=options["build"], download_url=options["download_url"], force=options["force"], publish_date=publish_date, ) self.stdout.write(self.style.SUCCESS(str(payload)))