Fixes #19529: Properly find scripts managed by ScriptFileSystemStorage

ScriptFileSystemStorage was introduced in #18896 and stores a full path
in Script.file_path. This fix handles looking for scripts by relative
path as well as full path.
This commit is contained in:
Jason Novinger 2025-05-23 09:46:17 -05:00
parent b3d318cbe1
commit bb73faba62

View File

@ -9,6 +9,7 @@ from django import forms
from django.conf import settings from django.conf import settings
from django.core.files.storage import storages from django.core.files.storage import storages
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.db.models import Q
from django.utils import timezone from django.utils import timezone
from django.utils.functional import classproperty from django.utils.functional import classproperty
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
@ -646,6 +647,10 @@ def is_variable(obj):
def get_module_and_script(module_name, script_name): def get_module_and_script(module_name, script_name):
module = ScriptModule.objects.get(file_path=f'{module_name}.py') path = f'{module_name}.py'
module = ScriptModule.objects.get(
Q(file_path=path) |
Q(file_path=os.path.join(settings.SCRIPTS_ROOT, path))
)
script = module.scripts.get(name=script_name) script = module.scripts.get(name=script_name)
return module, script return module, script