mirror of
https://github.com/evennia/evennia.git
synced 2026-03-30 12:37:16 +02:00
Convert serializer to use attributes/nickhandlers
This commit is contained in:
parent
4157975969
commit
4b1a3cd8b0
1 changed files with 47 additions and 15 deletions
|
|
@ -62,9 +62,10 @@ class TypeclassSerializerMixin(object):
|
|||
not have them render PK-related fields.
|
||||
"""
|
||||
|
||||
shared_fields = ["id", "db_key", "db_attributes", "db_typeclass_path", "aliases", "tags", "permissions"]
|
||||
shared_fields = ["id", "db_key", "attributes", "db_typeclass_path", "aliases", "tags", "permissions"]
|
||||
|
||||
def get_tags(self, obj):
|
||||
@staticmethod
|
||||
def get_tags(obj):
|
||||
"""
|
||||
Serializes tags from the object's Tagshandler
|
||||
Args:
|
||||
|
|
@ -75,7 +76,8 @@ class TypeclassSerializerMixin(object):
|
|||
"""
|
||||
return TagSerializer(obj.tags.get(return_tagobj=True, return_list=True), many=True).data
|
||||
|
||||
def get_aliases(self, obj):
|
||||
@staticmethod
|
||||
def get_aliases(obj):
|
||||
"""
|
||||
Serializes tags from the object's Aliashandler
|
||||
Args:
|
||||
|
|
@ -86,7 +88,8 @@ class TypeclassSerializerMixin(object):
|
|||
"""
|
||||
return TagSerializer(obj.aliases.get(return_tagobj=True, return_list=True), many=True).data
|
||||
|
||||
def get_permissions(self, obj):
|
||||
@staticmethod
|
||||
def get_permissions(obj):
|
||||
"""
|
||||
Serializes tags from the object's Permissionshandler
|
||||
Args:
|
||||
|
|
@ -97,9 +100,34 @@ class TypeclassSerializerMixin(object):
|
|||
"""
|
||||
return TagSerializer(obj.permissions.get(return_tagobj=True, return_list=True), many=True).data
|
||||
|
||||
@staticmethod
|
||||
def get_attributes(obj):
|
||||
"""
|
||||
Serializes attributes from the object's AttributeHandler
|
||||
Args:
|
||||
obj: Typeclassed object being serialized
|
||||
|
||||
Returns:
|
||||
List of AttributeSerializer data
|
||||
"""
|
||||
return AttributeSerializer(obj.attributes.all(), many=True).data
|
||||
|
||||
@staticmethod
|
||||
def get_nicks(obj):
|
||||
"""
|
||||
Serializes attributes from the object's NicksHandler
|
||||
Args:
|
||||
obj: Typeclassed object being serialized
|
||||
|
||||
Returns:
|
||||
List of AttributeSerializer data
|
||||
"""
|
||||
return AttributeSerializer(obj.nicks.all(), many=True).data
|
||||
|
||||
|
||||
class ObjectDBSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
||||
db_attributes = AttributeSerializer(many=True, read_only=True)
|
||||
attributes = serializers.SerializerMethodField()
|
||||
nicks = serializers.SerializerMethodField()
|
||||
contents = serializers.SerializerMethodField()
|
||||
exits = serializers.SerializerMethodField()
|
||||
tags = serializers.SerializerMethodField()
|
||||
|
|
@ -108,10 +136,11 @@ class ObjectDBSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = DefaultObject
|
||||
fields = ["db_location", "db_home", "contents", "exits"] + TypeclassSerializerMixin.shared_fields
|
||||
read_only_fields = ["id", "db_attributes"]
|
||||
fields = ["db_location", "db_home", "contents", "exits", "nicks"] + TypeclassSerializerMixin.shared_fields
|
||||
read_only_fields = ["id"]
|
||||
|
||||
def get_exits(self, obj):
|
||||
@staticmethod
|
||||
def get_exits(obj):
|
||||
"""
|
||||
Gets exits for the object
|
||||
Args:
|
||||
|
|
@ -123,7 +152,8 @@ class ObjectDBSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
|||
exits = [ob for ob in obj.contents if ob.destination]
|
||||
return SimpleObjectDBSerializer(exits, many=True).data
|
||||
|
||||
def get_contents(self, obj):
|
||||
@staticmethod
|
||||
def get_contents(obj):
|
||||
"""
|
||||
Gets non-exits for the object
|
||||
Args:
|
||||
|
|
@ -138,14 +168,16 @@ class ObjectDBSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
|||
|
||||
class AccountSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
||||
"""This uses the DefaultAccount object to have access to the sessions property"""
|
||||
db_attributes = AttributeSerializer(many=True, read_only=True)
|
||||
attributes = serializers.SerializerMethodField()
|
||||
nicks = serializers.SerializerMethodField()
|
||||
db_key = serializers.CharField(required=False)
|
||||
session_ids = serializers.SerializerMethodField()
|
||||
tags = serializers.SerializerMethodField()
|
||||
aliases = serializers.SerializerMethodField()
|
||||
permissions = serializers.SerializerMethodField()
|
||||
|
||||
def get_session_ids(self, obj):
|
||||
@staticmethod
|
||||
def get_session_ids(obj):
|
||||
"""
|
||||
Gets a list of session IDs connected to this Account
|
||||
Args:
|
||||
|
|
@ -158,12 +190,12 @@ class AccountSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = DefaultAccount
|
||||
fields = ["username", "session_ids"] + TypeclassSerializerMixin.shared_fields
|
||||
read_only_fields = ["id", "db_attributes", "db_tags", "session_ids"]
|
||||
fields = ["username", "session_ids", "nicks"] + TypeclassSerializerMixin.shared_fields
|
||||
read_only_fields = ["id"]
|
||||
|
||||
|
||||
class ScriptDBSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
||||
db_attributes = AttributeSerializer(many=True, read_only=True)
|
||||
attributes = serializers.SerializerMethodField()
|
||||
tags = serializers.SerializerMethodField()
|
||||
aliases = serializers.SerializerMethodField()
|
||||
permissions = serializers.SerializerMethodField()
|
||||
|
|
@ -172,4 +204,4 @@ class ScriptDBSerializer(TypeclassSerializerMixin, serializers.ModelSerializer):
|
|||
model = ScriptDB
|
||||
fields = ["db_interval", "db_persistent", "db_start_delay",
|
||||
"db_is_active", "db_repeats"] + TypeclassSerializerMixin.shared_fields
|
||||
read_only_fields = ["id", "db_attributes", "db_tags"]
|
||||
read_only_fields = ["id"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue