Source code for cfxdb.user.user_mrealm_role

##############################################################################
#
#                        Crossbar.io Database
#     Copyright (c) Crossbar.io Technologies 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): self.roles = roles # private member with unknown/untouched data passing through self._unknown = _unknown def __eq__(self, other): if not isinstance(other, self.__class__): return False if other.roles != self.roles: return False return True def __ne__(self, other): return not self.__eq__(other) def __str__(self): return '\n{}\n'.format(pformat(self.marshal())) def copy(self, other): self.roles = other.roles[:] # _unknown is not copied! 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 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