From 32cbbd063aec175fc3466015f1616e67f5933a11 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 26 Nov 2023 17:18:36 +0100 Subject: [PATCH] Make XYZGrid zcoords db query case insensitive. Resolve #3331 --- CHANGELOG.md | 2 ++ evennia/contrib/grid/xyzgrid/README.md | 2 ++ evennia/contrib/grid/xyzgrid/xyzroom.py | 15 +++++++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ad10aad4b..66181cf4c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ instantiated script. (Volund) - [Fix][pull3338]: Resolve if/elif bug in XYZGrid contrib launch command (jaborsh) +- [fix][issue3331]: Made XYZGrid query zcoords in a case-insensitive manner. - [Fix][pull3322]: Fix `BaseOption.display` to always return a string. - Docs: Lots of Typo fixes (iLPdev, InspectorCaracal, jaborsh) - Beginner tutorial: Cleanup and starting earlier with explaining how to add to @@ -65,6 +66,7 @@ [issue3272]: https://github.com/evennia/evennia/issues/3272 [issue3273]: https://github.com/evennia/evennia/issues/3273 [issue3308]: https://github.com/evennia/evennia/issues/3307 +[issue3331]: https://github.com/evennia/evennia/issues/3331 ## Evennia 2.3.0 diff --git a/evennia/contrib/grid/xyzgrid/README.md b/evennia/contrib/grid/xyzgrid/README.md index c623921c66..513241897c 100644 --- a/evennia/contrib/grid/xyzgrid/README.md +++ b/evennia/contrib/grid/xyzgrid/README.md @@ -319,6 +319,8 @@ Most users will want to just treat each map as a location, and name the "Z-coordinate" things like `Dungeon of Doom`, `The ice queen's palace` or `City of Blackhaven`. But you could also name it -1, 0, 1, 2, 3 if you wanted. +> Note that the Zcoord is searched *non-case senstively* in the + Pathfinding happens only within each XYMap (up/down is normally 'faked' by moving sideways to a new area of the XY plane). diff --git a/evennia/contrib/grid/xyzgrid/xyzroom.py b/evennia/contrib/grid/xyzgrid/xyzroom.py index 5f9ab61e40..324de048e5 100644 --- a/evennia/contrib/grid/xyzgrid/xyzroom.py +++ b/evennia/contrib/grid/xyzgrid/xyzroom.py @@ -9,7 +9,6 @@ used as stand-alone XYZ-coordinate-aware rooms. from django.conf import settings from django.db.models import Q - from evennia.objects.manager import ObjectManager from evennia.objects.objects import DefaultExit, DefaultRoom @@ -71,7 +70,7 @@ class XYZManager(ObjectManager): .filter( Q() if z == wildcard - else Q(db_tags__db_key=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY) + else Q(db_tags__db_key__iexact=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY) ) ) @@ -165,7 +164,7 @@ class XYZExitManager(XYZManager): .filter( Q() if z == wildcard - else Q(db_tags__db_key=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY) + else Q(db_tags__db_key__iexact=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY) ) .filter( Q() @@ -180,7 +179,9 @@ class XYZExitManager(XYZManager): .filter( Q() if zdest == wildcard - else Q(db_tags__db_key=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY) + else Q( + db_tags__db_key__iexact=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY + ) ) ) @@ -220,12 +221,14 @@ class XYZExitManager(XYZManager): try: return ( - self.filter(db_tags__db_key=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY) + self.filter(db_tags__db_key__iexact=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY) .filter(db_tags__db_key=str(x), db_tags__db_category=MAP_X_TAG_CATEGORY) .filter(db_tags__db_key=str(y), db_tags__db_category=MAP_Y_TAG_CATEGORY) .filter(db_tags__db_key=str(xdest), db_tags__db_category=MAP_XDEST_TAG_CATEGORY) .filter(db_tags__db_key=str(ydest), db_tags__db_category=MAP_YDEST_TAG_CATEGORY) - .filter(db_tags__db_key=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY) + .filter( + db_tags__db_key__iexact=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY + ) .get(**kwargs) ) except self.model.DoesNotExist: