def attributes(self): return { 'name': self._instance.ref, 'permissions': { sel: Permissions(perm).name for sel, perm in self._instance.data['permissions'].items() } }
def attributes(cls, inst): return { 'name': inst.ref, 'permissions': { sel: Permissions(perm).name for sel, perm in inst.data['permissions'].items() } }
def attributes(cls, inst): return { 'name': inst.ref, 'schema': inst.data.get('schema'), # 'documentCreatorPermissions': Permissions(inst.data['documentCreatorPermissions']).name, 'permissions': { sel: Permissions(perm).name for sel, perm in inst.data['permissions'].items() } }
def meta(self): return { 'permissions': Permissions(self._permission).name, 'created-by': self._instance.created_by, 'modified-by': self._instance.modified_by, 'created-on': datetime.datetime.fromtimestamp( self._instance.created_on).isoformat(), 'modified-on': datetime.datetime.fromtimestamp( self._instance.modified_on).isoformat() }
def update(self, key, patch, user): if isinstance(patch, dict): keys = set(patch.keys()) if not keys.issubset(Collection.WHITELIST): raise exceptions.InvalidFields(keys - Collection.WHITELIST) previous = self._state.get(key) patch = jsonpatch.JsonPatch.from_diff(previous.data, {**previous.data, **patch}) patch = list(filter(lambda p: p['path'].split('/')[1] in Namespace.WHITELIST, patch)) for blob in patch: if not blob['path'].split('/')[1] in Collection.WHITELIST: raise exceptions.InvalidField(blob['path']) if blob.get('value') and not isinstance(blob.get('value'), Permissions) and blob['path'].startswith('/permissions'): try: blob['value'] = Permissions(reduce(operator.or_, [Permissions[p.strip()] for p in blob['value'].split(',')], Permissions.NONE)) except (AttributeError, KeyError): raise exceptions.InvalidPermission(blob['value']) return super().update(key, patch, user)
def attributes(self): full = self._permission == Permissions.ADMIN or ( (self._permission ^ Permissions.get_permissions( self._user, Collection(self._instance))) & Permissions.READ) == Permissions.READ return { 'name': self._instance.ref, 'schema': self._instance.data.get('schema'), **({} if not full else { 'plugins': self._instance.data.get('plugins', {}), 'permissions': { sel: Permissions(perm).name for sel, perm in self._instance.data['permissions'].items( ) } }) }