Source code for cfxdb.user.user_mrealm_role
##############################################################################
#
# Crossbar.io Database
# Copyright (c) typedef int GmbH. Licensed under MIT.
#
##############################################################################
from pprint import pformat
from cfxdb.gen.user.UserRole import UserRole
[docs]
class UserMrealmRole(object):
"""
Database class for CFC user roles on a management realm using CBOR.
"""
def __init__(self, roles=None, _unknown=None):
# private member with unknown/untouched data passing through
[docs]
self._unknown = _unknown
[docs]
def __eq__(self, other):
if not isinstance(other, self.__class__):
return False
if other.roles != self.roles:
return False
return True
[docs]
def __ne__(self, other):
return not self.__eq__(other)
[docs]
def __str__(self):
return "\n{}\n".format(pformat(self.marshal()))
[docs]
def copy(self, other):
self.roles = other.roles[:]
# _unknown is not copied!
[docs]
def marshal(self):
assert type(self.roles) == list
for role in self.roles:
assert type(role) == int
assert role in [UserRole.OWNER, UserRole.ADMIN, UserRole.USER, UserRole.GUEST]
obj = {
"roles": self.roles,
}
if self._unknown:
# pass through all attributes unknown
obj.update(self._unknown)
else:
return obj
return obj
@staticmethod
[docs]
def parse(data):
assert type(data) == dict
# future attributes (yet unknown) are not only ignored, but passed through!
_unknown = {}
for k in data:
if k not in ["roles"]:
_unknown[k] = data[k]
roles = data.get("roles", None)
assert type(roles) == list
for role in roles:
assert type(role) == int
assert role in [UserRole.OWNER, UserRole.ADMIN, UserRole.USER, UserRole.GUEST]
obj = UserMrealmRole(roles=roles, _unknown=_unknown)
return obj