From 6ea13dbc96539cd8276e6b7c5a25ffbb6cf1bdd1 Mon Sep 17 00:00:00 2001 From: Tehom Date: Sun, 7 May 2017 02:12:58 -0400 Subject: [PATCH] Check for instance in cache to have the appropriate foreignkey if we're called from a related manager. Stops us from retrieving any object by ID, whether it was related to us or not. --- evennia/utils/idmapper/manager.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/evennia/utils/idmapper/manager.py b/evennia/utils/idmapper/manager.py index 3b792f66eb..8d32e0bf17 100644 --- a/evennia/utils/idmapper/manager.py +++ b/evennia/utils/idmapper/manager.py @@ -25,6 +25,12 @@ class SharedMemoryManager(Manager): key = key[:-len('__exact')] if key in ('pk', self.model._meta.pk.attname): inst = self.model.get_cached_instance(kwargs[items[0]]) + try: + # we got the item from cache, but if this is a fk, check it's ours + if getattr(inst, str(self.field).split(".")[-1]) != self.instance: + inst = None + except Exception: + pass if inst is None: inst = super(SharedMemoryManager, self).get(*args, **kwargs) return inst