Started moving tag/attribute handlers to TypeObjectManager as per #529
This commit is contained in:
parent
e6950aadf2
commit
9dfe620b2b
2 changed files with 52 additions and 4 deletions
|
|
@ -217,6 +217,56 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
||||||
Common ObjectManager for all dbobjects.
|
Common ObjectManager for all dbobjects.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Attribute manager methods
|
||||||
|
|
||||||
|
# Tag manager methods
|
||||||
|
|
||||||
|
def get_tag(self, key=None, category=None, obj=None, tagtype=None):
|
||||||
|
"""
|
||||||
|
Return Tag objects by key, by category, by object or
|
||||||
|
with a combination of those criteria.
|
||||||
|
|
||||||
|
tagtype - one of None (normal tags), "alias" or "permission"
|
||||||
|
"""
|
||||||
|
query = [("tag__db_tagtype", tagtype)]
|
||||||
|
if obj:
|
||||||
|
query.append(("%s__id" % self.model.__name__.lower(), obj.id))
|
||||||
|
if key:
|
||||||
|
query.append(("tag__db_key", key))
|
||||||
|
if category:
|
||||||
|
query.append(("tag__db_category", category))
|
||||||
|
return self.model.db_tags.through.objects.filter(**dict(query))
|
||||||
|
|
||||||
|
def get_permission(self, key=None, category=None, obj=None):
|
||||||
|
return self.get_tag(key=key, category=category, obj=obj, tagtype="permission")
|
||||||
|
|
||||||
|
def get_alias(self, key=None, category=None, obj=None):
|
||||||
|
return self.get_tag(key=key, category=category, obj=obj, tagtype="alias")
|
||||||
|
|
||||||
|
@returns_typeclass
|
||||||
|
def get_by_tag(self, key=None, category=None, tagtype=None):
|
||||||
|
"""
|
||||||
|
Return objects having tags with a given key or category or
|
||||||
|
combination of the two.
|
||||||
|
|
||||||
|
tagtype = None, alias or permission
|
||||||
|
"""
|
||||||
|
query = [("db_tags__db_tagtype", tagtype)]
|
||||||
|
if key:
|
||||||
|
query.append(("db_tags__db_key", key))
|
||||||
|
if category:
|
||||||
|
query.append(("db_tags__db_category", category))
|
||||||
|
return self.filter(**dict(query))
|
||||||
|
|
||||||
|
def get_by_permission(self, key=None, category=None):
|
||||||
|
return self.get_by_tag(key=key, category=category, tagtype="permission")
|
||||||
|
|
||||||
|
def get_by_alias(self, key=None, category=None):
|
||||||
|
return self.get_by_tag(key=key, category=category, tagtype="alias")
|
||||||
|
|
||||||
|
|
||||||
|
# object-manager methods
|
||||||
|
|
||||||
def dbref(self, dbref, reqhash=True):
|
def dbref(self, dbref, reqhash=True):
|
||||||
"""
|
"""
|
||||||
Valid forms of dbref (database reference number)
|
Valid forms of dbref (database reference number)
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ from django.db import models
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import smart_str
|
||||||
from django.contrib.contenttypes.models import ContentType
|
|
||||||
|
|
||||||
from src.utils.idmapper.models import SharedMemoryModel
|
from src.utils.idmapper.models import SharedMemoryModel
|
||||||
from src.server.caches import get_prop_cache, set_prop_cache
|
from src.server.caches import get_prop_cache, set_prop_cache
|
||||||
|
|
@ -58,7 +57,6 @@ TICKER_HANDLER = None
|
||||||
_PERMISSION_HIERARCHY = [p.lower() for p in settings.PERMISSION_HIERARCHY]
|
_PERMISSION_HIERARCHY = [p.lower() for p in settings.PERMISSION_HIERARCHY]
|
||||||
_TYPECLASS_AGGRESSIVE_CACHE = settings.TYPECLASS_AGGRESSIVE_CACHE
|
_TYPECLASS_AGGRESSIVE_CACHE = settings.TYPECLASS_AGGRESSIVE_CACHE
|
||||||
|
|
||||||
_CTYPEGET = ContentType.objects.get
|
|
||||||
_GA = object.__getattribute__
|
_GA = object.__getattribute__
|
||||||
_SA = object.__setattr__
|
_SA = object.__setattr__
|
||||||
_DA = object.__delattr__
|
_DA = object.__delattr__
|
||||||
|
|
@ -234,7 +232,7 @@ class AttributeHandler(object):
|
||||||
"Initialize handler"
|
"Initialize handler"
|
||||||
self.obj = obj
|
self.obj = obj
|
||||||
self._objid = obj.id
|
self._objid = obj.id
|
||||||
self._model = to_str(ContentType.objects.get_for_model(obj).natural_key()[1])
|
self._model = to_str(obj.__class__.__name__.lower())
|
||||||
self._cache = None
|
self._cache = None
|
||||||
|
|
||||||
def _recache(self):
|
def _recache(self):
|
||||||
|
|
@ -624,7 +622,7 @@ class TagHandler(object):
|
||||||
"""
|
"""
|
||||||
self.obj = obj
|
self.obj = obj
|
||||||
self._objid = obj.id
|
self._objid = obj.id
|
||||||
self._model = ContentType.objects.get_for_model(obj).natural_key()[1]
|
self._model = obj.__class__.__name__.lower()
|
||||||
self._cache = None
|
self._cache = None
|
||||||
|
|
||||||
def _recache(self):
|
def _recache(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue