Example #1
0
    def __call__(self, **kwargs):
        from nefertari.utils import issequence
        result = kwargs['result']
        self.drop_hidden = kwargs.get('drop_hidden', True)

        if not isinstance(result, dict):
            return result
        data = result.get('data', result)

        if data and isinstance(data, (dict, list)):
            self.is_admin = kwargs.get('is_admin')
            if self.is_admin is None:
                user = getattr(self.request, 'user', None)
                self.is_admin = user is not None and type(user).is_admin(user)
            if issequence(data) and not isinstance(data, dict):
                kw = {
                    'is_admin': self.is_admin,
                    'drop_hidden': self.drop_hidden
                }
                data = [apply_privacy(self.request)(result=d, **kw)
                        for d in data]
            else:
                data = self._filter_fields(data)

        if 'data' in result:
            result['data'] = data
        else:
            result = data
        return result
Example #2
0
    def __call__(self, **kwargs):
        from nefertari.utils import issequence
        result = kwargs['result']
        self.drop_hidden = kwargs.get('drop_hidden', True)

        if not isinstance(result, dict):
            return result
        data = result.get('data', result)

        if data and isinstance(data, (dict, list)):
            self.is_admin = kwargs.get('is_admin')
            if self.is_admin is None:
                user = getattr(self.request, 'user', None)
                self.is_admin = user is not None and type(user).is_admin(user)
            if issequence(data) and not isinstance(data, dict):
                kw = {
                    'is_admin': self.is_admin,
                    'drop_hidden': self.drop_hidden
                }
                data = [apply_privacy(self.request)(result=d, **kw)
                        for d in data]
            else:
                data = self._filter_fields(data)

        if 'data' in result:
            result['data'] = data
        else:
            result = data
        return result
Example #3
0
    def __call__(self, **kwargs):
        '''converts objects in `result` into dicts'''
        from nefertari.utils import issequence
        result = kwargs['result']
        if isinstance(result, dict):
            return result

        _fields = kwargs.get('_fields', [])
        if hasattr(result, '_nefertari_meta'):
            _fields = result._nefertari_meta.get('fields', [])

        if hasattr(result, "to_dict"):
            return result.to_dict(_keys=_fields, request=self.request)

        elif issequence(result):
            # make sure its mutable, i.e list
            result = list(result)
            for ix, each in enumerate(result):
                result[ix] = obj2dict(self.request)(
                    _fields=_fields, result=each)

        return result
Example #4
0
    def __call__(self, **kwargs):
        '''converts objects in `result` into dicts'''
        from nefertari.utils import issequence
        result = kwargs['result']
        if isinstance(result, dict):
            return result

        _fields = kwargs.get('_fields', [])
        if hasattr(result, '_nefertari_meta'):
            _fields = result._nefertari_meta.get('fields', [])

        if hasattr(result, "to_dict"):
            return result.to_dict(_keys=_fields, request=self.request)

        elif issequence(result):
            # make sure its mutable, i.e list
            result = list(result)
            for ix, each in enumerate(result):
                result[ix] = obj2dict(self.request)(
                    _fields=_fields, result=each)

        return result