Source code for shuup.core.management.commands.shuup_fix_order_status_identifiers

# This file is part of Shuup.
#
# Copyright (c) 2017, Anders Innovations. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.

from django.core.management.base import BaseCommand
from django.db.transaction import atomic

from shuup.core.models import OrderStatus, OrderStatusRole


[docs]class Command(BaseCommand): @atomic
[docs] def handle(self, *args, **options): data = [ # role, invalid_identifier, valid_identifier (OrderStatusRole.PROCESSING, "canceled", "processing"), (OrderStatusRole.COMPLETE, "processing", "complete"), (OrderStatusRole.CANCELED, "complete", "canceled"), ] to_post_process = [] for (role, invalid_identifier, valid_identifier) in data: status = OrderStatus.objects.filter(identifier=invalid_identifier, role=role).first() if not status: self.stdout.write("No changes to {} statuses".format(role)) continue tmp_identifier = valid_identifier + "_tmp" self.stdout.write( "Updating identifier of {} status: {!r} -> {!r}".format(role, status.identifier, tmp_identifier) ) status.identifier = tmp_identifier status.save() to_post_process.append(status) for status in to_post_process: new_identifier = status.identifier.replace("_tmp", "") self.stdout.write( "Updating identifier of {} status: {!r} -> {!r}".format(status.role, status.identifier, new_identifier) ) status.identifier = new_identifier status.save()