def __call__(self):
     self._logger.debug('DELETE Request received on %s' % self.request.url)
     try:
         self.context.__parent__.remove(self.context)
     except Exception, err: # catch Exception pylint: disable=W0703
         response = self._handle_unknown_exception(err.message,
                                                   get_traceback())
Exemple #2
0
 def __call__(self):
     self._logger.debug('%s request received on %s.', self.request.method,
                        self.request.url)
     self._logger.debug('Request body: %s',
                        self.request.body,
                        extra=dict(output_limit=500))
     if len(self.request.body) == 0:
         # Empty body - return 400 Bad Request.
         result = self._handle_empty_body()
     else:
         try:
             if self._enable_messaging:
                 extract_executor = \
                     WarnAndResubmitExecutor(self._extract_request_data)
                 data = extract_executor()
                 do_continue = extract_executor.do_continue
             else:
                 data = self._extract_request_data()
                 do_continue = not IResponse.providedBy(data)  # pylint: disable=E1101
             if do_continue:
                 if self._enable_messaging:
                     process_executor = \
                       WarnAndResubmitExecutor(self._process_request_data)
                     result = process_executor(data)
                 else:
                     result = self._process_request_data(data)
             else:
                 result = data
         except HTTPError as err:
             result = self.request.get_response(err)
         except Exception as err:  # catch Exception pylint: disable=W0703
             result = self._handle_unknown_exception(
                 str(err), get_traceback())
     return result
Exemple #3
0
 def __call__(self):
     self._logger.debug('Request URL: %s.', self.request.url)
     try:
         if self._enable_messaging:
             prep_executor = \
                 WarnAndResubmitExecutor(self._prepare_resource)
             data = prep_executor()
             do_continue = prep_executor.do_continue
         else:
             data = self._prepare_resource()
             do_continue = not IResponse.providedBy(data) # pylint: disable=E1101
         if do_continue:
             # Return a response to bypass Pyramid rendering.
             if self._enable_messaging:
                 res_executor = WarnAndResubmitExecutor(self._get_result)
                 result = res_executor(data)
             else:
                 result = self._get_result(data)
         else:
             result = data
     except HTTPError as http_exc:
         result = self.request.get_response(http_exc)
     except Exception as err: # catch Exception pylint: disable=W0703
         result = self._handle_unknown_exception(str(err),
                                                 get_traceback())
     return result
Exemple #4
0
 def __call__(self):
     self._logger.debug('%s request received on %s.',
                        self.request.method, self.request.url)
     self._logger.debug('Request body: %s', self.request.body,
                        extra=dict(output_limit=500))
     if len(self.request.body) == 0:
         # Empty body - return 400 Bad Request.
         result = self._handle_empty_body()
     else:
         try:
             if self._enable_messaging:
                 extract_executor = \
                     WarnAndResubmitExecutor(self._extract_request_data)
                 data = extract_executor()
                 do_continue = extract_executor.do_continue
             else:
                 data = self._extract_request_data()
                 do_continue = not IResponse.providedBy(data) # pylint: disable=E1101
             if do_continue:
                 if self._enable_messaging:
                     process_executor = \
                       WarnAndResubmitExecutor(self._process_request_data)
                     result = process_executor(data)
                 else:
                     result = self._process_request_data(data)
             else:
                 result = data
         except HTTPError as err:
             result = self.request.get_response(err)
         except Exception as err: # catch Exception pylint: disable=W0703
             result = self._handle_unknown_exception(str(err),
                                                     get_traceback())
     return result
Exemple #5
0
 def __call__(self):
     self._logger.debug('DELETE Request received on %s' % self.request.url)
     try:
         self.context.__parent__.remove(self.context)
     except Exception, err:  # catch Exception pylint: disable=W0703
         response = self._handle_unknown_exception(err.message,
                                                   get_traceback())
Exemple #6
0
 def test_get_traceback(self):
     try:
         raise RuntimeError('Something went wrong.')
     except RuntimeError:
         tb = get_traceback()
     self.assert_true(tb.startswith('Traceback (most recent call last)'))
     self.assert_true(
         tb.rstrip().endswith('RuntimeError: Something went wrong.'))
Exemple #7
0
 def _prepare_resource(self):
     try:
         self.__filter_collection()
         self.__order_collection()
         self.__slice_collection()
     except ValueError, err:
         result = self._handle_unknown_exception(err.message,
                                                 get_traceback())
 def _prepare_resource(self):
     try:
         self.__filter_collection()
         self.__order_collection()
         self.__slice_collection()
     except ValueError, err:
         result = self._handle_unknown_exception(err.message,
                                                 get_traceback())
Exemple #9
0
 def test_get_traceback(self):
     try:
         raise RuntimeError('Something went wrong.')
     except RuntimeError:
         tb = get_traceback()
     self.assert_true(tb.startswith('Traceback (most recent call last)'))
     self.assert_true(tb.rstrip().endswith(
                                 'RuntimeError: Something went wrong.'))
Exemple #10
0
 def __call__(self):
     self._logger.debug('DELETE Request received on %s' % self.request.url)
     try:
         self.context.__parent__.remove(self.context)
     except Exception as err: # catch Exception pylint: disable=W0703
         response = self._handle_unknown_exception(str(err),
                                                   get_traceback())
     else:
         response = self.request.get_response(HTTPOk())
     return response
Exemple #11
0
 def __call__(self):
     self._logger.debug('DELETE Request received on %s' % self.request.url)
     is_terminal = self.request.view_name != ''
     if not is_terminal:
         try:
             self.context.remove()
         except Exception as err: # catch Exception pylint: disable=W0703
             response = self._handle_unknown_exception(str(err),
                                                       get_traceback())
         else:
             response = self.request.get_response(HTTPOk())
     else:
         # Support for setting member attributes to None.
         attr = self.request.path.split('/')[-1]
         setattr(self.context, attr, None)
         response = self.request.get_response(HTTPOk())
     return response
Exemple #12
0
 def __call__(self):
     self._logger.debug('DELETE Request received on %s' % self.request.url)
     is_terminal = self.request.view_name != ''
     if not is_terminal:
         try:
             self.context.remove()
         except Exception as err:  # catch Exception pylint: disable=W0703
             response = self._handle_unknown_exception(
                 str(err), get_traceback())
         else:
             response = self.request.get_response(HTTPOk())
     else:
         # Support for setting member attributes to None.
         attr = self.request.path.split('/')[-1]
         setattr(self.context, attr, None)
         response = self.request.get_response(HTTPOk())
     return response
Exemple #13
0
 def __call__(self):
     self._logger.debug('Request URL: %s.', self.request.url)
     try:
         # If we use a representer to create the response, we can set up
         # load optimizers using the representer configuration for the
         # response MIME type.
         if self._convert_response:
             rpr_ctxt = self.__get_representer_context()
             with rpr_ctxt:
                 with LoadOptimizingContext(self.context,
                                            rpr_ctxt.configuration):
                     result = self.__call_view()
         else:
             result = self.__call_view()
     except HTTPError as http_exc:
         result = self.request.get_response(http_exc)
     except Exception as err:  # catch Exception pylint: disable=W0703
         result = self._handle_unknown_exception(str(err), get_traceback())
     return result
Exemple #14
0
 def __call__(self):
     self._logger.debug('Request URL: %s.', self.request.url)
     try:
         # If we use a representer to create the response, we can set up
         # load optimizers using the representer configuration for the
         # response MIME type.
         if self._convert_response:
             rpr_ctxt = self.__get_representer_context()
             with rpr_ctxt:
                 with LoadOptimizingContext(self.context,
                                            rpr_ctxt.configuration):
                     result = self.__call_view()
         else:
             result = self.__call_view()
     except HTTPError as http_exc:
         result = self.request.get_response(http_exc)
     except Exception as err: # catch Exception pylint: disable=W0703
         result = self._handle_unknown_exception(str(err),
                                                 get_traceback())
     return result
Exemple #15
0
 def _prepare_resource(self):
     try:
         self.__filter_collection()
         self.__order_collection()
         self.__slice_collection()
     except ValueError as err:
         result = self._handle_unknown_exception(err.args[0],
                                                 get_traceback())
     else:
         needs_default_order = self.context.order is None
         if needs_default_order:
             # Make sure we have defined an ordering on the collection
             # to guarantee an order on the result set. This should not
             # be reflected in the links' URLs.
             self.context.order = deepcopy(self.context.default_order)
         # Pre-load the collection. This allows us to perform
         # optimizations in the backend.
         self.context.load()
         # Build batch links.
         batch = self.__create_batch()
         self_link = Link(self.context, 'self', self.context.title)
         self.context.add_link(self_link)
         if batch.index > 0:
             first_link = self.__create_nav_link(batch.first, 'first',
                                                 not needs_default_order)
             self.context.add_link(first_link)
         if not batch.previous is None:
             prev_link = self.__create_nav_link(batch.previous, 'previous',
                                                not needs_default_order)
             self.context.add_link(prev_link)
         if not batch.next is None:
             next_link = self.__create_nav_link(batch.next, 'next',
                                                not needs_default_order)
             self.context.add_link(next_link)
         if not batch.index == batch.number - 1:
             last_link = self.__create_nav_link(batch.last, 'last',
                                                not needs_default_order)
             self.context.add_link(last_link)
         result = self.context
     return result
Exemple #16
0
 def __call__(self):
     self._logger.debug('Request received on %s' % self.request.url)
     self._logger.debug('Request body:\n%s' % self.request.body)
     if len(self.request.body) == 0:
         # Empty body - return 400 Bad Request.
         response = self._handle_empty_body()
     else:
         checker = ViewUserMessageChecker()
         try:
             with UserMessageHandlingContextManager(checker):
                 data = self._extract_request_data()
             if not checker.vote is True:
                 response = checker.create_307_response()
             else:
                 with UserMessageHandlingContextManager(checker):
                     response = self._process_request_data(data)
                 if not checker.vote is True:
                     response = checker.create_307_response()
         except HTTPError, err:
             response = self.request.get_response(err)
         except Exception, err: # catch Exception pylint: disable=W0703
             response = self._handle_unknown_exception(err.message,
                                                       get_traceback())
Exemple #17
0
 def __call__(self):
     self._logger.debug('Request received on %s' % self.request.url)
     self._logger.debug('Request body:\n%s' % self.request.body)
     if len(self.request.body) == 0:
         # Empty body - return 400 Bad Request.
         response = self._handle_empty_body()
     else:
         checker = ViewUserMessageChecker()
         try:
             with UserMessageHandlingContextManager(checker):
                 data = self._extract_request_data()
             if not checker.vote is True:
                 response = checker.create_307_response()
             else:
                 with UserMessageHandlingContextManager(checker):
                     response = self._process_request_data(data)
                 if not checker.vote is True:
                     response = checker.create_307_response()
         except HTTPError, err:
             response = self.request.get_response(err)
         except Exception, err:  # catch Exception pylint: disable=W0703
             response = self._handle_unknown_exception(
                 err.message, get_traceback())