fix for serializing IntFlag types
This commit is contained in:
parent
284fb68553
commit
c21ec0165d
2 changed files with 11 additions and 0 deletions
|
|
@ -35,6 +35,7 @@ from django.utils.safestring import SafeString
|
||||||
import evennia
|
import evennia
|
||||||
from evennia.utils import logger
|
from evennia.utils import logger
|
||||||
from evennia.utils.utils import is_iter, to_bytes, uses_database
|
from evennia.utils.utils import is_iter, to_bytes, uses_database
|
||||||
|
from enum import IntFlag
|
||||||
|
|
||||||
__all__ = ("to_pickle", "from_pickle", "do_pickle", "do_unpickle", "dbserialize", "dbunserialize")
|
__all__ = ("to_pickle", "from_pickle", "do_pickle", "do_unpickle", "dbserialize", "dbunserialize")
|
||||||
|
|
||||||
|
|
@ -672,6 +673,8 @@ def to_pickle(data):
|
||||||
|
|
||||||
if dtype in (str, int, float, bool, bytes, SafeString):
|
if dtype in (str, int, float, bool, bytes, SafeString):
|
||||||
return item
|
return item
|
||||||
|
elif isinstance(item, IntFlag):
|
||||||
|
return item.value
|
||||||
elif dtype == tuple:
|
elif dtype == tuple:
|
||||||
return tuple(process_item(val) for val in item)
|
return tuple(process_item(val) for val in item)
|
||||||
elif dtype in (list, _SaverList):
|
elif dtype in (list, _SaverList):
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ from parameterized import parameterized
|
||||||
|
|
||||||
from evennia.objects.objects import DefaultObject
|
from evennia.objects.objects import DefaultObject
|
||||||
from evennia.utils import dbserialize
|
from evennia.utils import dbserialize
|
||||||
|
from enum import IntFlag, auto
|
||||||
|
|
||||||
|
|
||||||
class TestDbSerialize(TestCase):
|
class TestDbSerialize(TestCase):
|
||||||
|
|
@ -20,6 +21,13 @@ class TestDbSerialize(TestCase):
|
||||||
self.obj = DefaultObject(db_key="Tester")
|
self.obj = DefaultObject(db_key="Tester")
|
||||||
self.obj.save()
|
self.obj.save()
|
||||||
|
|
||||||
|
def test_intflag(self):
|
||||||
|
class TestFlag(IntFlag):
|
||||||
|
foo = auto()
|
||||||
|
self.obj.db.test = TestFlag.foo
|
||||||
|
self.assertEqual(self.obj.db.test, TestFlag.foo)
|
||||||
|
self.obj.save()
|
||||||
|
|
||||||
def test_constants(self):
|
def test_constants(self):
|
||||||
self.obj.db.test = 1
|
self.obj.db.test = 1
|
||||||
self.obj.db.test += 1
|
self.obj.db.test += 1
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue