forked from enviPath/enviPy
This PR adds a new Field to all existing Models. As its a data migrations the Migration is added. Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#63
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
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']))
|
|
)
|