Run black on sources; add black config
This commit is contained in:
parent
b5d148b00a
commit
b24d4f0e1e
41 changed files with 400 additions and 344 deletions
|
|
@ -31,14 +31,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
|
||||
# Attribute manager methods
|
||||
def get_attribute(
|
||||
self,
|
||||
key=None,
|
||||
category=None,
|
||||
value=None,
|
||||
strvalue=None,
|
||||
obj=None,
|
||||
attrtype=None,
|
||||
**kwargs
|
||||
self, key=None, category=None, value=None, strvalue=None, obj=None, attrtype=None, **kwargs
|
||||
):
|
||||
"""
|
||||
Return Attribute objects by key, by category, by value, by
|
||||
|
|
@ -82,9 +75,9 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
# no reason to make strvalue/value mutually exclusive at this level
|
||||
query.append(("attribute__db_value", value))
|
||||
return Attribute.objects.filter(
|
||||
pk__in=self.model.db_attributes.through.objects.filter(
|
||||
**dict(query)
|
||||
).values_list("attribute_id", flat=True)
|
||||
pk__in=self.model.db_attributes.through.objects.filter(**dict(query)).values_list(
|
||||
"attribute_id", flat=True
|
||||
)
|
||||
)
|
||||
|
||||
def get_nick(self, key=None, category=None, value=None, strvalue=None, obj=None):
|
||||
|
|
@ -111,13 +104,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
)
|
||||
|
||||
def get_by_attribute(
|
||||
self,
|
||||
key=None,
|
||||
category=None,
|
||||
value=None,
|
||||
strvalue=None,
|
||||
attrtype=None,
|
||||
**kwargs
|
||||
self, key=None, category=None, value=None, strvalue=None, attrtype=None, **kwargs
|
||||
):
|
||||
"""
|
||||
Return objects having attributes with the given key, category,
|
||||
|
|
@ -174,15 +161,11 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
obj (list): Objects having the matching Nicks.
|
||||
|
||||
"""
|
||||
return self.get_by_attribute(
|
||||
key=key, category=category, strvalue=nick, attrtype="nick"
|
||||
)
|
||||
return self.get_by_attribute(key=key, category=category, strvalue=nick, attrtype="nick")
|
||||
|
||||
# Tag manager methods
|
||||
|
||||
def get_tag(
|
||||
self, key=None, category=None, obj=None, tagtype=None, global_search=False
|
||||
):
|
||||
def get_tag(self, key=None, category=None, obj=None, tagtype=None, global_search=False):
|
||||
"""
|
||||
Return Tag objects by key, by category, by object (it is
|
||||
stored on) or with a combination of those criteria.
|
||||
|
|
@ -226,9 +209,9 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
if category:
|
||||
query.append(("tag__db_category", category))
|
||||
return Tag.objects.filter(
|
||||
pk__in=self.model.db_tags.through.objects.filter(
|
||||
**dict(query)
|
||||
).values_list("tag_id", flat=True)
|
||||
pk__in=self.model.db_tags.through.objects.filter(**dict(query)).values_list(
|
||||
"tag_id", flat=True
|
||||
)
|
||||
)
|
||||
|
||||
def get_permission(self, key=None, category=None, obj=None):
|
||||
|
|
@ -310,9 +293,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
|
||||
dbmodel = self.model.__dbclass__.__name__.lower()
|
||||
query = (
|
||||
self.filter(
|
||||
db_tags__db_tagtype__iexact=tagtype, db_tags__db_model__iexact=dbmodel
|
||||
)
|
||||
self.filter(db_tags__db_tagtype__iexact=tagtype, db_tags__db_model__iexact=dbmodel)
|
||||
.distinct()
|
||||
.order_by("id")
|
||||
)
|
||||
|
|
@ -332,9 +313,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
clauses = Q()
|
||||
for ikey, key in enumerate(keys):
|
||||
# ANY mode; must match any one of the given tags/categories
|
||||
clauses |= Q(
|
||||
db_key__iexact=key, db_category__iexact=categories[ikey]
|
||||
)
|
||||
clauses |= Q(db_key__iexact=key, db_category__iexact=categories[ikey])
|
||||
else:
|
||||
# only one or more categories given
|
||||
clauses = Q()
|
||||
|
|
@ -344,8 +323,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
|
||||
tags = _Tag.objects.filter(clauses)
|
||||
query = query.filter(db_tags__in=tags).annotate(
|
||||
matches=Count("db_tags__pk", filter=Q(db_tags__in=tags),
|
||||
distinct=True)
|
||||
matches=Count("db_tags__pk", filter=Q(db_tags__in=tags), distinct=True)
|
||||
)
|
||||
|
||||
if anymatch:
|
||||
|
|
@ -412,9 +390,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
# try to get old tag
|
||||
|
||||
dbmodel = self.model.__dbclass__.__name__.lower()
|
||||
tag = self.get_tag(
|
||||
key=key, category=category, tagtype=tagtype, global_search=True
|
||||
)
|
||||
tag = self.get_tag(key=key, category=category, tagtype=tagtype, global_search=True)
|
||||
if tag and data is not None:
|
||||
# get tag from list returned by get_tag
|
||||
tag = tag[0]
|
||||
|
|
@ -428,9 +404,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
from evennia.typeclasses.models import Tag as _Tag
|
||||
tag = _Tag.objects.create(
|
||||
db_key=key.strip().lower() if key is not None else None,
|
||||
db_category=category.strip().lower()
|
||||
if category and key is not None
|
||||
else None,
|
||||
db_category=category.strip().lower() if category and key is not None else None,
|
||||
db_data=data,
|
||||
db_model=dbmodel,
|
||||
db_tagtype=tagtype.strip().lower() if tagtype is not None else None,
|
||||
|
|
@ -539,8 +513,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
typeclass=F("db_typeclass_path"),
|
||||
# Calculate this class' percentage of total composition
|
||||
percent=ExpressionWrapper(
|
||||
((F("count") / float(self.count())) * 100.0),
|
||||
output_field=FloatField(),
|
||||
((F("count") / float(self.count())) * 100.0), output_field=FloatField(),
|
||||
),
|
||||
)
|
||||
.values("typeclass", "count", "percent")
|
||||
|
|
@ -560,9 +533,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
|||
stats = self.get_typeclass_totals().order_by("typeclass")
|
||||
return {x.get("typeclass"): x.get("count") for x in stats}
|
||||
|
||||
def typeclass_search(
|
||||
self, typeclass, include_children=False, include_parents=False
|
||||
):
|
||||
def typeclass_search(self, typeclass, include_children=False, include_parents=False):
|
||||
"""
|
||||
Searches through all objects returning those which has a
|
||||
certain typeclass. If location is set, limit search to objects
|
||||
|
|
@ -837,8 +808,7 @@ class TypeclassManager(TypedObjectManager):
|
|||
|
||||
"""
|
||||
paths = [self.model.path] + [
|
||||
"%s.%s" % (cls.__module__, cls.__name__)
|
||||
for cls in self._get_subclasses(self.model)
|
||||
"%s.%s" % (cls.__module__, cls.__name__) for cls in self._get_subclasses(self.model)
|
||||
]
|
||||
kwargs.update({"db_typeclass_path__in": paths})
|
||||
return super().get(**kwargs)
|
||||
|
|
@ -860,8 +830,7 @@ class TypeclassManager(TypedObjectManager):
|
|||
"""
|
||||
# query, including all subclasses
|
||||
paths = [self.model.path] + [
|
||||
"%s.%s" % (cls.__module__, cls.__name__)
|
||||
for cls in self._get_subclasses(self.model)
|
||||
"%s.%s" % (cls.__module__, cls.__name__) for cls in self._get_subclasses(self.model)
|
||||
]
|
||||
kwargs.update({"db_typeclass_path__in": paths})
|
||||
return super().filter(*args, **kwargs)
|
||||
|
|
@ -876,7 +845,6 @@ class TypeclassManager(TypedObjectManager):
|
|||
|
||||
"""
|
||||
paths = [self.model.path] + [
|
||||
"%s.%s" % (cls.__module__, cls.__name__)
|
||||
for cls in self._get_subclasses(self.model)
|
||||
"%s.%s" % (cls.__module__, cls.__name__) for cls in self._get_subclasses(self.model)
|
||||
]
|
||||
return super().all().filter(db_typeclass_path__in=paths)
|
||||
|
|
|
|||
|
|
@ -126,7 +126,6 @@ class TypeclassBase(SharedMemoryModelBase):
|
|||
if not dbmodel:
|
||||
raise TypeError(f"{name} does not appear to inherit from a database model.")
|
||||
|
||||
|
||||
# typeclass proxy setup
|
||||
# first check explicit __applabel__ on the typeclass, then figure
|
||||
# it out from the dbmodel
|
||||
|
|
@ -135,6 +134,7 @@ class TypeclassBase(SharedMemoryModelBase):
|
|||
attrs["__applabel__"] = dbmodel._meta.app_label
|
||||
|
||||
if "Meta" not in attrs:
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
app_label = attrs.get("__applabel__", "typeclasses")
|
||||
|
|
@ -156,8 +156,7 @@ class TypeclassBase(SharedMemoryModelBase):
|
|||
|
||||
# attach signals
|
||||
signals.post_save.connect(call_at_first_save, sender=new_class)
|
||||
signals.pre_delete.connect(
|
||||
remove_attributes_on_delete, sender=new_class)
|
||||
signals.pre_delete.connect(remove_attributes_on_delete, sender=new_class)
|
||||
return new_class
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -43,10 +43,12 @@ class TestAttributes(EvenniaTest):
|
|||
self.assertEqual(self.obj1.attributes.get(key), value)
|
||||
|
||||
def test_batch_add(self):
|
||||
attrs = [("key1", "value1"),
|
||||
("key2", "value2", "category2"),
|
||||
("key3", "value3"),
|
||||
("key4", "value4", "category4", "attrread:id(1)", False)]
|
||||
attrs = [
|
||||
("key1", "value1"),
|
||||
("key2", "value2", "category2"),
|
||||
("key3", "value3"),
|
||||
("key4", "value4", "category4", "attrread:id(1)", False),
|
||||
]
|
||||
new_attrs = self.obj1.attributes.batch_add(*attrs)
|
||||
attrobj = self.obj1.attributes.get(key="key4", category="category4", return_obj=True)
|
||||
self.assertEqual(attrobj.value, "value4")
|
||||
|
|
@ -69,16 +71,12 @@ class TestTypedObjectManager(EvenniaTest):
|
|||
self.obj2.tags.add("tag4")
|
||||
self.obj2.tags.add("tag2c")
|
||||
self.assertEqual(self._manager("get_by_tag", "tag1"), [self.obj1])
|
||||
self.assertEqual(
|
||||
set(self._manager("get_by_tag", "tag2")), set([self.obj1, self.obj2])
|
||||
)
|
||||
self.assertEqual(set(self._manager("get_by_tag", "tag2")), set([self.obj1, self.obj2]))
|
||||
self.assertEqual(self._manager("get_by_tag", "tag2a"), [self.obj2])
|
||||
self.assertEqual(self._manager("get_by_tag", "tag3 with spaces"), [self.obj2])
|
||||
self.assertEqual(self._manager("get_by_tag", ["tag2a", "tag2b"]), [self.obj2])
|
||||
self.assertEqual(self._manager("get_by_tag", ["tag2a", "tag1"]), [])
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", ["tag2a", "tag4", "tag2c"]), [self.obj2]
|
||||
)
|
||||
self.assertEqual(self._manager("get_by_tag", ["tag2a", "tag4", "tag2c"]), [self.obj2])
|
||||
|
||||
def test_get_by_tag_and_category(self):
|
||||
self.obj1.tags.add("tag5", "category1")
|
||||
|
|
@ -94,24 +92,17 @@ class TestTypedObjectManager(EvenniaTest):
|
|||
self.obj1.tags.add("tag8", "category6")
|
||||
self.obj2.tags.add("tag9", "category6")
|
||||
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", "tag5", "category1"), [self.obj1, self.obj2]
|
||||
)
|
||||
self.assertEqual(self._manager("get_by_tag", "tag5", "category1"), [self.obj1, self.obj2])
|
||||
self.assertEqual(self._manager("get_by_tag", "tag6", "category1"), [])
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", "tag6", "category3"), [self.obj1, self.obj2]
|
||||
)
|
||||
self.assertEqual(self._manager("get_by_tag", "tag6", "category3"), [self.obj1, self.obj2])
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", ["tag5", "tag6"], ["category1", "category3"]),
|
||||
[self.obj1, self.obj2],
|
||||
)
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", ["tag5", "tag7"], "category1"),
|
||||
[self.obj1, self.obj2],
|
||||
)
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", category="category1"), [self.obj1, self.obj2]
|
||||
self._manager("get_by_tag", ["tag5", "tag7"], "category1"), [self.obj1, self.obj2],
|
||||
)
|
||||
self.assertEqual(self._manager("get_by_tag", category="category1"), [self.obj1, self.obj2])
|
||||
self.assertEqual(self._manager("get_by_tag", category="category2"), [self.obj2])
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", category=["category1", "category3"]),
|
||||
|
|
@ -121,49 +112,33 @@ class TestTypedObjectManager(EvenniaTest):
|
|||
self._manager("get_by_tag", category=["category1", "category2"]),
|
||||
[self.obj1, self.obj2],
|
||||
)
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", category=["category5", "category4"]), []
|
||||
)
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", category="category1"), [self.obj1, self.obj2]
|
||||
)
|
||||
self.assertEqual(
|
||||
self._manager("get_by_tag", category="category6"), [self.obj1, self.obj2]
|
||||
)
|
||||
self.assertEqual(self._manager("get_by_tag", category=["category5", "category4"]), [])
|
||||
self.assertEqual(self._manager("get_by_tag", category="category1"), [self.obj1, self.obj2])
|
||||
self.assertEqual(self._manager("get_by_tag", category="category6"), [self.obj1, self.obj2])
|
||||
|
||||
def test_get_tag_with_all(self):
|
||||
self.obj1.tags.add("tagA", "categoryA")
|
||||
self.assertEqual(
|
||||
self._manager(
|
||||
"get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB"], match="all"
|
||||
),
|
||||
self._manager("get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB"], match="all"),
|
||||
[],
|
||||
)
|
||||
|
||||
def test_get_tag_with_any(self):
|
||||
self.obj1.tags.add("tagA", "categoryA")
|
||||
self.assertEqual(
|
||||
self._manager(
|
||||
"get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB"], match="any"
|
||||
),
|
||||
self._manager("get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB"], match="any"),
|
||||
[self.obj1],
|
||||
)
|
||||
|
||||
def test_get_tag_withnomatch(self):
|
||||
self.obj1.tags.add("tagC", "categoryC")
|
||||
self.assertEqual(
|
||||
self._manager(
|
||||
"get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB"], match="any"
|
||||
),
|
||||
self._manager("get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB"], match="any"),
|
||||
[],
|
||||
)
|
||||
|
||||
def test_batch_add(self):
|
||||
tags = ["tag1",
|
||||
("tag2", "category2"),
|
||||
"tag3",
|
||||
("tag4", "category4", "data4")
|
||||
]
|
||||
tags = ["tag1", ("tag2", "category2"), "tag3", ("tag4", "category4", "data4")]
|
||||
self.obj1.tags.batch_add(*tags)
|
||||
self.assertEqual(self.obj1.tags.get("tag1"), "tag1")
|
||||
tagobj = self.obj1.tags.get("tag4", category="category4", return_tagobj=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue