Submit
Path:
~
/
/
proc
/
thread-self
/
root
/
opt
/
alt
/
python35
/
lib
/
python3.5
/
site-packages
/
raven
/
contrib
/
zope
/
__pycache__
/
File Content:
__init__.cpython-35.pyc
��Y% � @ s� d Z d d l m Z d d l m Z m Z m Z d d l m Z d d l m Z d d l Z d d l m Z d d l m Z e j e � Z Gd d � d e � Z Gd d � d e � Z d S) z� raven.contrib.zope ~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2013 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. � )�absolute_import)�getouterframes�currentframe�getinnerframes)� SentryHandler)�FactoryN)�nobody)�iter_stack_framesc @ s4 e Z d Z d d � Z d d � Z d d � Z d S)�ZopeSentryHandlerFactoryc C s | j j S)N)�section�level)�self� r �/__init__.py�getLevel s z!ZopeSentryHandlerFactory.getLevelc C s t | j j � S)N)�ZopeSentryHandlerr �__dict__)r r r r �create s zZopeSentryHandlerFactory.createc C s t j | � | | _ d S)N)r �__init__r )r r r r r r s z!ZopeSentryHandlerFactory.__init__N)�__name__� __module__�__qualname__r r r r r r r r s r c sF e Z d Z d Z � f d d � Z d d � Z � f d d � Z � S)r z� Zope unfortunately eats the stack trace information. To get the stack trace information and other useful information from the request object, this class looks into the different stack frames when the emit method is invoked. c s? t t | � j | | � | j d t j � } | j | � d S)Nr )�superr r �get�logging�ERROR�setLevel)r �args�kwr )� __class__r r r * s zZopeSentryHandler.__init__c C s | j d k p | j j d � S)NZraven� sentry.errors�raven.)r r! )�name� startswith)r �recordr r r � can_record/ s zZopeSentryHandler.can_recordc s� | j t j k r�| j | � r�d } d } x� t t � � D]� } | d } | s� | j j d d � } | s� | j j d d � } y t | d d � } Wn t k r� d } Yn X| s� | j j d d � } t | d � s� d } | r= | r= Pq= W| r| | _ t t | d � � | _ | r�yV| j j � } | j j d � | j j � } | j j | � t d | j d | j � d | j d | j j d d � d | � } d | d k r�d | d k r�| d d | d d <d | d k r�| d d | d <t | d | � | j d d � } | d k rb| t k rbd | j � d | j d � pYd i } n i } t | d | � Wn+ t t f k r�t j d d d �Yn Xt t | � j! | � S)Nr �requestr �exc_info�__getitem__� ZheadersZurl�method�hostZREMOTE_ADDR� �dataZHTTP_USER_AGENTz User-AgentZQUERY_STRINGZquery_stringZAUTHENTICATED_USER�idZemail�userz#Could not extract data from requestT)"�levelnor r r% r r �f_localsr �getattr�RuntimeError�hasattrr'