Add consistent script ordering in script search. Resolve #2045

This commit is contained in:
Griatch 2022-11-28 21:07:38 +01:00
parent 65ec944af0
commit 3084da788f
2 changed files with 8 additions and 6 deletions

View file

@ -6,7 +6,6 @@ import re
from django.conf import settings from django.conf import settings
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models import Max, Min, Q from django.db.models import Max, Min, Q
from evennia import InterruptCommand from evennia import InterruptCommand
from evennia.commands.cmdhandler import get_and_merge_cmdsets from evennia.commands.cmdhandler import get_and_merge_cmdsets
from evennia.locks.lockhandler import LockException from evennia.locks.lockhandler import LockException
@ -3366,8 +3365,10 @@ class CmdScripts(COMMAND_DEFAULT_CLASS):
if scripts: if scripts:
return scripts return scripts
# try typeclass path # try typeclass path
scripts = ScriptDB.objects.filter(db_typeclass_path__iendswith=args).exclude( scripts = (
db_typeclass_path__in=self.hide_script_paths ScriptDB.objects.filter(db_typeclass_path__iendswith=args)
.exclude(db_typeclass_path__in=self.hide_script_paths)
.order_by("id")
) )
if scripts: if scripts:
return scripts return scripts
@ -3375,8 +3376,10 @@ class CmdScripts(COMMAND_DEFAULT_CLASS):
# may be a dbref-range # may be a dbref-range
val1, val2 = (dbref(part.strip()) for part in args.split("-", 1)) val1, val2 = (dbref(part.strip()) for part in args.split("-", 1))
if val1 and val2: if val1 and val2:
scripts = ScriptDB.objects.filter(id__in=(range(val1, val2 + 1))).exclude( scripts = (
db_typeclass_path__in=self.hide_script_paths ScriptDB.objects.filter(id__in=(range(val1, val2 + 1)))
.exclude(db_typeclass_path__in=self.hide_script_paths)
.order_by("id")
) )
if scripts: if scripts:
return scripts return scripts

View file

@ -8,7 +8,6 @@ import shlex
from django.db.models import Count, ExpressionWrapper, F, FloatField, Q from django.db.models import Count, ExpressionWrapper, F, FloatField, Q
from django.db.models.functions import Cast from django.db.models.functions import Cast
from evennia.typeclasses.attributes import Attribute from evennia.typeclasses.attributes import Attribute
from evennia.typeclasses.tags import Tag from evennia.typeclasses.tags import Tag
from evennia.utils import idmapper from evennia.utils import idmapper