Release v1.0.0
Some checks failed
CI / Checks (push) Failing after 13m2s

This commit is contained in:
2025-08-20 21:00:50 +02:00
commit b4338e2769
401 changed files with 23576 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
from __future__ import annotations
from argparse import ArgumentParser
import logging
from django.core.management import BaseCommand
import django.db
from hotpocket_backend.apps.saves.models import Association
from hotpocket_backend.apps.saves.services import AssociationsService
from hotpocket_soa.dto.associations import AssociationUpdateIn
LOGGER = logging.getLogger(__name__)
class Command(BaseCommand):
help = 'Data migration for BTHLABS-38'
def add_arguments(self, parser: ArgumentParser):
parser.add_argument(
'-d', '--dry-run', action='store_true', default=False,
help='Dry run',
)
def handle(self, *args, **options):
dry_run = options.get('dry_run', False)
counters = {
'migrated': 0,
'errors': 0,
}
associations_service = AssociationsService()
with django.db.transaction.atomic():
for association in Association.objects.all():
LOGGER.info('Migrating: `%s`', association)
try:
update = AssociationUpdateIn.model_validate(dict(
target_title=(
association.target_title
if association.target_title is not None
else association.target_meta.get('title', None)
),
target_description=(
association.target_description
if association.target_description is not None
else association.target_meta.get('description', None)
),
))
_ = associations_service.update(
pk=association.pk,
update=update,
)
counters['migrated'] = counters['migrated'] + 1
except Exception as exception:
LOGGER.error(
'Unhandled exception: pk=`%s`: %s',
association.pk,
exception,
exc_info=exception,
)
counters['errors'] = counters['errors'] + 1
LOGGER.info(
'Done. Migrated: `%d`. Errors: `%d`',
counters['migrated'],
counters['errors'],
)
if dry_run is True:
raise RuntimeError('DRY RUN')