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", "RuleBasedRelativeReasoning", "EnviFormer", "ApplicabilityDomain", "EnzymeLink", ] 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"])) )