forked from enviPath/enviPy
Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#216 Reviewed-by: liambrydon <lbry121@aucklanduni.ac.nz> Reviewed-by: Tobias O <tobias.olenyi@envipath.com>
68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
from django.apps import apps
|
|
from django.conf import settings as s
|
|
from django.core.management.base import BaseCommand
|
|
from django.db.models import F, JSONField, TextField, Value
|
|
from django.db.models.functions import Cast, Replace
|
|
|
|
from epdb.models import EnviPathModel
|
|
|
|
|
|
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):
|
|
Package = s.GET_PACKAGE_MODEL()
|
|
print("Localizing urls for Package")
|
|
Package.objects.update(url=Replace(F("url"), Value(options["old"]), Value(options["new"])))
|
|
|
|
MODELS = [
|
|
"User",
|
|
"Group",
|
|
"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"]))
|
|
)
|
|
if issubclass(obj_cls, EnviPathModel):
|
|
obj_cls.objects.update(
|
|
kv=Cast(
|
|
Replace(
|
|
Cast(F("kv"), output_field=TextField()),
|
|
Value(options["old"]),
|
|
Value(options["new"]),
|
|
),
|
|
output_field=JSONField(),
|
|
)
|
|
)
|