mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
Merge pull request #3705 from 0xDEADFED5/main
fix for serializing IntFlag types
This commit is contained in:
commit
f227179631
2 changed files with 11 additions and 0 deletions
|
|
@ -35,6 +35,7 @@ from django.utils.safestring import SafeString
|
|||
import evennia
|
||||
from evennia.utils import logger
|
||||
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")
|
||||
|
||||
|
|
@ -672,6 +673,8 @@ def to_pickle(data):
|
|||
|
||||
if dtype in (str, int, float, bool, bytes, SafeString):
|
||||
return item
|
||||
elif isinstance(item, IntFlag):
|
||||
return item.value
|
||||
elif dtype == tuple:
|
||||
return tuple(process_item(val) for val in item)
|
||||
elif dtype in (list, _SaverList):
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ from parameterized import parameterized
|
|||
|
||||
from evennia.objects.objects import DefaultObject
|
||||
from evennia.utils import dbserialize
|
||||
from enum import IntFlag, auto
|
||||
|
||||
|
||||
class TestDbSerialize(TestCase):
|
||||
|
|
@ -20,6 +21,13 @@ class TestDbSerialize(TestCase):
|
|||
self.obj = DefaultObject(db_key="Tester")
|
||||
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):
|
||||
self.obj.db.test = 1
|
||||
self.obj.db.test += 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue