๓ ฟ๖Yc@@sำdZddlmZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZdd lmZydd lmZWn!ek rลdd lmZnXdd lmZdd lmZmZddlmZddlmZm Z m!Z!ddl"m#Z#ddl$m%Z%m&Z&m'Z'ddl(m)Z)ddl*m+Z+dZ,edkr‚d„Z-n d„Z-de.fd„ƒYZ/d„Z0e)d„ƒZ1defd„ƒYZ2dS( sด raven.contrib.django.client ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. i(tabsolute_importN(tVERSION(tsettings(tSuspiciousOperation(t HttpRequest(tTemplateSyntaxError(tMultiValueDict(tOrigin(t LoaderOrigin(tClient(tget_data_from_templatetget_host(tSentryMiddleware(t string_typest binary_typet iterlists(t RouteResolver(t get_headerst get_environt get_client_ip(tonce(t breadcrumbst DjangoClientii cC@s |jƒS(N(tis_authenticated(t request_user((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR*scC@s|jS(N(R(R((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR-st_FormatConvertercB@seZd„Zd„ZRS(cC@s||_g|_dS(N(t param_mappingtparams(tselfR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt__init__3s cC@s |jj|jj|ƒƒdS(Ns%s(RtappendRtget(Rtval((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt __getitem__7s(t__name__t __module__RR!(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR1s cC@s g}t|tƒrFt|ƒ}|r=||}|j}qFd }nxน|pRd D]ซ}|dkru|jdƒqSt|tƒr๋t|tƒrจ|jddƒ}nt |ƒdkrห|d d}n|jd|j ddƒƒqS|jt |ƒƒqSW||fS( NtNULLsutf-8treplaceiuโ€ฆs'%s't's''((( t isinstancetdictRRtNoneRR RtdecodetlenR%trepr(tsqlRtrvtconvtparam((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt format_sql<s$      c@sลyddlm}Wn!tk r7ddlm}nXy|j‰|j‰Wntk rbdSXd„‰‡fd†‰d‡‡fd†}‡‡fd†}||_||_tj dƒdS( s9If installed this causes Django's queries to be captured.i(t CursorWrapperNc@s&‡‡fd†}tjd|ƒdS(Nc@sMtˆˆƒ\}}|r.|t|ƒ}n|ji|d6dd6ƒdS(Ntmessagetquerytcategory(R1ttupletupdate(tdatatreal_sqlt real_params(RR-(sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt processorgs  R;(Rtrecord(tvendortaliaststarttdurationR-RR;((RR-sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt record_sqlfs c@s>tjƒ|}x'|D]}ˆ||||||ƒqWdS(N(ttime(R=R>R?R-t param_listR@R(RA(sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pytrecord_many_sqlss c @s`tjƒ}zˆ|||ƒSWdˆ|jjt|jddƒ|tjƒ|||ƒXdS(NR>(RBtdbR=tgetattrR)(RR-RR?(t real_executeRA(sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pytexecutexs  c @sStjƒ}zˆ|||ƒSWdˆ|jjt|jddƒ|||ƒXdS(NR>(RBRER=RFR)(RR-RCR?(treal_executemanyRD(sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt executemany€s  sdjango.db.backends( tdjango.db.backends.utilsR2t ImportErrortdjango.db.backends.utilRHRJtAttributeErrorR)Rt ignore_logger(R2RHRJ((RGRIRDRAsL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pytinstall_sql_hookVs        cB@sbeZejdƒZeƒZd„Zd„Zd„Z d„Z d„Z dd„Z d„ZRS( ssentry.errors.client.djangocO@s<|jdtƒ}tj|||Ž|r8|jƒndS(NRP(tpoptTrueR RRP(RtargstkwargsRP((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR‘scC@s tƒdS(N(RP(R((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyRP—scC@sืit|jƒd6}t|ddƒ}|dkr8|Sy‡t|ƒ}|sQ|S|j|dcs@s=|]3\}}|t|ƒdkr.|dn|fVqdS(iiN(R+(t.0tktv((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pys ุstmethodturlt QUERY_STRINGt query_stringR8tcookiestheaderstenvR_(ReRf(Rbtbuild_absolute_uriRt is_secureR tpathRjtbodyR^t raw_post_datatPOSTR'RR(RR)R[R7RtCOOKIESRR(RR_tresultturitschemethostR8tenviron((sL/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pytget_data_from_requestธsJ          !   c O@stt|ƒj||Ž}xN|j|ƒD]=}|jdƒ}|sLq+n|jdƒr+t|ds:       7