from django.apps import apps from django.core.management.base import BaseCommand from django.db.models import F, Value from django.db.models.functions import Replace class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( '--old', type=str, help='Old Host, most likely https://envipath.org/', required=True, ) parser.add_argument( '--new', type=str, help='New Host, most likely http://localhost:8000/', required=True, ) def handle(self, *args, **options): MODELS = [ 'User', 'Group', 'Package', 'Compound', 'CompoundStructure', 'Pathway', 'Edge', 'Node', 'Reaction', 'SimpleAmbitRule', 'SimpleRDKitRule', 'ParallelRule', 'SequentialRule', 'Scenario', 'Setting', 'MLRelativeReasoning', 'EnviFormer', 'ApplicabilityDomain', ] for model in MODELS: obj_cls = apps.get_model("epdb", model) print(f"Localizing urls for {model}") obj_cls.objects.update( url=Replace(F('url'), Value(options['old']), Value(options['new'])) )