Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="robots" content="NONE,NOARCHIVE">
- <title>AttributeError at /v1/savedreplies/1</title>
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; }
- h2 { margin-bottom:.8em; }
- h2 span { font-size:80%; color:#666; font-weight:normal; }
- h3 { margin:1em 0 .5em 0; }
- h4 { margin:0 0 .5em 0; font-weight: normal; }
- code, pre { font-size: 100%; white-space: pre-wrap; }
- table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
- tbody td, tbody th { vertical-align:top; padding:2px 3px; }
- thead th {
- padding:1px 6px 1px 3px; background:#fefefe; text-align:left;
- font-weight:normal; font-size:11px; border:1px solid #ddd;
- }
- tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
- table.vars { margin:5px 0 2px 40px; }
- table.vars td, table.req td { font-family:monospace; }
- table td.code { width:100%; }
- table td.code pre { overflow:hidden; }
- table.source th { color:#666; }
- table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }
- ul.traceback { list-style-type:none; color: #222; }
- ul.traceback li.frame { padding-bottom:1em; color:#666; }
- ul.traceback li.user { background-color:#e0e0e0; color:#000 }
- div.context { padding:10px 0; overflow:hidden; }
- div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }
- div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; padding-left: 2px; }
- div.context ol li pre { display:inline; }
- div.context ol.context-line li { color:#505050; background-color:#dfdfdf; padding: 3px 2px; }
- div.context ol.context-line li span { position:absolute; right:32px; }
- .user div.context ol.context-line li { background-color:#bbb; color:#000; }
- .user div.context ol li { color:#666; }
- div.commands { margin-left: 40px; }
- div.commands a { color:#555; text-decoration:none; }
- .user div.commands a { color: black; }
- #summary { background: #ffc; }
- #summary h2 { font-weight: normal; color: #666; }
- #explanation { background:#eee; }
- #template, #template-not-exist { background:#f6f6f6; }
- #template-not-exist ul { margin: 0 0 10px 20px; }
- #template-not-exist .postmortem-section { margin-bottom: 3px; }
- #unicode-hint { background:#eee; }
- #traceback { background:#eee; }
- #requestinfo { background:#f6f6f6; padding-left:120px; }
- #summary table { border:none; background:transparent; }
- #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }
- #requestinfo h3 { margin-bottom:-1em; }
- .error { background: #ffc; }
- .specific { color:#cc3300; font-weight:bold; }
- h2 span.commands { font-size:.7em;}
- span.commands a:link {color:#5E5694;}
- pre.exception_value { font-family: sans-serif; color: #666; font-size: 1.5em; margin: 10px 0 10px 0; }
- .append-bottom { margin-bottom: 10px; }
- </style>
- <script type="text/javascript">
- //<!--
- function getElementsByClassName(oElm, strTagName, strClassName){
- // Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com
- var arrElements = (strTagName == "*" && document.all)? document.all :
- oElm.getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- strClassName = strClassName.replace(/\-/g, "\\-");
- var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
- var oElement;
- for(var i=0; i<arrElements.length; i++){
- oElement = arrElements[i];
- if(oRegExp.test(oElement.className)){
- arrReturnElements.push(oElement);
- }
- }
- return (arrReturnElements)
- }
- function hideAll(elems) {
- for (var e = 0; e < elems.length; e++) {
- elems[e].style.display = 'none';
- }
- }
- window.onload = function() {
- hideAll(getElementsByClassName(document, 'table', 'vars'));
- hideAll(getElementsByClassName(document, 'ol', 'pre-context'));
- hideAll(getElementsByClassName(document, 'ol', 'post-context'));
- hideAll(getElementsByClassName(document, 'div', 'pastebin'));
- }
- function toggle() {
- for (var i = 0; i < arguments.length; i++) {
- var e = document.getElementById(arguments[i]);
- if (e) {
- e.style.display = e.style.display == 'none' ? 'block': 'none';
- }
- }
- return false;
- }
- function varToggle(link, id) {
- toggle('v' + id);
- var s = link.getElementsByTagName('span')[0];
- var uarr = String.fromCharCode(0x25b6);
- var darr = String.fromCharCode(0x25bc);
- s.textContent = s.textContent == uarr ? darr : uarr;
- return false;
- }
- function switchPastebinFriendly(link) {
- s1 = "Switch to copy-and-paste view";
- s2 = "Switch back to interactive view";
- link.textContent = link.textContent.trim() == s1 ? s2: s1;
- toggle('browserTraceback', 'pastebinTraceback');
- return false;
- }
- //-->
- </script>
- </head>
- <body>
- <div id="summary">
- <h1>AttributeError at /v1/savedreplies/1</h1>
- <pre class="exception_value">'function' object has no attribute 'app'</pre>
- <table class="meta">
- <tr>
- <th>Request Method:</th>
- <td>DELETE</td>
- </tr>
- <tr>
- <th>Request URL:</th>
- <td>http://beta-01.carrotquest.io/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f</td>
- </tr>
- <tr>
- <th>Django Version:</th>
- <td>1.11.1</td>
- </tr>
- <tr>
- <th>Exception Type:</th>
- <td>AttributeError</td>
- </tr>
- <tr>
- <th>Exception Value:</th>
- <td><pre>'function' object has no attribute 'app'</pre></td>
- </tr>
- <tr>
- <th>Exception Location:</th>
- <td>/home/web/cqapi/messages/views.py in <lambda>, line 770</td>
- </tr>
- <tr>
- <th>Python Executable:</th>
- <td>/home/web/venv/bin/python3</td>
- </tr>
- <tr>
- <th>Python Version:</th>
- <td>3.5.2</td>
- </tr>
- <tr>
- <th>Python Path:</th>
- <td><pre>['/home/web/cqapi',
- '/home/web/venv/bin',
- '/home/web/cqapi',
- '/home/web/venv/lib/python35.zip',
- '/home/web/venv/lib/python3.5',
- '/home/web/venv/lib/python3.5/plat-x86_64-linux-gnu',
- '/home/web/venv/lib/python3.5/lib-dynload',
- '/usr/lib/python3.5',
- '/usr/lib/python3.5/plat-x86_64-linux-gnu',
- '/home/web/venv/lib/python3.5/site-packages',
- '/home/web/cqapi']</pre></td>
- </tr>
- <tr>
- <th>Server time:</th>
- <td>Mon, 15 May 2017 10:15:55 +0000</td>
- </tr>
- </table>
- </div>
- <div id="traceback">
- <h2>Traceback <span class="commands"><a href="#" onclick="return switchPastebinFriendly(this);">
- Switch to copy-and-paste view</a></span>
- </h2>
- <div id="browserTraceback">
- <ul class="traceback">
- <li class="frame django">
- <code>/home/web/venv/lib/python3.5/site-packages/django/core/handlers/exception.py</code> in <code>inner</code>
- <div class="context" id="c140509326703496">
- <ol start="34" class="pre-context" id="pre140509326703496">
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> This decorator is automatically applied to all middleware to ensure that</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> no middleware leaks an exception and that the next middleware in the stack</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> can rely on getting a response instead of an exception.</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> """</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> @wraps(get_response, assigned=available_attrs(get_response))</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> def inner(request):</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> try:</pre></li>
- </ol>
- <ol start="41" class="context-line">
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre>
- response = get_response(request)</pre> <span>...</span></li></ol>
- <ol start='42' class="post-context" id="post140509326703496">
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> except Exception as exc:</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> response = response_for_exception(request, exc)</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> return response</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre> return inner</pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre></pre></li>
- <li onclick="toggle('pre140509326703496', 'post140509326703496')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509326703496')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509326703496">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>exc</td>
- <td class="code"><pre>AttributeError("'function' object has no attribute 'app'",)</pre></td>
- </tr>
- <tr>
- <td>get_response</td>
- <td class="code"><pre><bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7fcae3fff780>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: DELETE '/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/home/web/venv/lib/python3.5/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>
- <div class="context" id="c140509114962504">
- <ol start="180" class="pre-context" id="pre140509114962504">
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> break</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre></pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> try:</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> except Exception as e:</pre></li>
- </ol>
- <ol start="187" class="context-line">
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre>
- response = self.process_exception_by_middleware(e, request)</pre> <span>...</span></li></ol>
- <ol start='188' class="post-context" id="post140509114962504">
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre></pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> # Complain if the view returned None (a common error).</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> view_name = callback.__name__</pre></li>
- <li onclick="toggle('pre140509114962504', 'post140509114962504')"><pre> else: # CBV</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114962504')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114962504">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>callback</td>
- <td class="code"><pre><function saved_reply at 0x7fcae1934620></pre></td>
- </tr>
- <tr>
- <td>callback_args</td>
- <td class="code"><pre>('1',)</pre></td>
- </tr>
- <tr>
- <td>callback_kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>middleware_method</td>
- <td class="code"><pre><bound method DebugToolbarMiddleware.process_view of <utils.middleware.NonHtmlDebugToolbarMiddleware object at 0x7fcae3fff7f0>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: DELETE '/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'></pre></td>
- </tr>
- <tr>
- <td>resolver</td>
- <td class="code"><pre><RegexURLResolver 'cqapi.urls' (None:None) ^/></pre></td>
- </tr>
- <tr>
- <td>resolver_match</td>
- <td class="code"><pre>ResolverMatch(func=messages.views.saved_reply, args=('1',), kwargs={}, url_name=None, app_names=[], namespaces=[])</pre></td>
- </tr>
- <tr>
- <td>response</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7fcae3fff780></pre></td>
- </tr>
- <tr>
- <td>wrapped_callback</td>
- <td class="code"><pre><function saved_reply at 0x7fcae1934620></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/home/web/venv/lib/python3.5/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>
- <div class="context" id="c140509114931848">
- <ol start="178" class="pre-context" id="pre140509114931848">
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> if response:</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> break</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre></pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> try:</pre></li>
- </ol>
- <ol start="185" class="context-line">
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre>
- response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>...</span></li></ol>
- <ol start='186' class="post-context" id="post140509114931848">
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> except Exception as e:</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> response = self.process_exception_by_middleware(e, request)</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre></pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> # Complain if the view returned None (a common error).</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140509114931848', 'post140509114931848')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114931848')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114931848">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>callback</td>
- <td class="code"><pre><function saved_reply at 0x7fcae1934620></pre></td>
- </tr>
- <tr>
- <td>callback_args</td>
- <td class="code"><pre>('1',)</pre></td>
- </tr>
- <tr>
- <td>callback_kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>middleware_method</td>
- <td class="code"><pre><bound method DebugToolbarMiddleware.process_view of <utils.middleware.NonHtmlDebugToolbarMiddleware object at 0x7fcae3fff7f0>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: DELETE '/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'></pre></td>
- </tr>
- <tr>
- <td>resolver</td>
- <td class="code"><pre><RegexURLResolver 'cqapi.urls' (None:None) ^/></pre></td>
- </tr>
- <tr>
- <td>resolver_match</td>
- <td class="code"><pre>ResolverMatch(func=messages.views.saved_reply, args=('1',), kwargs={}, url_name=None, app_names=[], namespaces=[])</pre></td>
- </tr>
- <tr>
- <td>response</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7fcae3fff780></pre></td>
- </tr>
- <tr>
- <td>wrapped_callback</td>
- <td class="code"><pre><function saved_reply at 0x7fcae1934620></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/home/web/venv/lib/python3.5/site-packages/django/views/decorators/csrf.py</code> in <code>wrapped_view</code>
- <div class="context" id="c140509114931144">
- <ol start="51" class="pre-context" id="pre140509114931144">
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> """</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> Marks a view function as being exempt from the CSRF view protection.</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> """</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> # We could just do view_func.csrf_exempt = True, but decorators</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> # are nicer if they don't have side-effects, so we return a new</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> # function.</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> def wrapped_view(*args, **kwargs):</pre></li>
- </ol>
- <ol start="58" class="context-line">
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre>
- return view_func(*args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='59' class="post-context" id="post140509114931144">
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> wrapped_view.csrf_exempt = True</pre></li>
- <li onclick="toggle('pre140509114931144', 'post140509114931144')"><pre> return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114931144')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114931144">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>(<WSGIRequest: DELETE '/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'>,
- '1')</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>view_func</td>
- <td class="code"><pre><function WrappedAPIView at 0x7fcae1934598></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/home/web/venv/lib/python3.5/site-packages/django/views/generic/base.py</code> in <code>view</code>
- <div class="context" id="c140509114930632">
- <ol start="61" class="pre-context" id="pre140509114930632">
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> def view(request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> self = cls(**initkwargs)</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> if hasattr(self, 'get') and not hasattr(self, 'head'):</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> self.head = self.get</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> self.request = request</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> self.args = args</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> self.kwargs = kwargs</pre></li>
- </ol>
- <ol start="68" class="context-line">
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre>
- return self.dispatch(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='69' class="post-context" id="post140509114930632">
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> view.view_class = cls</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> view.view_initkwargs = initkwargs</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre></pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> # take name and docstring from class</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre> update_wrapper(view, cls, updated=())</pre></li>
- <li onclick="toggle('pre140509114930632', 'post140509114930632')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114930632')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114930632">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>('1',)</pre></td>
- </tr>
- <tr>
- <td>cls</td>
- <td class="code"><pre><class 'api.decorators.WrappedAPIView'></pre></td>
- </tr>
- <tr>
- <td>initkwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: DELETE '/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><api.decorators.WrappedAPIView object at 0x7fcad3e3c470></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/venv/lib/python3.5/site-packages/rest_framework/views.py</code> in <code>dispatch</code>
- <div class="context" id="c140509114932488">
- <ol start="476" class="pre-context" id="pre140509114932488">
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> self.http_method_not_allowed)</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> else:</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> handler = self.http_method_not_allowed</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre></pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> response = handler(request, *args, **kwargs)</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre></pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> except Exception as exc:</pre></li>
- </ol>
- <ol start="483" class="context-line">
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre>
- response = self.handle_exception(exc)</pre> <span>...</span></li></ol>
- <ol start='484' class="post-context" id="post140509114932488">
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre></pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> self.response = self.finalize_response(request, response, *args, **kwargs)</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> return self.response</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre></pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> def options(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140509114932488', 'post140509114932488')"><pre> """</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114932488')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114932488">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>('1',)</pre></td>
- </tr>
- <tr>
- <td>handler</td>
- <td class="code"><pre><bound method api_view.<locals>.decorator.<locals>.handler of <api.decorators.WrappedAPIView object at 0x7fcad3e3c470>></pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><rest_framework.request.Request object at 0x7fcad3ef42e8></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><api.decorators.WrappedAPIView object at 0x7fcad3e3c470></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/venv/lib/python3.5/site-packages/rest_framework/views.py</code> in <code>handle_exception</code>
- <div class="context" id="c140509114579016">
- <ol start="436" class="pre-context" id="pre140509114579016">
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre></pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> exception_handler = self.get_exception_handler()</pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre></pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> context = self.get_exception_handler_context()</pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> response = exception_handler(exc, context)</pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre></pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> if response is None:</pre></li>
- </ol>
- <ol start="443" class="context-line">
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre>
- self.raise_uncaught_exception(exc)</pre> <span>...</span></li></ol>
- <ol start='444' class="post-context" id="post140509114579016">
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre></pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> response.exception = True</pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> return response</pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre></pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> def raise_uncaught_exception(self, exc):</pre></li>
- <li onclick="toggle('pre140509114579016', 'post140509114579016')"><pre> if settings.DEBUG:</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114579016')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114579016">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>context</td>
- <td class="code"><pre>{'args': ('1',),
- 'kwargs': {},
- 'request': <rest_framework.request.Request object at 0x7fcad3ef42e8>,
- 'view': <api.decorators.WrappedAPIView object at 0x7fcad3e3c470>}</pre></td>
- </tr>
- <tr>
- <td>exc</td>
- <td class="code"><pre>AttributeError("'function' object has no attribute 'app'",)</pre></td>
- </tr>
- <tr>
- <td>exception_handler</td>
- <td class="code"><pre><function rest_framework_exception_handler at 0x7fcae1b126a8></pre></td>
- </tr>
- <tr>
- <td>response</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><api.decorators.WrappedAPIView object at 0x7fcad3e3c470></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/venv/lib/python3.5/site-packages/rest_framework/views.py</code> in <code>dispatch</code>
- <div class="context" id="c140509114552264">
- <ol start="473" class="pre-context" id="pre140509114552264">
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> # Get the appropriate handler method</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> if request.method.lower() in self.http_method_names:</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> handler = getattr(self, request.method.lower(),</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> self.http_method_not_allowed)</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> else:</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> handler = self.http_method_not_allowed</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre></pre></li>
- </ol>
- <ol start="480" class="context-line">
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre>
- response = handler(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='481' class="post-context" id="post140509114552264">
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre></pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> except Exception as exc:</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> response = self.handle_exception(exc)</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre></pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> self.response = self.finalize_response(request, response, *args, **kwargs)</pre></li>
- <li onclick="toggle('pre140509114552264', 'post140509114552264')"><pre> return self.response</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114552264')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114552264">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>('1',)</pre></td>
- </tr>
- <tr>
- <td>handler</td>
- <td class="code"><pre><bound method api_view.<locals>.decorator.<locals>.handler of <api.decorators.WrappedAPIView object at 0x7fcad3e3c470>></pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><rest_framework.request.Request object at 0x7fcad3ef42e8></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><api.decorators.WrappedAPIView object at 0x7fcad3e3c470></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/venv/lib/python3.5/site-packages/rest_framework/decorators.py</code> in <code>handler</code>
- <div class="context" id="c140509114938184">
- <ol start="45" class="pre-context" id="pre140509114938184">
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> assert isinstance(http_method_names, (list, tuple)), \</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> '@api_view expected a list of strings, received %s' % type(http_method_names).__name__</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre></pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> allowed_methods = set(http_method_names) | set(('options',))</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> WrappedAPIView.http_method_names = [method.lower() for method in allowed_methods]</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre></pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> def handler(self, *args, **kwargs):</pre></li>
- </ol>
- <ol start="52" class="context-line">
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre>
- return func(*args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='53' class="post-context" id="post140509114938184">
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre></pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> for method in http_method_names:</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> setattr(WrappedAPIView, method.lower(), handler)</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre></pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> WrappedAPIView.__name__ = func.__name__</pre></li>
- <li onclick="toggle('pre140509114938184', 'post140509114938184')"><pre> WrappedAPIView.__module__ = func.__module__</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114938184')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114938184">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>(<rest_framework.request.Request object at 0x7fcad3ef42e8>, '1')</pre></td>
- </tr>
- <tr>
- <td>func</td>
- <td class="code"><pre><function api_view.<locals>._view.<locals>.__view at 0x7fcae1934510></pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><api.decorators.WrappedAPIView object at 0x7fcad3e3c470></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/cqapi/api/decorators.py</code> in <code>__view</code>
- <div class="context" id="c140509114940744">
- <ol start="138" class="pre-context" id="pre140509114940744">
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> # Check token types</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> raise PermissionDeniedError()</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> else:</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> # Подстановка параметров URL $self</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> request, args, kwargs = process_params(request, *args, **kwargs)</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre></pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> # Выполняем обернутую функцию</pre></li>
- </ol>
- <ol start="145" class="context-line">
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre>
- response = f(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='146' class="post-context" id="post140509114940744">
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre></pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> # Преобразуем вывод функцииы</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> response = format_view_response(response)</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre></pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> except VisibleError as ex:</pre></li>
- <li onclick="toggle('pre140509114940744', 'post140509114940744')"><pre> # Перехватываем стандартные исключения и переводим их в APIResponse</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114940744')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114940744">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>allowed_tokens</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>args</td>
- <td class="code"><pre>['1']</pre></td>
- </tr>
- <tr>
- <td>check_nonce</td>
- <td class="code"><pre><function api_view.<locals>.check_nonce at 0x7fcae1932d90></pre></td>
- </tr>
- <tr>
- <td>cors_credentials</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>f</td>
- <td class="code"><pre><function saved_reply at 0x7fcae1934378></pre></td>
- </tr>
- <tr>
- <td>format_view_response</td>
- <td class="code"><pre><function api_view.<locals>.format_view_response at 0x7fcae1934268></pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>mark_newrelic_transaction</td>
- <td class="code"><pre><function api_view.<locals>.mark_newrelic_transaction at 0x7fcae1932d08></pre></td>
- </tr>
- <tr>
- <td>process_params</td>
- <td class="code"><pre><function api_view.<locals>.process_params at 0x7fcae19341e0></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><rest_framework.request.Request object at 0x7fcad3ef42e8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/cqapi/messages/views.py</code> in <code>saved_reply</code>
- <div class="context" id="c140509114938696">
- <ol start="763" class="pre-context" id="pre140509114938696">
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre> reply = SavedReply.objects.create(app=app, body=body)</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre> return {'id': reply.id}</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre></pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre></pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre>@api_view(methods='DELETE')</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre>def saved_reply(request, saved_reply_id):</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre> reply = lookup_model(SavedReply, saved_reply_id)</pre></li>
- </ol>
- <ol start="770" class="context-line">
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre>
- check_perm(lambda: request.auth.check_scope(PermissionScope.APP_BASIC_WRITE, saved_reply.app))</pre> <span>...</span></li></ol>
- <ol start='771' class="post-context" id="post140509114938696">
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre> reply.delete()</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre></pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre></pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre>@api_view(methods='GET')</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre>def app_message_templates(request, app_id):</pre></li>
- <li onclick="toggle('pre140509114938696', 'post140509114938696')"><pre> app = lookup_model(App, app_id)</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114938696')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114938696">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>reply</td>
- <td class="code"><pre><SavedReply: SavedReply object></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><rest_framework.request.Request object at 0x7fcad3ef42e8></pre></td>
- </tr>
- <tr>
- <td>saved_reply_id</td>
- <td class="code"><pre>'1'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/cqapi/api/utils.py</code> in <code>check_perm</code>
- <div class="context" id="c140509114940424">
- <ol start="174" class="pre-context" id="pre140509114940424">
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> Проверяет наличие permission-а</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> :param func: Функция-условие, которая должна возвращать boolean.</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> :param error_message: Сообщение об ошибке, если условие не выполнилось</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> :return: None</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> """</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> assert isinstance(func, types.FunctionType), "func parameter must be a function"</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre></pre></li>
- </ol>
- <ol start="181" class="context-line">
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre>
- if not func():</pre> <span>...</span></li></ol>
- <ol start='182' class="post-context" id="post140509114940424">
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> raise PermissionDeniedError(error_message)</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre></pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre></pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre>def call_request_method(request, local_vars, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> """</pre></li>
- <li onclick="toggle('pre140509114940424', 'post140509114940424')"><pre> В текущий момент большинство view построена так, что в конце постоянно необходимо вызывать нужный метод,</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114940424')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114940424">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>error_message</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>func</td>
- <td class="code"><pre><function saved_reply.<locals>.<lambda> at 0x7fcad3e61ea0></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/home/web/cqapi/messages/views.py</code> in <code><lambda></code>
- <div class="context" id="c140509114950280">
- <ol start="763" class="pre-context" id="pre140509114950280">
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre> reply = SavedReply.objects.create(app=app, body=body)</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre> return {'id': reply.id}</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre></pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre></pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre>@api_view(methods='DELETE')</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre>def saved_reply(request, saved_reply_id):</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre> reply = lookup_model(SavedReply, saved_reply_id)</pre></li>
- </ol>
- <ol start="770" class="context-line">
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre>
- check_perm(lambda: request.auth.check_scope(PermissionScope.APP_BASIC_WRITE, saved_reply.app))</pre> <span>...</span></li></ol>
- <ol start='771' class="post-context" id="post140509114950280">
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre> reply.delete()</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre></pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre></pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre>@api_view(methods='GET')</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre>def app_message_templates(request, app_id):</pre></li>
- <li onclick="toggle('pre140509114950280', 'post140509114950280')"><pre> app = lookup_model(App, app_id)</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140509114950280')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140509114950280">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>request</td>
- <td class="code"><pre><rest_framework.request.Request object at 0x7fcad3ef42e8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- </ul>
- </div>
- <form action="http://dpaste.com/" name="pasteform" id="pasteform" method="post">
- <div id="pastebinTraceback" class="pastebin">
- <input type="hidden" name="language" value="PythonConsole">
- <input type="hidden" name="title"
- value="AttributeError at /v1/savedreplies/1">
- <input type="hidden" name="source" value="Django Dpaste Agent">
- <input type="hidden" name="poster" value="Django">
- <textarea name="content" id="traceback_area" cols="140" rows="25">
- Environment:
- Request Method: DELETE
- Request URL: http://beta-01.carrotquest.io/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f
- Django Version: 1.11.1
- Python Version: 3.5.2
- Installed Applications:
- ('cacheops',
- 'corsheaders',
- 'django.contrib.auth',
- 'django.contrib.admin',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.postgres',
- 'rest_framework',
- 'api',
- 'apps',
- 'users',
- 'utils',
- 'panel',
- 'events',
- 'messages',
- 'integrations',
- 'billing',
- 'analytics',
- 'django.contrib.staticfiles',
- 'debug_toolbar')
- Installed Middleware:
- ('corsheaders.middleware.CorsMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'utils.middleware.CORSMiddleware',
- 'utils.middleware.ExceptionLoggingMiddleware',
- 'utils.middleware.NonHtmlDebugToolbarMiddleware')
- Traceback:
- File "/home/web/venv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
- 41. response = get_response(request)
- File "/home/web/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
- 187. response = self.process_exception_by_middleware(e, request)
- File "/home/web/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
- 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
- File "/home/web/venv/lib/python3.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
- 58. return view_func(*args, **kwargs)
- File "/home/web/venv/lib/python3.5/site-packages/django/views/generic/base.py" in view
- 68. return self.dispatch(request, *args, **kwargs)
- File "/home/web/venv/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
- 483. response = self.handle_exception(exc)
- File "/home/web/venv/lib/python3.5/site-packages/rest_framework/views.py" in handle_exception
- 443. self.raise_uncaught_exception(exc)
- File "/home/web/venv/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
- 480. response = handler(request, *args, **kwargs)
- File "/home/web/venv/lib/python3.5/site-packages/rest_framework/decorators.py" in handler
- 52. return func(*args, **kwargs)
- File "/home/web/cqapi/api/decorators.py" in __view
- 145. response = f(request, *args, **kwargs)
- File "/home/web/cqapi/messages/views.py" in saved_reply
- 770. check_perm(lambda: request.auth.check_scope(PermissionScope.APP_BASIC_WRITE, saved_reply.app))
- File "/home/web/cqapi/api/utils.py" in check_perm
- 181. if not func():
- File "/home/web/cqapi/messages/views.py" in <lambda>
- 770. check_perm(lambda: request.auth.check_scope(PermissionScope.APP_BASIC_WRITE, saved_reply.app))
- Exception Type: AttributeError at /v1/savedreplies/1
- Exception Value: 'function' object has no attribute 'app'
- </textarea>
- <br><br>
- <input type="submit" value="Share this traceback on a public website">
- </div>
- </form>
- </div>
- <div id="requestinfo">
- <h2>Request information</h2>
- <h3 id="user-info">USER</h3>
- <p>None</p>
- <h3 id="get-info">GET</h3>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>auth_token</td>
- <td class="code"><pre>'panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'</pre></td>
- </tr>
- </tbody>
- </table>
- <h3 id="post-info">POST</h3>
- <p>No POST data</p>
- <h3 id="files-info">FILES</h3>
- <p>No FILES data</p>
- <h3 id="cookie-info">COOKIES</h3>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>carrotquest_realtime_services_transport</td>
- <td class="code"><pre>'wss'</pre></td>
- </tr>
- <tr>
- <td>_ga</td>
- <td class="code"><pre>'GA1.2.2104518999.1493290227'</pre></td>
- </tr>
- <tr>
- <td>_gid</td>
- <td class="code"><pre>'GA1.2.330950822.1494829717'</pre></td>
- </tr>
- <tr>
- <td>_ym_isad</td>
- <td class="code"><pre>'2'</pre></td>
- </tr>
- <tr>
- <td>_ym_uid</td>
- <td class="code"><pre>'1493290227993168218'</pre></td>
- </tr>
- <tr>
- <td>carrotquest_auth_token</td>
- <td class="code"><pre>'user.43578361.100-675e2c8860097948c325b680f4da.5d77ad865c7b07230974f4bf1f88cd43493f59dbbc85464d'</pre></td>
- </tr>
- <tr>
- <td>carrotquest_uid</td>
- <td class="code"><pre>'43578361'</pre></td>
- </tr>
- <tr>
- <td>carrotquest_auth_token_panel</td>
- <td class="code"><pre>'panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'</pre></td>
- </tr>
- </tbody>
- </table>
- <h3 id="meta-info">META</h3>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>CONTENT_LENGTH</td>
- <td class="code"><pre>'0'</pre></td>
- </tr>
- <tr>
- <td>CONTENT_TYPE</td>
- <td class="code"><pre>'application/x-www-form-urlencoded; charset=UTF-8'</pre></td>
- </tr>
- <tr>
- <td>HTTP_ACCEPT</td>
- <td class="code"><pre>'application/json, text/plain, */*'</pre></td>
- </tr>
- <tr>
- <td>HTTP_ACCEPT_ENCODING</td>
- <td class="code"><pre>'gzip, deflate, sdch, br'</pre></td>
- </tr>
- <tr>
- <td>HTTP_ACCEPT_LANGUAGE</td>
- <td class="code"><pre>'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4'</pre></td>
- </tr>
- <tr>
- <td>HTTP_CONNECTION</td>
- <td class="code"><pre>'close'</pre></td>
- </tr>
- <tr>
- <td>HTTP_COOKIE</td>
- <td class="code"><pre>('_ym_uid=1493290227993168218; carrotquest_realtime_services_transport=wss; '
- '_ga=GA1.2.2104518999.1493290227; _gid=GA1.2.330950822.1494829717; '
- '_ym_isad=2; carrotquest_uid=43578361; '
- 'carrotquest_auth_token=user.43578361.100-675e2c8860097948c325b680f4da.5d77ad865c7b07230974f4bf1f88cd43493f59dbbc85464d; '
- 'carrotquest_auth_token_panel=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f')</pre></td>
- </tr>
- <tr>
- <td>HTTP_HOST</td>
- <td class="code"><pre>'beta-01.carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>HTTP_ORIGIN</td>
- <td class="code"><pre>'https://beta-01.carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>HTTP_REFERER</td>
- <td class="code"><pre>'https://beta-01.carrotquest.io/panel/8/settings'</pre></td>
- </tr>
- <tr>
- <td>HTTP_USER_AGENT</td>
- <td class="code"><pre>('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '
- 'Chrome/58.0.3029.110 Safari/537.36')</pre></td>
- </tr>
- <tr>
- <td>HTTP_X_CQ</td>
- <td class="code"><pre>'1234'</pre></td>
- </tr>
- <tr>
- <td>HTTP_X_FORWARDED_FOR</td>
- <td class="code"><pre>'89.250.209.83'</pre></td>
- </tr>
- <tr>
- <td>PATH_INFO</td>
- <td class="code"><pre>'/v1/savedreplies/1'</pre></td>
- </tr>
- <tr>
- <td>QUERY_STRING</td>
- <td class="code"><pre>'auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'</pre></td>
- </tr>
- <tr>
- <td>RAW_URI</td>
- <td class="code"><pre>'/v1/savedreplies/1?auth_token=panel.23.9645444fefa4eafe3889ba7ae358d2c1eacec35a3796185f'</pre></td>
- </tr>
- <tr>
- <td>REMOTE_ADDR</td>
- <td class="code"><pre>"b''"</pre></td>
- </tr>
- <tr>
- <td>REQUEST_METHOD</td>
- <td class="code"><pre>'DELETE'</pre></td>
- </tr>
- <tr>
- <td>SCRIPT_NAME</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>SERVER_NAME</td>
- <td class="code"><pre>'beta-01.carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>SERVER_PORT</td>
- <td class="code"><pre>'80'</pre></td>
- </tr>
- <tr>
- <td>SERVER_PROTOCOL</td>
- <td class="code"><pre>'HTTP/1.0'</pre></td>
- </tr>
- <tr>
- <td>SERVER_SOFTWARE</td>
- <td class="code"><pre>'gunicorn/19.7.1'</pre></td>
- </tr>
- <tr>
- <td>gunicorn.socket</td>
- <td class="code"><pre><socket.socket fd=13, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0, laddr=/home/web/run/gunicorn.sock></pre></td>
- </tr>
- <tr>
- <td>wsgi.errors</td>
- <td class="code"><pre><gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7fcad3e3cda0></pre></td>
- </tr>
- <tr>
- <td>wsgi.file_wrapper</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>wsgi.input</td>
- <td class="code"><pre><gunicorn.http.body.Body object at 0x7fcad3e3c588></pre></td>
- </tr>
- <tr>
- <td>wsgi.multiprocess</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>wsgi.multithread</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>wsgi.run_once</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>wsgi.url_scheme</td>
- <td class="code"><pre>'http'</pre></td>
- </tr>
- <tr>
- <td>wsgi.version</td>
- <td class="code"><pre>(1, 0)</pre></td>
- </tr>
- </tbody>
- </table>
- <h3 id="settings-info">Settings</h3>
- <h4>Using settings module <code>cqapi.settings</code></h4>
- <table class="req">
- <thead>
- <tr>
- <th>Setting</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>ABSOLUTE_URL_OVERRIDES</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>ADMINS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>ALLOWED_HOSTS</td>
- <td class="code"><pre>'*'</pre></td>
- </tr>
- <tr>
- <td>ANALYTICS_SCHEDULE</td>
- <td class="code"><pre>{'analytics_update_billing_stats': {'schedule': datetime.timedelta(0, 20),
- 'task': 'analytics.tasks.update_billing_stats'},
- 'analytics_update_conversations_daily_stats': {'schedule': datetime.timedelta(0, 30),
- 'task': 'analytics.tasks.update_daily_conversations_stats'},
- 'analytics_update_events_daily_stats': {'schedule': datetime.timedelta(0, 55),
- 'task': 'analytics.tasks.update_events_daily_stats'},
- 'analytics_update_replies_by_hour_stats': {'schedule': datetime.timedelta(0, 30),
- 'task': 'analytics.tasks.update_replies_by_hour_stats'},
- 'update_conversation_tags_daily_stats': {'schedule': datetime.timedelta(0, 30),
- 'task': 'analytics.tasks.update_conversation_tags_daily_stats'}}</pre></td>
- </tr>
- <tr>
- <td>APPEND_SLASH</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>AUTHENTICATION_BACKENDS</td>
- <td class="code"><pre>('django.contrib.auth.backends.ModelBackend',)</pre></td>
- </tr>
- <tr>
- <td>AUTH_PASSWORD_VALIDATORS</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AUTH_USER_MODEL</td>
- <td class="code"><pre>'auth.User'</pre></td>
- </tr>
- <tr>
- <td>AWS_ACCESS_KEY_ID</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AWS_LAMBDA_ACCESS_KEY_ID</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AWS_LAMBDA_SECRET_ACCESS_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AWS_REDSHIFT_PASSWORD</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AWS_REDSHIFT_S3_ACCESS_KEY_ID</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AWS_REDSHIFT_S3_ACCESS_KEY_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>AWS_REDSHIFT_USER</td>
- <td class="code"><pre>'uploader'</pre></td>
- </tr>
- <tr>
- <td>AWS_SECRET_ACCESS_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>BASE_DIR</td>
- <td class="code"><pre>'/home/web/cqapi'</pre></td>
- </tr>
- <tr>
- <td>BEEFREE_CLIENT_ID</td>
- <td class="code"><pre>'f738d9c3-4af3-4d54-b380-1952f6adf9a8'</pre></td>
- </tr>
- <tr>
- <td>BEEFREE_CLIENT_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>BIGQUERY_DATASET_ID</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>BIGQUERY_KEY_FILE</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>BIGQUERY_PROJECT_ID</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>BROKER_URL</td>
- <td class="code"><pre>'amqp://django_user2:aRdev25!@127.0.0.1//'</pre></td>
- </tr>
- <tr>
- <td>CACHEOPS</td>
- <td class="code"><pre>{'*.*': {'db_agnostic': False, 'ops': (), 'timeout': 1800},
- 'api.authtoken': '********************',
- 'apps.app': {'db_agnostic': False, 'ops': 'get', 'timeout': 1800},
- 'apps.settings': {'db_agnostic': False, 'ops': 'get', 'timeout': 1800},
- 'auth.user': {'db_agnostic': False, 'ops': ('fetch', 'get'), 'timeout': 1800},
- 'events.autoevent': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 3600},
- 'events.event': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 300},
- 'events.eventtype': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'integrations.integration': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1200},
- 'messages.conversation': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'messages.conversationpart': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'messages.inboundemail': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'messages.message': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'messages.messagetemplate': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'messages.savedreply': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'messages.tags': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'panel.djangouserprofile': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 1800},
- 'users.user': {'db_agnostic': False, 'ops': ('fetch', 'get'), 'timeout': 1800},
- 'users.userappauth': {'db_agnostic': False,
- 'ops': ('fetch', 'get'),
- 'timeout': 86400}}</pre></td>
- </tr>
- <tr>
- <td>CACHEOPS_REDIS</td>
- <td class="code"><pre>{'db': 3, 'host': '127.0.0.1', 'port': 6379, 'socket_timeout': 3}</pre></td>
- </tr>
- <tr>
- <td>CACHES</td>
- <td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</pre></td>
- </tr>
- <tr>
- <td>CACHE_MIDDLEWARE_ALIAS</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- <tr>
- <td>CACHE_MIDDLEWARE_KEY_PREFIX</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>CACHE_MIDDLEWARE_SECONDS</td>
- <td class="code"><pre>600</pre></td>
- </tr>
- <tr>
- <td>CARROTQUEST_API_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>CARROTQUEST_API_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>CARROTQUEST_USER_AUTH_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>CELERYBEAT_SCHEDULE</td>
- <td class="code"><pre>{'analytics_update_billing_stats': {'schedule': datetime.timedelta(0, 20),
- 'task': 'analytics.tasks.update_billing_stats'},
- 'analytics_update_conversations_daily_stats': {'schedule': datetime.timedelta(0, 30),
- 'task': 'analytics.tasks.update_daily_conversations_stats'},
- 'analytics_update_day': {'schedule': datetime.timedelta(0, 7200),
- 'task': 'events.tasks.aggevents_process_day'},
- 'analytics_update_events_daily_stats': {'schedule': datetime.timedelta(0, 55),
- 'task': 'analytics.tasks.update_events_daily_stats'},
- 'analytics_update_replies_by_hour_stats': {'schedule': datetime.timedelta(0, 30),
- 'task': 'analytics.tasks.update_replies_by_hour_stats'},
- 'analytics_update_week_month': {'schedule': <crontab: 0 23 * * * (m/h/d/dM/MY)>,
- 'task': 'events.tasks.aggevents_process_week_month'},
- 'billing_block_apps': {'schedule': <crontab: 0 8 * * * (m/h/d/dM/MY)>,
- 'task': 'billing.tasks.block_apps'},
- 'billing_process_payment_due': {'schedule': <crontab: 0 7 * * * (m/h/d/dM/MY)>,
- 'task': 'billing.tasks.process_payment_due'},
- 'billing_usage_notofications': {'schedule': <crontab: 0 10 * * * (m/h/d/dM/MY)>,
- 'task': 'billing.tasks.send_usage_notifications_apps'},
- 'clickhouse_auto_sync': {'options': {'expires': 1},
- 'schedule': datetime.timedelta(0, 2),
- 'task': 'utils.tasks.clickhouse_auto_sync'},
- 'create_change_data_events': {'options': {'expires': 3},
- 'schedule': datetime.timedelta(0, 5),
- 'task': 'users.tasks.create_change_data_events'},
- 'delayed_message_delivery': {'options': {'expires': 3},
- 'schedule': datetime.timedelta(0, 5),
- 'task': 'messages.tasks.process_delayed_delivery'},
- 'final_close_conversations': {'schedule': datetime.timedelta(0, 60),
- 'task': 'messages.tasks.final_close_conversations'},
- 'messagestats_update_bulk_incr': {'options': {'expires': 28},
- 'schedule': datetime.timedelta(0, 30),
- 'task': 'messages.tasks.messagestats_update_bulk_incr'},
- 'ping_message': {'options': {'expires': 9},
- 'schedule': datetime.timedelta(0, 10),
- 'task': 'utils.tasks.ping_message'},
- 'process_1day_apps': {'schedule': <crontab: 30 1 * * * (m/h/d/dM/MY)>,
- 'task': 'apps.tasks.process_1day_apps'},
- 'process_admin_presence': {'options': {'expires': 55},
- 'schedule': datetime.timedelta(0, 60),
- 'task': 'panel.tasks.process_admin_presence'},
- 'process_django_user_notifications': {'options': {'expires': 28},
- 'schedule': datetime.timedelta(0, 30),
- 'task': 'messages.tasks.process_django_user_notifications'},
- 'rts_push_set_user_presence': {'schedule': datetime.timedelta(0, 1),
- 'task': 'users.tasks.rts_push_set_user_presence'},
- 'update_conversation_tags_daily_stats': {'schedule': datetime.timedelta(0, 30),
- 'task': 'analytics.tasks.update_conversation_tags_daily_stats'},
- 'upload_redshift_events': {'schedule': datetime.timedelta(0, 60),
- 'task': 'events.tasks.upload_redshift_events'},
- 'user_notifications_process': {'options': {'expires': 15},
- 'schedule': datetime.timedelta(0, 20),
- 'task': 'messages.tasks.user_notifications_process'},
- 'user_props_contacts_changed': {'options': {'expires': 2},
- 'schedule': datetime.timedelta(0, 2),
- 'task': 'utils.tasks.users_props_contacts_changed'},
- 'users_clear_expired_sessions': {'options': {'expires': 10},
- 'schedule': datetime.timedelta(0, 4),
- 'task': 'users.tasks.clear_expired_sessions'},
- 'users_es_push': {'options': {'expires': 5},
- 'schedule': datetime.timedelta(0, 7),
- 'task': 'users.tasks.users_es_push'}}</pre></td>
- </tr>
- <tr>
- <td>CELERY_ACCEPT_CONTENT</td>
- <td class="code"><pre>{'pickle'}</pre></td>
- </tr>
- <tr>
- <td>CELERY_RESULT_SERIALIZER</td>
- <td class="code"><pre>'pickle'</pre></td>
- </tr>
- <tr>
- <td>CELERY_TASK_SERIALIZER</td>
- <td class="code"><pre>'pickle'</pre></td>
- </tr>
- <tr>
- <td>CENTRAL_DB</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- <tr>
- <td>CLICKHOUSE</td>
- <td class="code"><pre>{'db_name': 'carrot',
- 'db_url': 'http://127.0.0.1:8123',
- 'password': '********************',
- 'username': ''}</pre></td>
- </tr>
- <tr>
- <td>CLICKHOUSE_DB</td>
- <td class="code"><pre><infi.clickhouse_orm.database.Database object at 0x7fcaf2244dd8></pre></td>
- </tr>
- <tr>
- <td>CLICKHOUSE_INSERT_SIZE</td>
- <td class="code"><pre>10000</pre></td>
- </tr>
- <tr>
- <td>CLOUDPAYMENTS_API_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>CLOUDPAYMENTS_PUBLIC_ID</td>
- <td class="code"><pre>'pk_ebc352f41bae1c5bff34a99c29b28'</pre></td>
- </tr>
- <tr>
- <td>CORS_ALLOW_METHODS</td>
- <td class="code"><pre>('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS')</pre></td>
- </tr>
- <tr>
- <td>CORS_ORIGIN_ALLOW_ALL</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>CSRF_COOKIE_AGE</td>
- <td class="code"><pre>31449600</pre></td>
- </tr>
- <tr>
- <td>CSRF_COOKIE_DOMAIN</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>CSRF_COOKIE_HTTPONLY</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>CSRF_COOKIE_NAME</td>
- <td class="code"><pre>'debug_csrftoken'</pre></td>
- </tr>
- <tr>
- <td>CSRF_COOKIE_PATH</td>
- <td class="code"><pre>'/'</pre></td>
- </tr>
- <tr>
- <td>CSRF_COOKIE_SECURE</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>CSRF_FAILURE_VIEW</td>
- <td class="code"><pre>'django.views.csrf.csrf_failure'</pre></td>
- </tr>
- <tr>
- <td>CSRF_HEADER_NAME</td>
- <td class="code"><pre>'HTTP_X_CSRFTOKEN'</pre></td>
- </tr>
- <tr>
- <td>CSRF_TRUSTED_ORIGINS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>CSRF_USE_SESSIONS</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>DATABASES</td>
- <td class="code"><pre>{'analytics_db': {'ATOMIC_REQUESTS': False,
- 'AUTOCOMMIT': True,
- 'CONN_MAX_AGE': None,
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'HOST': '127.0.0.1',
- 'NAME': 'carrot_analytics',
- 'OPTIONS': {},
- 'PASSWORD': '********************',
- 'PORT': '',
- 'TEST': {'CHARSET': None,
- 'COLLATION': None,
- 'MIRROR': None,
- 'NAME': None},
- 'TIME_ZONE': None,
- 'USER': 'django_user'},
- 'default': {'ATOMIC_REQUESTS': False,
- 'AUTOCOMMIT': True,
- 'CONN_MAX_AGE': None,
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'HOST': '127.0.0.1',
- 'NAME': 'carrot',
- 'OPTIONS': {},
- 'PASSWORD': '********************',
- 'PORT': '',
- 'TEST': {'CHARSET': None,
- 'COLLATION': None,
- 'MIRROR': None,
- 'NAME': None},
- 'TIME_ZONE': None,
- 'USER': 'django_user'},
- 'default_replica': {'ATOMIC_REQUESTS': False,
- 'AUTOCOMMIT': True,
- 'CONN_MAX_AGE': None,
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'HOST': '127.0.0.1',
- 'NAME': 'carrot',
- 'OPTIONS': {},
- 'PASSWORD': '********************',
- 'PORT': '',
- 'TEST': {'CHARSET': None,
- 'COLLATION': None,
- 'MIRROR': None,
- 'NAME': None},
- 'TIME_ZONE': None,
- 'USER': 'django_user'},
- 'shard1': {'ATOMIC_REQUESTS': False,
- 'AUTOCOMMIT': True,
- 'CONN_MAX_AGE': None,
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'HOST': '127.0.0.1',
- 'NAME': 'carrot',
- 'OPTIONS': {},
- 'PASSWORD': '********************',
- 'PORT': '',
- 'TEST': {'CHARSET': None,
- 'COLLATION': None,
- 'MIRROR': None,
- 'NAME': None},
- 'TIME_ZONE': None,
- 'USER': 'django_user'}}</pre></td>
- </tr>
- <tr>
- <td>DATABASE_ROUTERS</td>
- <td class="code"><pre>['cqapi.database_routers.AnalyticsRouter',
- 'cqapi.database_routers.ShardingRouter']</pre></td>
- </tr>
- <tr>
- <td>DATA_UPLOAD_MAX_MEMORY_SIZE</td>
- <td class="code"><pre>2621440</pre></td>
- </tr>
- <tr>
- <td>DATA_UPLOAD_MAX_NUMBER_FIELDS</td>
- <td class="code"><pre>1000</pre></td>
- </tr>
- <tr>
- <td>DATETIME_FORMAT</td>
- <td class="code"><pre>'N j, Y, P'</pre></td>
- </tr>
- <tr>
- <td>DATETIME_INPUT_FORMATS</td>
- <td class="code"><pre>['%Y-%m-%d %H:%M:%S',
- '%Y-%m-%d %H:%M:%S.%f',
- '%Y-%m-%d %H:%M',
- '%Y-%m-%d',
- '%m/%d/%Y %H:%M:%S',
- '%m/%d/%Y %H:%M:%S.%f',
- '%m/%d/%Y %H:%M',
- '%m/%d/%Y',
- '%m/%d/%y %H:%M:%S',
- '%m/%d/%y %H:%M:%S.%f',
- '%m/%d/%y %H:%M',
- '%m/%d/%y']</pre></td>
- </tr>
- <tr>
- <td>DATE_FORMAT</td>
- <td class="code"><pre>'N j, Y'</pre></td>
- </tr>
- <tr>
- <td>DATE_INPUT_FORMATS</td>
- <td class="code"><pre>['%Y-%m-%d',
- '%m/%d/%Y',
- '%m/%d/%y',
- '%b %d %Y',
- '%b %d, %Y',
- '%d %b %Y',
- '%d %b, %Y',
- '%B %d %Y',
- '%B %d, %Y',
- '%d %B %Y',
- '%d %B, %Y']</pre></td>
- </tr>
- <tr>
- <td>DB_SHARD</td>
- <td class="code"><pre>'shard1'</pre></td>
- </tr>
- <tr>
- <td>DEBUG</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>DEBUG_PROPAGATE_EXCEPTIONS</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>DEBUG_TOOLBAR_CONFIG</td>
- <td class="code"><pre>{'SHOW_TOOLBAR_CALLBACK': <function <lambda> at 0x7fcaf10eeae8>}</pre></td>
- </tr>
- <tr>
- <td>DEBUG_TOOLBAR_PANELS</td>
- <td class="code"><pre>['debug_toolbar.panels.versions.VersionsPanel',
- 'debug_toolbar.panels.timer.TimerPanel',
- 'debug_toolbar.panels.settings.SettingsPanel',
- 'debug_toolbar.panels.headers.HeadersPanel',
- 'debug_toolbar.panels.request.RequestPanel',
- 'debug_toolbar.panels.sql.SQLPanel',
- 'debug_toolbar.panels.staticfiles.StaticFilesPanel',
- 'debug_toolbar.panels.templates.TemplatesPanel',
- 'debug_toolbar.panels.cache.CachePanel',
- 'debug_toolbar.panels.signals.SignalsPanel',
- 'debug_toolbar.panels.logging.LoggingPanel',
- 'debug_toolbar.panels.redirects.RedirectsPanel']</pre></td>
- </tr>
- <tr>
- <td>DECIMAL_SEPARATOR</td>
- <td class="code"><pre>'.'</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_CHARSET</td>
- <td class="code"><pre>'utf-8'</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_CONTENT_TYPE</td>
- <td class="code"><pre>'text/html'</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
- <td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_FILE_STORAGE</td>
- <td class="code"><pre>'django.core.files.storage.FileSystemStorage'</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_FROM_EMAIL</td>
- <td class="code"><pre>'webmaster@localhost'</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_INDEX_TABLESPACE</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>DEFAULT_TABLESPACE</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>DISALLOWED_USER_AGENTS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>ELASTICSEARCH_DEFAULT_INDEX</td>
- <td class="code"><pre>'users'</pre></td>
- </tr>
- <tr>
- <td>ELASTICSEARCH_DEFAULT_MAPPING</td>
- <td class="code"><pre>{'_all': {'enabled': False},
- '_routing': {'path': 'app_id', 'required': True},
- 'dynamic': 'strict'}</pre></td>
- </tr>
- <tr>
- <td>ELASTICSEARCH_SETTINGS</td>
- <td class="code"><pre>{'analysis': {'analyzer': {'indexNgram': {'filter': ['lowercase',
- 'ngramFilter'],
- 'tokenizer': '********************',
- 'type': 'custom'},
- 'lowerAnalyzer': {'filter': ['lowercase'],
- 'tokenizer': '********************',
- 'type': 'custom'},
- 'searchNgram': {'filter': ['lowercase'],
- 'tokenizer': '********************',
- 'type': 'custom'}},
- 'filter': {'ngramFilter': {'__doc__': None,
- '__module__': 'utils.elasticsearch.filters',
- 'max_gram': 15,
- 'mig_gram': 3,
- 'type': 'nGram'}}},
- 'number_of_shards': 5}</pre></td>
- </tr>
- <tr>
- <td>ELASTICSEARCH_URL</td>
- <td class="code"><pre>[{'host': 'localhost', 'port': 9200}]</pre></td>
- </tr>
- <tr>
- <td>EMAIL_BACKEND</td>
- <td class="code"><pre>'django.core.mail.backends.smtp.EmailBackend'</pre></td>
- </tr>
- <tr>
- <td>EMAIL_HOST</td>
- <td class="code"><pre>'smtp.mailgun.org'</pre></td>
- </tr>
- <tr>
- <td>EMAIL_HOST_PASSWORD</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>EMAIL_HOST_USER</td>
- <td class="code"><pre>'postmaster@carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>EMAIL_PORT</td>
- <td class="code"><pre>587</pre></td>
- </tr>
- <tr>
- <td>EMAIL_SSL_CERTFILE</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>EMAIL_SSL_KEYFILE</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>EMAIL_SUBJECT_PREFIX</td>
- <td class="code"><pre>'[Django] '</pre></td>
- </tr>
- <tr>
- <td>EMAIL_TIMEOUT</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>EMAIL_USE_LOCALTIME</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>EMAIL_USE_SSL</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>EMAIL_USE_TLS</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>ES_SCROLL_FETCHES_BULK_EMAIL_LIMIT</td>
- <td class="code"><pre>400</pre></td>
- </tr>
- <tr>
- <td>ES_SCROLL_FETCHES_LIMIT</td>
- <td class="code"><pre>100</pre></td>
- </tr>
- <tr>
- <td>ES_SCROLL_SIZE</td>
- <td class="code"><pre>100</pre></td>
- </tr>
- <tr>
- <td>FB_CLIENT_ID</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>FB_CLIENT_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>FILE_CHARSET</td>
- <td class="code"><pre>'utf-8'</pre></td>
- </tr>
- <tr>
- <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>FILE_UPLOAD_HANDLERS</td>
- <td class="code"><pre>['django.core.files.uploadhandler.MemoryFileUploadHandler',
- 'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td>
- </tr>
- <tr>
- <td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
- <td class="code"><pre>2621440</pre></td>
- </tr>
- <tr>
- <td>FILE_UPLOAD_PERMISSIONS</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>FILE_UPLOAD_TEMP_DIR</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>FIRST_DAY_OF_WEEK</td>
- <td class="code"><pre>0</pre></td>
- </tr>
- <tr>
- <td>FIXTURE_DIRS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>FORCE_SCRIPT_NAME</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>FORMAT_MODULE_PATH</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>FORM_RENDERER</td>
- <td class="code"><pre>'django.forms.renderers.DjangoTemplates'</pre></td>
- </tr>
- <tr>
- <td>FULLCONTACT_API_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>FULLCONTACT_TOKEN</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>GEOAPI</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>GEOAPI_DB_PATH</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>GOOGLE_CLIENT_ID</td>
- <td class="code"><pre>'44569780138-5ttc4sulbmgb0hupmmvp6sa62embufnk.apps.googleusercontent.com'</pre></td>
- </tr>
- <tr>
- <td>GOOGLE_CLIENT_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>GOOGLE_DOCS_CREDENTIALS</td>
- <td class="code"><pre>{'client_email': '561950027934-4io6ruj9s1llbklce7qp77790647l75o@developer.gserviceaccount.com',
- 'client_id': '561950027934-4io6ruj9s1llbklce7qp77790647l75o.apps.googleusercontent.com',
- 'private_key': '********************',
- 'private_key_id': '********************',
- 'type': 'service_account'}</pre></td>
- </tr>
- <tr>
- <td>HOST_API</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>HOST_CDN</td>
- <td class="code"><pre>'localhost/cdn'</pre></td>
- </tr>
- <tr>
- <td>HOST_DEFAULT</td>
- <td class="code"><pre>'localhost'</pre></td>
- </tr>
- <tr>
- <td>HOST_MESSAGES_STATIC</td>
- <td class="code"><pre>'http://cqmessages.s3-eu-west-1.amazonaws.com/'</pre></td>
- </tr>
- <tr>
- <td>IGNORABLE_404_URLS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>INSTALLED_APPS</td>
- <td class="code"><pre>('cacheops',
- 'corsheaders',
- 'django.contrib.auth',
- 'django.contrib.admin',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.postgres',
- 'rest_framework',
- 'api',
- 'apps',
- 'users',
- 'utils',
- 'panel',
- 'events',
- 'messages',
- 'integrations',
- 'billing',
- 'analytics',
- 'django.contrib.staticfiles',
- 'debug_toolbar')</pre></td>
- </tr>
- <tr>
- <td>INTERNAL_IPS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>LANGUAGES</td>
- <td class="code"><pre>[('af', 'Afrikaans'),
- ('ar', 'Arabic'),
- ('ast', 'Asturian'),
- ('az', 'Azerbaijani'),
- ('bg', 'Bulgarian'),
- ('be', 'Belarusian'),
- ('bn', 'Bengali'),
- ('br', 'Breton'),
- ('bs', 'Bosnian'),
- ('ca', 'Catalan'),
- ('cs', 'Czech'),
- ('cy', 'Welsh'),
- ('da', 'Danish'),
- ('de', 'German'),
- ('dsb', 'Lower Sorbian'),
- ('el', 'Greek'),
- ('en', 'English'),
- ('en-au', 'Australian English'),
- ('en-gb', 'British English'),
- ('eo', 'Esperanto'),
- ('es', 'Spanish'),
- ('es-ar', 'Argentinian Spanish'),
- ('es-co', 'Colombian Spanish'),
- ('es-mx', 'Mexican Spanish'),
- ('es-ni', 'Nicaraguan Spanish'),
- ('es-ve', 'Venezuelan Spanish'),
- ('et', 'Estonian'),
- ('eu', 'Basque'),
- ('fa', 'Persian'),
- ('fi', 'Finnish'),
- ('fr', 'French'),
- ('fy', 'Frisian'),
- ('ga', 'Irish'),
- ('gd', 'Scottish Gaelic'),
- ('gl', 'Galician'),
- ('he', 'Hebrew'),
- ('hi', 'Hindi'),
- ('hr', 'Croatian'),
- ('hsb', 'Upper Sorbian'),
- ('hu', 'Hungarian'),
- ('ia', 'Interlingua'),
- ('id', 'Indonesian'),
- ('io', 'Ido'),
- ('is', 'Icelandic'),
- ('it', 'Italian'),
- ('ja', 'Japanese'),
- ('ka', 'Georgian'),
- ('kk', 'Kazakh'),
- ('km', 'Khmer'),
- ('kn', 'Kannada'),
- ('ko', 'Korean'),
- ('lb', 'Luxembourgish'),
- ('lt', 'Lithuanian'),
- ('lv', 'Latvian'),
- ('mk', 'Macedonian'),
- ('ml', 'Malayalam'),
- ('mn', 'Mongolian'),
- ('mr', 'Marathi'),
- ('my', 'Burmese'),
- ('nb', 'Norwegian Bokmål'),
- ('ne', 'Nepali'),
- ('nl', 'Dutch'),
- ('nn', 'Norwegian Nynorsk'),
- ('os', 'Ossetic'),
- ('pa', 'Punjabi'),
- ('pl', 'Polish'),
- ('pt', 'Portuguese'),
- ('pt-br', 'Brazilian Portuguese'),
- ('ro', 'Romanian'),
- ('ru', 'Russian'),
- ('sk', 'Slovak'),
- ('sl', 'Slovenian'),
- ('sq', 'Albanian'),
- ('sr', 'Serbian'),
- ('sr-latn', 'Serbian Latin'),
- ('sv', 'Swedish'),
- ('sw', 'Swahili'),
- ('ta', 'Tamil'),
- ('te', 'Telugu'),
- ('th', 'Thai'),
- ('tr', 'Turkish'),
- ('tt', 'Tatar'),
- ('udm', 'Udmurt'),
- ('uk', 'Ukrainian'),
- ('ur', 'Urdu'),
- ('vi', 'Vietnamese'),
- ('zh-hans', 'Simplified Chinese'),
- ('zh-hant', 'Traditional Chinese')]</pre></td>
- </tr>
- <tr>
- <td>LANGUAGES_BIDI</td>
- <td class="code"><pre>['he', 'ar', 'fa', 'ur']</pre></td>
- </tr>
- <tr>
- <td>LANGUAGE_CODE</td>
- <td class="code"><pre>'en-us'</pre></td>
- </tr>
- <tr>
- <td>LANGUAGE_COOKIE_AGE</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>LANGUAGE_COOKIE_DOMAIN</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>LANGUAGE_COOKIE_NAME</td>
- <td class="code"><pre>'django_language'</pre></td>
- </tr>
- <tr>
- <td>LANGUAGE_COOKIE_PATH</td>
- <td class="code"><pre>'/'</pre></td>
- </tr>
- <tr>
- <td>LOCALE_PATHS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>LOGGING</td>
- <td class="code"><pre>{'disable_existing_loggers': False,
- 'handlers': {'console': {'class': 'logging.StreamHandler'}},
- 'loggers': {'cq': {'handlers': ['console'], 'level': 'INFO'}},
- 'version': 1}</pre></td>
- </tr>
- <tr>
- <td>LOGGING_CONFIG</td>
- <td class="code"><pre>'logging.config.dictConfig'</pre></td>
- </tr>
- <tr>
- <td>LOGIN_REDIRECT_URL</td>
- <td class="code"><pre>'/accounts/profile/'</pre></td>
- </tr>
- <tr>
- <td>LOGIN_URL</td>
- <td class="code"><pre>'/accounts/login/'</pre></td>
- </tr>
- <tr>
- <td>LOGOUT_REDIRECT_URL</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>LOG_REQUESTS</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>MAILGUN_API_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>MANAGERS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>MAX_USER_TAGS_LIMIT</td>
- <td class="code"><pre>20000</pre></td>
- </tr>
- <tr>
- <td>MEDIA_ROOT</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>MEDIA_URL</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>MESSAGE_STORAGE</td>
- <td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>
- </tr>
- <tr>
- <td>MIDDLEWARE</td>
- <td class="code"><pre>('corsheaders.middleware.CorsMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'utils.middleware.CORSMiddleware',
- 'utils.middleware.ExceptionLoggingMiddleware',
- 'utils.middleware.NonHtmlDebugToolbarMiddleware')</pre></td>
- </tr>
- <tr>
- <td>MIDDLEWARE_CLASSES</td>
- <td class="code"><pre>['django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware']</pre></td>
- </tr>
- <tr>
- <td>MIGRATION_MODULES</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>MODE_MEMORY</td>
- <td class="code"><pre>1</pre></td>
- </tr>
- <tr>
- <td>MONTH_DAY_FORMAT</td>
- <td class="code"><pre>'F j'</pre></td>
- </tr>
- <tr>
- <td>NEWRELIC_LICENSE_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>NUMBER_GROUPING</td>
- <td class="code"><pre>0</pre></td>
- </tr>
- <tr>
- <td>PARSE_API_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>PARSE_APP_ID</td>
- <td class="code"><pre>'fvDVH1H461PrWMQ4BHU8QmPzaE4BTp6PExIvaKsS'</pre></td>
- </tr>
- <tr>
- <td>PASSWORD_HASHERS</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>PASSWORD_RESET_TIMEOUT_DAYS</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>PREPEND_WWW</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>RAVEN_CONFIG</td>
- <td class="code"><pre>{'dsn': ''}</pre></td>
- </tr>
- <tr>
- <td>REALTIME_REDIS</td>
- <td class="code"><pre>'realtime-services-01.carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>REALTIME_SERVICES_HOST</td>
- <td class="code"><pre>'aa.test.carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>REALTIME_SERVICES_HOST_V2</td>
- <td class="code"><pre>'aa.test.carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>REDIS</td>
- <td class="code"><pre>StrictRedis<ConnectionPool<Connection<host=127.0.0.1,port=6379,db=0>>></pre></td>
- </tr>
- <tr>
- <td>REDIS_GLOBAL</td>
- <td class="code"><pre>StrictRedis<ConnectionPool<Connection<host=127.0.0.1,port=6379,db=6>>></pre></td>
- </tr>
- <tr>
- <td>REQUEST_NONCE_TIMEOUT</td>
- <td class="code"><pre>300</pre></td>
- </tr>
- <tr>
- <td>REST_FRAMEWORK</td>
- <td class="code"><pre>{'DEFAULT_AUTHENTICATION_CLASSES': (),
- 'DEFAULT_RENDERER_CLASSES': ('api.renderers.JSONRenderer',),
- 'EXCEPTION_HANDLER': 'utils.views.rest_framework_exception_handler'}</pre></td>
- </tr>
- <tr>
- <td>ROOT_URLCONF</td>
- <td class="code"><pre>'cqapi.urls'</pre></td>
- </tr>
- <tr>
- <td>S3_BUCKET_AVATARS</td>
- <td class="code"><pre>'carrotquestavatarstest'</pre></td>
- </tr>
- <tr>
- <td>SECRET_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>SECURE_BROWSER_XSS_FILTER</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SECURE_CONTENT_TYPE_NOSNIFF</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SECURE_HSTS_PRELOAD</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SECURE_HSTS_SECONDS</td>
- <td class="code"><pre>0</pre></td>
- </tr>
- <tr>
- <td>SECURE_PROXY_SSL_HEADER</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>SECURE_REDIRECT_EXEMPT</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>SECURE_SSL_HOST</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>SECURE_SSL_REDIRECT</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SELECTEL_STORAGE_PASSWORD</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>SELECTEL_STORAGE_USER</td>
- <td class="code"><pre>'34906_maks'</pre></td>
- </tr>
- <tr>
- <td>SERVER_EMAIL</td>
- <td class="code"><pre>'django500@carrotquest.io'</pre></td>
- </tr>
- <tr>
- <td>SESSION_CACHE_ALIAS</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- <tr>
- <td>SESSION_COOKIE_AGE</td>
- <td class="code"><pre>12960000</pre></td>
- </tr>
- <tr>
- <td>SESSION_COOKIE_DOMAIN</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>SESSION_COOKIE_HTTPONLY</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>SESSION_COOKIE_NAME</td>
- <td class="code"><pre>'debug_sessionid'</pre></td>
- </tr>
- <tr>
- <td>SESSION_COOKIE_PATH</td>
- <td class="code"><pre>'/'</pre></td>
- </tr>
- <tr>
- <td>SESSION_COOKIE_SECURE</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SESSION_ENGINE</td>
- <td class="code"><pre>'django.contrib.sessions.backends.db'</pre></td>
- </tr>
- <tr>
- <td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SESSION_FILE_PATH</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>SESSION_SAVE_EVERY_REQUEST</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>SESSION_SERIALIZER</td>
- <td class="code"><pre>'django.contrib.sessions.serializers.JSONSerializer'</pre></td>
- </tr>
- <tr>
- <td>SETTINGS_MODULE</td>
- <td class="code"><pre>'cqapi.settings'</pre></td>
- </tr>
- <tr>
- <td>SHARD_ID</td>
- <td class="code"><pre>1</pre></td>
- </tr>
- <tr>
- <td>SHORT_DATETIME_FORMAT</td>
- <td class="code"><pre>'m/d/Y P'</pre></td>
- </tr>
- <tr>
- <td>SHORT_DATE_FORMAT</td>
- <td class="code"><pre>'m/d/Y'</pre></td>
- </tr>
- <tr>
- <td>SIGNING_BACKEND</td>
- <td class="code"><pre>'django.core.signing.TimestampSigner'</pre></td>
- </tr>
- <tr>
- <td>SILENCED_SYSTEM_CHECKS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>SLACK_BILLING_HOOK</td>
- <td class="code"><pre>'https://hooks.slack.com/services/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'</pre></td>
- </tr>
- <tr>
- <td>STATICFILES_DIRS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>STATICFILES_FINDERS</td>
- <td class="code"><pre>['django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder']</pre></td>
- </tr>
- <tr>
- <td>STATICFILES_STORAGE</td>
- <td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>
- </tr>
- <tr>
- <td>STATIC_ROOT</td>
- <td class="code"><pre>'/home/web/cqstatic/static'</pre></td>
- </tr>
- <tr>
- <td>STATIC_URL</td>
- <td class="code"><pre>'/static/'</pre></td>
- </tr>
- <tr>
- <td>STATSD_HOST</td>
- <td class="code"><pre>'127.0.0.1'</pre></td>
- </tr>
- <tr>
- <td>TEMPLATES</td>
- <td class="code"><pre>[{'APP_DIRS': True,
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [],
- 'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth',
- 'django.template.context_processors.debug',
- 'django.template.context_processors.i18n',
- 'django.template.context_processors.media',
- 'django.template.context_processors.static',
- 'django.template.context_processors.tz',
- 'django.contrib.messages.context_processors.messages']}}]</pre></td>
- </tr>
- <tr>
- <td>TEST_APP_IDS</td>
- <td class="code"><pre>[1, 7, 8]</pre></td>
- </tr>
- <tr>
- <td>TEST_NON_SERIALIZED_APPS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>TEST_RUNNER</td>
- <td class="code"><pre>'django.test.runner.DiscoverRunner'</pre></td>
- </tr>
- <tr>
- <td>THOUSAND_SEPARATOR</td>
- <td class="code"><pre>','</pre></td>
- </tr>
- <tr>
- <td>TIME_FORMAT</td>
- <td class="code"><pre>'P'</pre></td>
- </tr>
- <tr>
- <td>TIME_INPUT_FORMATS</td>
- <td class="code"><pre>['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']</pre></td>
- </tr>
- <tr>
- <td>TIME_ZONE</td>
- <td class="code"><pre>'UTC'</pre></td>
- </tr>
- <tr>
- <td>TW_CLIENT_ID</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>TW_CLIENT_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>USER_PROPS_AUTH_TOKEN</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>USER_TOKEN_SECRET_KEY</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>USE_ETAGS</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>USE_I18N</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>USE_L10N</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>USE_THOUSAND_SEPARATOR</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>USE_TZ</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>USE_X_FORWARDED_HOST</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>USE_X_FORWARDED_PORT</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>VK_CLIENT_ID</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>VK_CLIENT_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>WSGI_APPLICATION</td>
- <td class="code"><pre>'cqapi.wsgi.application'</pre></td>
- </tr>
- <tr>
- <td>X_FRAME_OPTIONS</td>
- <td class="code"><pre>'SAMEORIGIN'</pre></td>
- </tr>
- <tr>
- <td>YANDEX_MONEY_SECRET</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>YANDEX_SHOP_ID</td>
- <td class="code"><pre>35809</pre></td>
- </tr>
- <tr>
- <td>YANDEX_SHOP_PASSWORD</td>
- <td class="code"><pre>'********************'</pre></td>
- </tr>
- <tr>
- <td>YEAR_MONTH_FORMAT</td>
- <td class="code"><pre>'F Y'</pre></td>
- </tr>
- </tbody>
- </table>
- </div>
- <div id="explanation">
- <p>
- You're seeing this error because you have <code>DEBUG = True</code> in your
- Django settings file. Change that to <code>False</code>, and Django will
- display a standard page generated by the handler for this status code.
- </p>
- </div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement