示例#1
0
    def setup_default_wrappers(self):
        """ Setup defaulf wrappers.

        Wrappers are applied when view method does not return instance
        of Response. In this case nefertari renderers call wrappers and
        handle response generation.

        Note: It's important for `add_etag` wrapper be applied before
        `apply_privacy` as later may remove response data that
        is used to generate etag
        """
        # Index
        self._after_calls['index'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
            wrappers.add_etag(self.request),
        ]

        # Show
        self._after_calls['show'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Create
        self._after_calls['create'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Update
        self._after_calls['update'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Replace
        self._after_calls['replace'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Privacy wrappers
        if self._auth_enabled:
            for meth in ('index', 'show', 'create', 'update', 'replace'):
                self._after_calls[meth] += [
                    wrappers.apply_privacy(self.request),
                ]
            for meth in ('update', 'replace', 'update_many'):
                self._before_calls[meth] += [
                    wrappers.apply_request_privacy(self.Model,
                                                   self._json_params),
                ]
示例#2
0
文件: view.py 项目: mbijon/nefertari
    def setup_default_wrappers(self):
        """ Setup defaulf wrappers.

        Wrappers are applied when view method does not return instance
        of Response. In this case nefertari renderers call wrappers and
        handle response generation.

        Note: It's important for `add_etag` wrapper be applied before
        `apply_privacy` as later may remove response data that
        is used to generate etag
        """
        # Index
        self._after_calls['index'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
            wrappers.add_etag(self.request),
        ]

        # Show
        self._after_calls['show'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Create
        self._after_calls['create'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Update
        self._after_calls['update'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Replace
        self._after_calls['replace'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_object_url(self.request),
        ]

        # Privacy wrappers
        if self._auth_enabled:
            for meth in ('index', 'show', 'create', 'update', 'replace'):
                self._after_calls[meth] += [
                    wrappers.apply_privacy(self.request),
                ]
            for meth in ('update', 'replace', 'update_many'):
                self._before_calls[meth] += [
                    wrappers.apply_request_privacy(
                        self.Model, self._json_params),
                ]
示例#3
0
 def test_wrap_in_dict_meta_list(self, mock_obj):
     mock_obj.return_value = lambda **kw: [{'foo': 'bar'}]
     result = Mock()
     result._nefertari_meta = {'meta': 'metameta'}
     processed = wrappers.wrap_in_dict(123)(result=result, qoo=1)
     mock_obj.assert_called_once_with(123)
     assert processed == {'data': [{'foo': 'bar'}], 'meta': 'metameta'}
示例#4
0
 def test_wrap_in_dict_meta_list(self, mock_obj):
     mock_obj.return_value = lambda **kw: [{'foo': 'bar'}]
     result = Mock()
     result._nefertari_meta = {'meta': 'metameta'}
     processed = wrappers.wrap_in_dict(123)(result=result, qoo=1)
     mock_obj.assert_called_once_with(123)
     assert processed == {'data': [{'foo': 'bar'}], 'meta': 'metameta'}
示例#5
0
 def test_wrap_in_dict_meta_list(self, mock_obj):
     mock_obj.return_value = lambda **kw: [{"foo": "bar"}]
     result = Mock()
     result._nefertari_meta = {"meta": "metameta"}
     processed = wrappers.wrap_in_dict(123)(result=result, qoo=1)
     mock_obj.assert_called_once_with(123)
     assert processed == {"data": [{"foo": "bar"}], "meta": "metameta"}
示例#6
0
    def run_after_calls(self, value, system):
        request = system.get('request')
        if request and hasattr(request, 'action'):

            if request.action in ['index', 'show']:
                value = wrappers.wrap_in_dict(request)(result=value)

        return value
示例#7
0
    def run_after_calls(self, value, system):
        request = system.get('request')
        if request and hasattr(request, 'action'):

            if request.action in ['index', 'show']:
                value = wrappers.wrap_in_dict(request)(result=value)

        return value
示例#8
0
    def setup_default_wrappers(self):
        self._after_calls['index'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_etag(self.request),
        ]

        self._after_calls['show'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
        ]

        self._after_calls['delete'] = [
            wrappers.add_confirmation_url(self.request)
        ]

        self._after_calls['delete_many'] = [
            wrappers.add_confirmation_url(self.request)
        ]

        self._after_calls['update_many'] = [
            wrappers.add_confirmation_url(self.request)
        ]
示例#9
0
    def setup_default_wrappers(self):
        self._after_calls['index'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
            wrappers.add_etag(self.request),
        ]

        self._after_calls['show'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
        ]

        self._after_calls['delete'] = [
            wrappers.add_confirmation_url(self.request)
        ]

        self._after_calls['delete_many'] = [
            wrappers.add_confirmation_url(self.request)
        ]

        self._after_calls['update_many'] = [
            wrappers.add_confirmation_url(self.request)
        ]
示例#10
0
    def setup_default_wrappers(self):
        root_resource = getattr(self, 'root_resource', None)
        auth_enabled = root_resource and root_resource.auth

        self._after_calls['index'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
        ]
        if auth_enabled:
            self._after_calls['index'] += [
                wrappers.apply_privacy(self.request),
            ]
        self._after_calls['index'] += [
            wrappers.add_etag(self.request),
        ]

        self._after_calls['show'] = [
            wrappers.wrap_in_dict(self.request),
            wrappers.add_meta(self.request),
        ]
        if auth_enabled:
            self._after_calls['show'] += [
                wrappers.apply_privacy(self.request),
            ]

        self._after_calls['delete'] = [
            wrappers.add_confirmation_url(self.request)
        ]

        self._after_calls['delete_many'] = [
            wrappers.add_confirmation_url(self.request)
        ]

        self._after_calls['update_many'] = [
            wrappers.add_confirmation_url(self.request)
        ]
示例#11
0
    def __init__(self, context, request):
        super(EngineView, self).__init__(context, request)
        self._params.process_int_param('_limit', 20)

        def add_self(**kwargs):
            result = kwargs['result']
            request = kwargs['request']

            try:
                for each in result['data']:
                    each['self'] = "%s?id=%s" % (
                        request.current_route_url(), each['id'])
            except KeyError:
                pass

            return result

        self.add_after_call('show', add_self)
        # Wrap in a dict so it acts as "index"
        self.add_after_call('show', wrappers.wrap_in_dict(self.request), pos=0)
示例#12
0
    def __init__(self, context, request):
        super(EngineView, self).__init__(context, request)
        self._params.process_int_param('_limit', 20)

        def add_self(**kwargs):
            result = kwargs['result']
            request = kwargs['request']

            try:
                for each in result['data']:
                    each['self'] = "%s?id=%s" % (request.current_route_url(),
                                                 each['id'])
            except KeyError:
                pass

            return result

        self.add_after_call('show', add_self)
        # Wrap in a dict so it acts as "index"
        self.add_after_call('show', wrappers.wrap_in_dict(self.request), pos=0)
示例#13
0
 def test_wrap_in_dict_no_meta_list(self, mock_obj):
     result = Mock(spec=[])
     mock_obj.return_value = lambda **kw: [{'foo': 'bar'}]
     processed = wrappers.wrap_in_dict(123)(result=result, qoo=1)
     mock_obj.assert_called_once_with(123)
     assert processed == {'data': [{'foo': 'bar'}]}
示例#14
0
 def test_wrap_in_dict_no_meta_list(self, mock_obj):
     result = Mock(spec=[])
     mock_obj.return_value = lambda **kw: [{'foo': 'bar'}]
     processed = wrappers.wrap_in_dict(123)(result=result, qoo=1)
     mock_obj.assert_called_once_with(123)
     assert processed == {'data': [{'foo': 'bar'}]}
示例#15
0
 def test_wrap_in_dict_no_meta_dict(self, mock_obj):
     result = Mock(spec=[])
     mock_obj.return_value = lambda **kw: {"foo": "bar"}
     processed = wrappers.wrap_in_dict(123)(result=result, qoo=1)
     mock_obj.assert_called_once_with(123)
     assert processed == {"foo": "bar"}