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>IntegrityError at /api/repo/antonio/dyad/mark/ddddddd.recipe</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>IntegrityError at /api/repo/antonio/dyad/mark/ddddddd.recipe</h1>
- <pre class="exception_value">duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"
- DETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.
- </pre>
- <table class="meta">
- <tr>
- <th>Request Method:</th>
- <td>PUT</td>
- </tr>
- <tr>
- <th>Request URL:</th>
- <td>https://dev.datagator.org/api/repo/antonio/dyad/mark/ddddddd.recipe</td>
- </tr>
- <tr>
- <th>Django Version:</th>
- <td>1.10.4</td>
- </tr>
- <tr>
- <th>Exception Type:</th>
- <td>IntegrityError</td>
- </tr>
- <tr>
- <th>Exception Value:</th>
- <td><pre>duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"
- DETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.
- </pre></td>
- </tr>
- <tr>
- <th>Exception Location:</th>
- <td>/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py in execute, line 64</td>
- </tr>
- <tr>
- <th>Python Executable:</th>
- <td>/usr/sbin/uwsgi</td>
- </tr>
- <tr>
- <th>Python Version:</th>
- <td>3.4.5</td>
- </tr>
- <tr>
- <th>Python Path:</th>
- <td><pre>['.',
- '',
- '/opt/datagator/lib64/python34.zip',
- '/opt/datagator/lib64/python3.4',
- '/opt/datagator/lib64/python3.4/plat-linux',
- '/opt/datagator/lib64/python3.4/lib-dynload',
- '/usr/lib64/python3.4',
- '/usr/lib/python3.4',
- '/opt/datagator/lib/python3.4/site-packages']</pre></td>
- </tr>
- <tr>
- <th>Server time:</th>
- <td>Fri, 13 Jan 2017 06:41:26 -0700</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>/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py</code> in <code>execute</code>
- <div class="context" id="c140168017543944">
- <ol start="57" class="pre-context" id="pre140168017543944">
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre></pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> def execute(self, sql, params=None):</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> self.db.validate_no_broken_transaction()</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> with self.db.wrap_database_errors:</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> if params is None:</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> return self.cursor.execute(sql)</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> else:</pre></li>
- </ol>
- <ol start="64" class="context-line">
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre>
- return self.cursor.execute(sql, params)</pre> <span>...</span></li></ol>
- <ol start='65' class="post-context" id="post140168017543944">
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre></pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> def executemany(self, sql, param_list):</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> self.db.validate_no_broken_transaction()</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> with self.db.wrap_database_errors:</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> return self.cursor.executemany(sql, param_list)</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168017543944')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168017543944">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>params</td>
- <td class="code"><pre>(datetime.datetime(2017, 1, 13, 13, 41, 26, 185576, tzinfo=<UTC>),
- UUID('324e6020-e253-5b8e-8871-883ec17d0d45'),
- 18,
- UUID('b3c0ecec-ccde-5bda-9a0d-f0e745b02199'),
- UUID('cade4338-d5a2-583e-a386-2571bf537a65'),
- 'testMark2',
- <psycopg2._json.Json object at 0x7f7b6995f470>)</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.backends.utils.CursorDebugWrapper object at 0x7f7b69a0c128></pre></td>
- </tr>
- <tr>
- <td>sql</td>
- <td class="code"><pre>('INSERT INTO "community_mark" ("created", "creator_id", "entity_ct_id", '
- '"entity_id", "id", "name", "data") VALUES (%s, %s, %s, %s, %s, %s, %s)')</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li><h3>
- The above exception (duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"
- DETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.
- ) was the direct cause of the following exception:
- </h3></li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/core/handlers/exception.py</code> in <code>inner</code>
- <div class="context" id="c140168028190216">
- <ol start="32" class="pre-context" id="pre140168028190216">
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> This decorator is automatically applied to all middleware to ensure that</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> no middleware leaks an exception and that the next middleware in the stack</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> can rely on getting a response instead of an exception.</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> """</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> @wraps(get_response, assigned=available_attrs(get_response))</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> def inner(request):</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> try:</pre></li>
- </ol>
- <ol start="39" class="context-line">
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre>
- response = get_response(request)</pre> <span>...</span></li></ol>
- <ol start='40' class="post-context" id="post140168028190216">
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> except Exception as exc:</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> response = response_for_exception(request, exc)</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> return response</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre> return inner</pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre></pre></li>
- <li onclick="toggle('pre140168028190216', 'post140168028190216')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028190216')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028190216">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>exc</td>
- <td class="code"><pre>IntegrityError('duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"\nDETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.\n',)</pre></td>
- </tr>
- <tr>
- <td>get_response</td>
- <td class="code"><pre><bound method WSGIHandler._legacy_get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f7b7a6230b8>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>_legacy_get_response</code>
- <div class="context" id="c140168028190728">
- <ol start="242" class="pre-context" id="pre140168028190728">
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> # Apply request middleware</pre></li>
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> for middleware_method in self._request_middleware:</pre></li>
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> response = middleware_method(request)</pre></li>
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> if response:</pre></li>
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> break</pre></li>
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre></pre></li>
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> if response is None:</pre></li>
- </ol>
- <ol start="249" class="context-line">
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre>
- response = self._get_response(request)</pre> <span>...</span></li></ol>
- <ol start='250' class="post-context" id="post140168028190728">
- <li onclick="toggle('pre140168028190728', 'post140168028190728')"><pre> return response</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028190728')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028190728">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>middleware_method</td>
- <td class="code"><pre><bound method MessageMiddleware.process_request of <django.contrib.messages.middleware.MessageMiddleware object at 0x7f7b79935ba8>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></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 0x7f7b7a6230b8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>
- <div class="context" id="c140168028190792">
- <ol start="180" class="pre-context" id="pre140168028190792">
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> break</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre></pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> try:</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> except Exception as e:</pre></li>
- </ol>
- <ol start="187" class="context-line">
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre>
- response = self.process_exception_by_middleware(e, request)</pre> <span>...</span></li></ol>
- <ol start='188' class="post-context" id="post140168028190792">
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre></pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> # Complain if the view returned None (a common error).</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> view_name = callback.__name__</pre></li>
- <li onclick="toggle('pre140168028190792', 'post140168028190792')"><pre> else: # CBV</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028190792')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028190792">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>callback</td>
- <td class="code"><pre><function DataItemMarkup at 0x7f7b69d841e0></pre></td>
- </tr>
- <tr>
- <td>callback_args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>callback_kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>middleware_method</td>
- <td class="code"><pre><bound method CrossOriginMiddleware.process_view of <datagator.wsgi.middleware.CrossOriginMiddleware object at 0x7f7b79935550>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>resolver</td>
- <td class="code"><pre><RegexURLResolver 'datagator.api.portal.urls' (None:None) ^/></pre></td>
- </tr>
- <tr>
- <td>resolver_match</td>
- <td class="code"><pre>ResolverMatch(func=datagator.api.portal.v2.mark.DataItemMarkup, args=(), kwargs={'key': 'ddddddd.recipe', 'repo': 'antonio', 'name': 'dyad'}, url_name=item_list, app_names=[], namespaces=['api', 'v2', 'repo', 'dataset', 'mark'])</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 0x7f7b7a6230b8></pre></td>
- </tr>
- <tr>
- <td>wrapped_callback</td>
- <td class="code"><pre><function DataItemMarkup at 0x7f7b69d841e0></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>
- <div class="context" id="c140168028190280">
- <ol start="178" class="pre-context" id="pre140168028190280">
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> if response:</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> break</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre></pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> try:</pre></li>
- </ol>
- <ol start="185" class="context-line">
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre>
- response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>...</span></li></ol>
- <ol start='186' class="post-context" id="post140168028190280">
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> except Exception as e:</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> response = self.process_exception_by_middleware(e, request)</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre></pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> # Complain if the view returned None (a common error).</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> if response is None:</pre></li>
- <li onclick="toggle('pre140168028190280', 'post140168028190280')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028190280')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028190280">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>callback</td>
- <td class="code"><pre><function DataItemMarkup at 0x7f7b69d841e0></pre></td>
- </tr>
- <tr>
- <td>callback_args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>callback_kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>middleware_method</td>
- <td class="code"><pre><bound method CrossOriginMiddleware.process_view of <datagator.wsgi.middleware.CrossOriginMiddleware object at 0x7f7b79935550>></pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>resolver</td>
- <td class="code"><pre><RegexURLResolver 'datagator.api.portal.urls' (None:None) ^/></pre></td>
- </tr>
- <tr>
- <td>resolver_match</td>
- <td class="code"><pre>ResolverMatch(func=datagator.api.portal.v2.mark.DataItemMarkup, args=(), kwargs={'key': 'ddddddd.recipe', 'repo': 'antonio', 'name': 'dyad'}, url_name=item_list, app_names=[], namespaces=['api', 'v2', 'repo', 'dataset', 'mark'])</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 0x7f7b7a6230b8></pre></td>
- </tr>
- <tr>
- <td>wrapped_callback</td>
- <td class="code"><pre><function DataItemMarkup at 0x7f7b69d841e0></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py</code> in <code>view</code>
- <div class="context" id="c140168028189960">
- <ol start="61" class="pre-context" id="pre140168028189960">
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> def view(request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> self = cls(**initkwargs)</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> if hasattr(self, 'get') and not hasattr(self, 'head'):</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> self.head = self.get</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> self.request = request</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> self.args = args</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> self.kwargs = kwargs</pre></li>
- </ol>
- <ol start="68" class="context-line">
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre>
- return self.dispatch(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='69' class="post-context" id="post140168028189960">
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> view.view_class = cls</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> view.view_initkwargs = initkwargs</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre></pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> # take name and docstring from class</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre> update_wrapper(view, cls, updated=())</pre></li>
- <li onclick="toggle('pre140168028189960', 'post140168028189960')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028189960')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028189960">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>cls</td>
- <td class="code"><pre><class 'datagator.api.portal.v2.mark.DataItemMarkup'></pre></td>
- </tr>
- <tr>
- <td>initkwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/wsgi/decorators.py</code> in <code>wrapper</code>
- <div class="context" id="c140168028191432">
- <ol start="192" class="pre-context" id="pre140168028191432">
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> # over-rate has higher precedence than other error responses</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> response = MessageResponse(429, _("API request over-rate."))</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> response['Retry-After'] = int(timeout)</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> elif response is not None:</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> # response created for error(s) occurred during rate limiting.</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> pass</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> else:</pre></li>
- </ol>
- <ol start="199" class="context-line">
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre>
- response = method(view, request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='200' class="post-context" id="post140168028191432">
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre></pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> response['X-RateLimit-Limit'] = total</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> response['X-RateLimit-Remaining'] = remain if remain > 0 else 0</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> response['X-RateLimit-Reset'] = int(math.ceil(dt.timestamp(reset)))</pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre></pre></li>
- <li onclick="toggle('pre140168028191432', 'post140168028191432')"><pre> return response</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028191432')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028191432">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>cnt</td>
- <td class="code"><pre>{'1hr': 8}</pre></td>
- </tr>
- <tr>
- <td>cost</td>
- <td class="code"><pre>1</pre></td>
- </tr>
- <tr>
- <td>key</td>
- <td class="code"><pre>'1hr'</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>mc_key</td>
- <td class="code"><pre><function with_ratelimit.<locals>.decorator.<locals>.wrapper.<locals>.mc_key at 0x7f7b69a618c8></pre></td>
- </tr>
- <tr>
- <td>method</td>
- <td class="code"><pre><function Endpoint.dispatch at 0x7f7b6a393158></pre></td>
- </tr>
- <tr>
- <td>nil</td>
- <td class="code"><pre>2000</pre></td>
- </tr>
- <tr>
- <td>options</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>prefix</td>
- <td class="code"><pre>'user:712f7bd18f7f3de39f37e22ab5a68395/rate/'</pre></td>
- </tr>
- <tr>
- <td>quota</td>
- <td class="code"><pre>{'1hr': (2000, 3600)}</pre></td>
- </tr>
- <tr>
- <td>remain</td>
- <td class="code"><pre>1991</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>reset</td>
- <td class="code"><pre>datetime.datetime(2017, 1, 13, 14, 30, 34, 96098, tzinfo=<isodate.tzinfo.Utc object at 0x7f7b73396cc0>)</pre></td>
- </tr>
- <tr>
- <td>response</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>timeout</td>
- <td class="code"><pre>2948</pre></td>
- </tr>
- <tr>
- <td>total</td>
- <td class="code"><pre>2000</pre></td>
- </tr>
- <tr>
- <td>ttl</td>
- <td class="code"><pre>{'1hr': 2948}</pre></td>
- </tr>
- <tr>
- <td>uid</td>
- <td class="code"><pre>'antonio'</pre></td>
- </tr>
- <tr>
- <td>used</td>
- <td class="code"><pre>8</pre></td>
- </tr>
- <tr>
- <td>view</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/wsgi/views.py</code> in <code>dispatch</code>
- <div class="context" id="c140168015143368">
- <ol start="52" class="pre-context" id="pre140168015143368">
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> def __call__(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> return self.dispatch(request, *args, **kwargs)</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre></pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> @with_ratelimit</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> def dispatch(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> # dispatch HTTP method</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> try:</pre></li>
- </ol>
- <ol start="59" class="context-line">
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre>
- response = super(Endpoint, self).dispatch(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='60' class="post-context" id="post140168015143368">
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> except ValidationError as e:</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> # ValidationError may contain a list of messages</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> return MessageResponse(400, "\n".join(e)) # Bad Request</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> except PermissionDenied as e:</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> return MessageResponse(403, str(e)) # Forbidden</pre></li>
- <li onclick="toggle('pre140168015143368', 'post140168015143368')"><pre> except ObjectDoesNotExist as e:</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015143368')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015143368">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>__class__</td>
- <td class="code"><pre><class 'datagator.wsgi.views.Endpoint'></pre></td>
- </tr>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py</code> in <code>dispatch</code>
- <div class="context" id="c140168015146632">
- <ol start="81" class="pre-context" id="pre140168015146632">
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> # Try to dispatch to the right method; if a method doesn't exist,</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> # defer to the error handler. Also defer to the error handler if the</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> # request method isn't on the approved list.</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> if request.method.lower() in self.http_method_names:</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> handler = getattr(self, request.method.lower(), self.http_method_not_allowed)</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> else:</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> handler = self.http_method_not_allowed</pre></li>
- </ol>
- <ol start="88" class="context-line">
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre>
- return handler(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='89' class="post-context" id="post140168015146632">
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre></pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> def http_method_not_allowed(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> logger.warning(</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> 'Method Not Allowed (%s): %s', request.method, request.path,</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> extra={'status_code': 405, 'request': request}</pre></li>
- <li onclick="toggle('pre140168015146632', 'post140168015146632')"><pre> )</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015146632')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015146632">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>handler</td>
- <td class="code"><pre><bound method DataItemMarkup.put of <datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8>></pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/wsgi/decorators.py</code> in <code>wrapper</code>
- <div class="context" id="c140168015143432">
- <ol start="77" class="pre-context" id="pre140168015143432">
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> return MessageResponse(403, _("Failed authentication."))</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre></pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> if not allow_unauthorized and not request.user.is_authenticated():</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> response = MessageResponse(401, _("Unauthorized access."))</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> response['WWW-Authenticate'] = WWW_AUTH_TEMPLATE.format(realm)</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> return response</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre></pre></li>
- </ol>
- <ol start="84" class="context-line">
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre>
- return method(view, request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='85' class="post-context" id="post140168015143432">
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre></pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> return wrapper</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre></pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre> return decorator</pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre></pre></li>
- <li onclick="toggle('pre140168015143432', 'post140168015143432')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015143432')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015143432">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>allow_inactive</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>allow_unauthorized</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'key': 'ddddddd.recipe', 'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>method</td>
- <td class="code"><pre><function DataItemMarkup.put at 0x7f7b69dbea60></pre></td>
- </tr>
- <tr>
- <td>options</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>realm</td>
- <td class="code"><pre>'DataGator'</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>view</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/api/portal/v2/mark.py</code> in <code>put</code>
- <div class="context" id="c140168015145864">
- <ol start="310" class="pre-context" id="pre140168015145864">
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> rev=rev))</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> append_header(headers, 'Link', content.to_link(base_uri, extra_qs))</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre></pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> return self.ok(content, **headers)</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre></pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> @with_authentication</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> def put(self, request, repo, name, key, rev=None):</pre></li>
- </ol>
- <ol start="317" class="context-line">
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre>
- return self.forward_request(request, repo, name, key, rev)</pre> <span>...</span></li></ol>
- <ol start='318' class="post-context" id="post140168015145864">
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre></pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> @with_authentication</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> def delete(self, request, repo, name, key, rev=None):</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> return self.forward_request(request, repo, name, key, rev)</pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre></pre></li>
- <li onclick="toggle('pre140168015145864', 'post140168015145864')"><pre> @classmethod</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015145864')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015145864">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>key</td>
- <td class="code"><pre>'ddddddd.recipe'</pre></td>
- </tr>
- <tr>
- <td>name</td>
- <td class="code"><pre>'dyad'</pre></td>
- </tr>
- <tr>
- <td>repo</td>
- <td class="code"><pre>'antonio'</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>rev</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.DataItemMarkup object at 0x7f7b68f205f8></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/api/portal/v2/mark.py</code> in <code>forward_request</code>
- <div class="context" id="c140168015144328">
- <ol start="330" class="pre-context" id="pre140168015144328">
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> }</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> if rev is None:</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> view = view.format("dataset")</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> else:</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> view = view.format("dataset_r")</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> kwargs['rev'] = rev</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> endpoint = resolve(reverse(view, kwargs=kwargs))</pre></li>
- </ol>
- <ol start="337" class="context-line">
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre>
- return endpoint.func(request, *endpoint.args, **endpoint.kwargs)</pre> <span>...</span></li></ol>
- <ol start='338' class="post-context" id="post140168015144328">
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre></pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre></pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre>class TeamMarkup(Endpoint, RoleMixin, MarkupMixin):</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> """</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> Team Markup Endpoint</pre></li>
- <li onclick="toggle('pre140168015144328', 'post140168015144328')"><pre> --------------------</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015144328')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015144328">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>cls</td>
- <td class="code"><pre><class 'datagator.api.portal.v2.mark.DataItemMarkup'></pre></td>
- </tr>
- <tr>
- <td>endpoint</td>
- <td class="code"><pre>ResolverMatch(func=datagator.api.portal.v2.mark.CollectionMarkup, args=(), kwargs={'repo': 'antonio', 'name': 'dyad'}, url_name=list, app_names=[], namespaces=['api', 'v2', 'repo', 'dataset', 'mark'])</pre></td>
- </tr>
- <tr>
- <td>key</td>
- <td class="code"><pre>'ddddddd.recipe'</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>name</td>
- <td class="code"><pre>'dyad'</pre></td>
- </tr>
- <tr>
- <td>repo</td>
- <td class="code"><pre>'antonio'</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>rev</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>view</td>
- <td class="code"><pre>'api:v2:repo:dataset:mark:list'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py</code> in <code>view</code>
- <div class="context" id="c140168015145032">
- <ol start="61" class="pre-context" id="pre140168015145032">
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> def view(request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> self = cls(**initkwargs)</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> if hasattr(self, 'get') and not hasattr(self, 'head'):</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> self.head = self.get</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> self.request = request</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> self.args = args</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> self.kwargs = kwargs</pre></li>
- </ol>
- <ol start="68" class="context-line">
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre>
- return self.dispatch(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='69' class="post-context" id="post140168015145032">
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> view.view_class = cls</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> view.view_initkwargs = initkwargs</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre></pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> # take name and docstring from class</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre> update_wrapper(view, cls, updated=())</pre></li>
- <li onclick="toggle('pre140168015145032', 'post140168015145032')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015145032')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015145032">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>cls</td>
- <td class="code"><pre><class 'datagator.api.portal.v2.mark.CollectionMarkup'></pre></td>
- </tr>
- <tr>
- <td>initkwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/wsgi/decorators.py</code> in <code>wrapper</code>
- <div class="context" id="c140168015145096">
- <ol start="192" class="pre-context" id="pre140168015145096">
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> # over-rate has higher precedence than other error responses</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> response = MessageResponse(429, _("API request over-rate."))</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> response['Retry-After'] = int(timeout)</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> elif response is not None:</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> # response created for error(s) occurred during rate limiting.</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> pass</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> else:</pre></li>
- </ol>
- <ol start="199" class="context-line">
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre>
- response = method(view, request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='200' class="post-context" id="post140168015145096">
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre></pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> response['X-RateLimit-Limit'] = total</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> response['X-RateLimit-Remaining'] = remain if remain > 0 else 0</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> response['X-RateLimit-Reset'] = int(math.ceil(dt.timestamp(reset)))</pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre></pre></li>
- <li onclick="toggle('pre140168015145096', 'post140168015145096')"><pre> return response</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015145096')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015145096">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>cnt</td>
- <td class="code"><pre>{'1hr': 9}</pre></td>
- </tr>
- <tr>
- <td>cost</td>
- <td class="code"><pre>1</pre></td>
- </tr>
- <tr>
- <td>key</td>
- <td class="code"><pre>'1hr'</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>mc_key</td>
- <td class="code"><pre><function with_ratelimit.<locals>.decorator.<locals>.wrapper.<locals>.mc_key at 0x7f7b69a6c620></pre></td>
- </tr>
- <tr>
- <td>method</td>
- <td class="code"><pre><function Endpoint.dispatch at 0x7f7b6a393158></pre></td>
- </tr>
- <tr>
- <td>nil</td>
- <td class="code"><pre>2000</pre></td>
- </tr>
- <tr>
- <td>options</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>prefix</td>
- <td class="code"><pre>'user:712f7bd18f7f3de39f37e22ab5a68395/rate/'</pre></td>
- </tr>
- <tr>
- <td>quota</td>
- <td class="code"><pre>{'1hr': (2000, 3600)}</pre></td>
- </tr>
- <tr>
- <td>remain</td>
- <td class="code"><pre>1990</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>reset</td>
- <td class="code"><pre>datetime.datetime(2017, 1, 13, 14, 30, 34, 98304, tzinfo=<isodate.tzinfo.Utc object at 0x7f7b73396cc0>)</pre></td>
- </tr>
- <tr>
- <td>response</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>timeout</td>
- <td class="code"><pre>2948</pre></td>
- </tr>
- <tr>
- <td>total</td>
- <td class="code"><pre>2000</pre></td>
- </tr>
- <tr>
- <td>ttl</td>
- <td class="code"><pre>{'1hr': 2948}</pre></td>
- </tr>
- <tr>
- <td>uid</td>
- <td class="code"><pre>'antonio'</pre></td>
- </tr>
- <tr>
- <td>used</td>
- <td class="code"><pre>9</pre></td>
- </tr>
- <tr>
- <td>view</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/wsgi/views.py</code> in <code>dispatch</code>
- <div class="context" id="c140168015143240">
- <ol start="52" class="pre-context" id="pre140168015143240">
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> def __call__(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> return self.dispatch(request, *args, **kwargs)</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre></pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> @with_ratelimit</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> def dispatch(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> # dispatch HTTP method</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> try:</pre></li>
- </ol>
- <ol start="59" class="context-line">
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre>
- response = super(Endpoint, self).dispatch(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='60' class="post-context" id="post140168015143240">
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> except ValidationError as e:</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> # ValidationError may contain a list of messages</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> return MessageResponse(400, "\n".join(e)) # Bad Request</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> except PermissionDenied as e:</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> return MessageResponse(403, str(e)) # Forbidden</pre></li>
- <li onclick="toggle('pre140168015143240', 'post140168015143240')"><pre> except ObjectDoesNotExist as e:</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015143240')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015143240">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>__class__</td>
- <td class="code"><pre><class 'datagator.wsgi.views.Endpoint'></pre></td>
- </tr>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py</code> in <code>dispatch</code>
- <div class="context" id="c140168015145480">
- <ol start="81" class="pre-context" id="pre140168015145480">
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> # Try to dispatch to the right method; if a method doesn't exist,</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> # defer to the error handler. Also defer to the error handler if the</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> # request method isn't on the approved list.</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> if request.method.lower() in self.http_method_names:</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> handler = getattr(self, request.method.lower(), self.http_method_not_allowed)</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> else:</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> handler = self.http_method_not_allowed</pre></li>
- </ol>
- <ol start="88" class="context-line">
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre>
- return handler(request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='89' class="post-context" id="post140168015145480">
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre></pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> def http_method_not_allowed(self, request, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> logger.warning(</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> 'Method Not Allowed (%s): %s', request.method, request.path,</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> extra={'status_code': 405, 'request': request}</pre></li>
- <li onclick="toggle('pre140168015145480', 'post140168015145480')"><pre> )</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015145480')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015145480">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>handler</td>
- <td class="code"><pre><bound method CollectionMarkup.put of <datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438>></pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/wsgi/decorators.py</code> in <code>wrapper</code>
- <div class="context" id="c140168015146504">
- <ol start="77" class="pre-context" id="pre140168015146504">
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> return MessageResponse(403, _("Failed authentication."))</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre></pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> if not allow_unauthorized and not request.user.is_authenticated():</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> response = MessageResponse(401, _("Unauthorized access."))</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> response['WWW-Authenticate'] = WWW_AUTH_TEMPLATE.format(realm)</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> return response</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre></pre></li>
- </ol>
- <ol start="84" class="context-line">
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre>
- return method(view, request, *args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='85' class="post-context" id="post140168015146504">
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre></pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> return wrapper</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre></pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre> return decorator</pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre></pre></li>
- <li onclick="toggle('pre140168015146504', 'post140168015146504')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015146504')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015146504">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>allow_inactive</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>allow_unauthorized</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>method</td>
- <td class="code"><pre><function CollectionMarkup.put at 0x7f7b69dbe840></pre></td>
- </tr>
- <tr>
- <td>options</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>realm</td>
- <td class="code"><pre>'DataGator'</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>view</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>/usr/lib64/python3.4/contextlib.py</code> in <code>inner</code>
- <div class="context" id="c140168015146184">
- <ol start="23" class="pre-context" id="pre140168015146184">
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> """</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> return self</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre></pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> def __call__(self, func):</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> @wraps(func)</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> def inner(*args, **kwds):</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> with self._recreate_cm():</pre></li>
- </ol>
- <ol start="30" class="context-line">
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre>
- return func(*args, **kwds)</pre> <span>...</span></li></ol>
- <ol start='31' class="post-context" id="post140168015146184">
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> return inner</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre></pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre></pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre>class _GeneratorContextManager(ContextDecorator):</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre> """Helper for @contextmanager decorator."""</pre></li>
- <li onclick="toggle('pre140168015146184', 'post140168015146184')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015146184')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015146184">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>(<datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438>,
- <WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'>)</pre></td>
- </tr>
- <tr>
- <td>func</td>
- <td class="code"><pre><function CollectionMarkup.put at 0x7f7b69dbe620></pre></td>
- </tr>
- <tr>
- <td>kwds</td>
- <td class="code"><pre>{'name': 'dyad', 'repo': 'antonio'}</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.transaction.Atomic object at 0x7f7b69e33da0></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/api/portal/v2/mark.py</code> in <code>put</code>
- <div class="context" id="c140168015145736">
- <ol start="166" class="pre-context" id="pre140168015145736">
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> raise PermissionDenied(_("Permission mismatch."))</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> # update `created` timestamp only if marking the HEAD revision</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> if entity_rev == dataset.head:</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> mark.created = dt.datetime.now(tz=dt.UTC)</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> created = False</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre></pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> mark.data = mark_data</pre></li>
- </ol>
- <ol start="173" class="context-line">
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre>
- mark.save()</pre> <span>...</span></li></ol>
- <ol start='174' class="post-context" id="post140168015145736">
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre></pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> # ship out response</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> response = None</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> if created:</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> response = EntityResponse(201, mark)</pre></li>
- <li onclick="toggle('pre140168015145736', 'post140168015145736')"><pre> else:</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015145736')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015145736">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>actor</td>
- <td class="code"><pre><User: antonio></pre></td>
- </tr>
- <tr>
- <td>created</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>dataset</td>
- <td class="code"><pre><DataSet: antonio/dyad></pre></td>
- </tr>
- <tr>
- <td>entity</td>
- <td class="code"><pre><DataItem: antonio/dyad.48["ddddddd.recipe"]></pre></td>
- </tr>
- <tr>
- <td>entity_rev</td>
- <td class="code"><pre>48</pre></td>
- </tr>
- <tr>
- <td>mark</td>
- <td class="code"><pre><Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2></pre></td>
- </tr>
- <tr>
- <td>mark_comp_key</td>
- <td class="code"><pre>('testMark2', None)</pre></td>
- </tr>
- <tr>
- <td>mark_data</td>
- <td class="code"><pre>'www.test123.com'</pre></td>
- </tr>
- <tr>
- <td>name</td>
- <td class="code"><pre>'dyad'</pre></td>
- </tr>
- <tr>
- <td>predicates</td>
- <td class="code"><pre>{'creator_id': UUID('324e6020-e253-5b8e-8871-883ec17d0d45'),
- 'entity_ct': <ContentType: dataitem>,
- 'entity_id': UUID('b3c0ecec-ccde-5bda-9a0d-f0e745b02199'),
- 'name': 'testMark2'}</pre></td>
- </tr>
- <tr>
- <td>repo</td>
- <td class="code"><pre>'antonio'</pre></td>
- </tr>
- <tr>
- <td>request</td>
- <td class="code"><pre><WSGIRequest: PUT '/api/repo/antonio/dyad/mark/ddddddd.recipe'></pre></td>
- </tr>
- <tr>
- <td>rev</td>
- <td class="code"><pre>48</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><datagator.api.portal.v2.mark.CollectionMarkup object at 0x7f7b69a86438></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame user">
- <code>./datagator/ext/repodata/models/mark.py</code> in <code>save</code>
- <div class="context" id="c140168015146568">
- <ol start="119" class="pre-context" id="pre140168015146568">
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> def kind():</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> return "Mark"</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre></pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> # instance methods</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre></pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> def save(self, *args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> self.clean_fields()</pre></li>
- </ol>
- <ol start="126" class="context-line">
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre>
- return super(Mark, self).save(*args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='127' class="post-context" id="post140168015146568">
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre></pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> def to_dict(self):</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> serializable = OrderedDict([</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> ('kind', "datagator#{0}".format(self.kind())),</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> ('entity', self.entity.ref),</pre></li>
- <li onclick="toggle('pre140168015146568', 'post140168015146568')"><pre> ('name', self.name),</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015146568')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015146568">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>__class__</td>
- <td class="code"><pre><class 'datagator.ext.repodata.models.mark.Mark'></pre></td>
- </tr>
- <tr>
- <td>args</td>
- <td class="code"><pre>()</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py</code> in <code>save</code>
- <div class="context" id="c140168015144904">
- <ol start="789" class="pre-context" id="pre140168015144904">
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> if not field.primary_key and not hasattr(field, 'through'):</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> field_names.add(field.attname)</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> loaded_fields = field_names.difference(deferred_fields)</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> if loaded_fields:</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> update_fields = frozenset(loaded_fields)</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre></pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> self.save_base(using=using, force_insert=force_insert,</pre></li>
- </ol>
- <ol start="796" class="context-line">
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre>
- force_update=force_update, update_fields=update_fields)</pre> <span>...</span></li></ol>
- <ol start='797' class="post-context" id="post140168015144904">
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> save.alters_data = True</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre></pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> def save_base(self, raw=False, force_insert=False,</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> force_update=False, using=None, update_fields=None):</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> """</pre></li>
- <li onclick="toggle('pre140168015144904', 'post140168015144904')"><pre> Handles the parts of saving which should be done only once per save,</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015144904')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015144904">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>deferred_fields</td>
- <td class="code"><pre>set()</pre></td>
- </tr>
- <tr>
- <td>field</td>
- <td class="code"><pre><django.contrib.postgres.fields.jsonb.JSONField: data></pre></td>
- </tr>
- <tr>
- <td>force_insert</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>force_update</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>obj</td>
- <td class="code"><pre><ContentType: dataitem></pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2></pre></td>
- </tr>
- <tr>
- <td>update_fields</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>using</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py</code> in <code>save_base</code>
- <div class="context" id="c140168027901640">
- <ol start="817" class="pre-context" id="pre140168027901640">
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> meta = cls._meta</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> if not meta.auto_created:</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> signals.pre_save.send(sender=origin, instance=self, raw=raw, using=using,</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> update_fields=update_fields)</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> with transaction.atomic(using=using, savepoint=False):</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> if not raw:</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> self._save_parents(cls, using, update_fields)</pre></li>
- </ol>
- <ol start="824" class="context-line">
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre>
- updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)</pre> <span>...</span></li></ol>
- <ol start='825' class="post-context" id="post140168027901640">
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> # Store the database on which the object was saved</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> self._state.db = using</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> # Once saved, this is no longer a to-be-added instance.</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> self._state.adding = False</pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre></pre></li>
- <li onclick="toggle('pre140168027901640', 'post140168027901640')"><pre> # Signal that the save is complete</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168027901640')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168027901640">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>cls</td>
- <td class="code"><pre><class 'datagator.ext.repodata.models.mark.Mark'></pre></td>
- </tr>
- <tr>
- <td>force_insert</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>force_update</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>meta</td>
- <td class="code"><pre><Options for Mark></pre></td>
- </tr>
- <tr>
- <td>origin</td>
- <td class="code"><pre><class 'datagator.ext.repodata.models.mark.Mark'></pre></td>
- </tr>
- <tr>
- <td>raw</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2></pre></td>
- </tr>
- <tr>
- <td>update_fields</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>using</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py</code> in <code>_save_table</code>
- <div class="context" id="c140168027900488">
- <ol start="901" class="pre-context" id="pre140168027900488">
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> self._order = order_value</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre></pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> fields = meta.local_concrete_fields</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> if not pk_set:</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> fields = [f for f in fields if not isinstance(f, AutoField)]</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre></pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> update_pk = bool(meta.has_auto_field and not pk_set)</pre></li>
- </ol>
- <ol start="908" class="context-line">
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre>
- result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)</pre> <span>...</span></li></ol>
- <ol start='909' class="post-context" id="post140168027900488">
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> if update_pk:</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> setattr(self, meta.pk.attname, result)</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> return updated</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre></pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> def _do_update(self, base_qs, using, pk_val, values, update_fields, forced_update):</pre></li>
- <li onclick="toggle('pre140168027900488', 'post140168027900488')"><pre> """</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168027900488')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168027900488">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>cls</td>
- <td class="code"><pre><class 'datagator.ext.repodata.models.mark.Mark'></pre></td>
- </tr>
- <tr>
- <td>fields</td>
- <td class="code"><pre>[<django.db.models.fields.DateTimeField: created>,
- <django.db.models.fields.related.ForeignKey: creator>,
- <django.db.models.fields.related.ForeignKey: entity_ct>,
- <datagator.wsgi.fields.UUIDField: entity_id>,
- <datagator.wsgi.fields.UUIDField: id>,
- <django.db.models.fields.CharField: name>,
- <django.contrib.postgres.fields.jsonb.JSONField: data>]</pre></td>
- </tr>
- <tr>
- <td>force_insert</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>force_update</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>meta</td>
- <td class="code"><pre><Options for Mark></pre></td>
- </tr>
- <tr>
- <td>non_pks</td>
- <td class="code"><pre>[<django.db.models.fields.DateTimeField: created>,
- <django.db.models.fields.related.ForeignKey: creator>,
- <django.db.models.fields.related.ForeignKey: entity_ct>,
- <datagator.wsgi.fields.UUIDField: entity_id>,
- <django.db.models.fields.CharField: name>,
- <django.contrib.postgres.fields.jsonb.JSONField: data>]</pre></td>
- </tr>
- <tr>
- <td>pk_set</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>pk_val</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>raw</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2></pre></td>
- </tr>
- <tr>
- <td>update_fields</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>update_pk</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>updated</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>using</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py</code> in <code>_do_insert</code>
- <div class="context" id="c140168027899080">
- <ol start="940" class="pre-context" id="pre140168027899080">
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre></pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> def _do_insert(self, manager, using, fields, update_pk, raw):</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> """</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> Do an INSERT. If update_pk is defined then this method should return</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> the new pk for the model.</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> """</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> return manager._insert([self], fields=fields, return_id=update_pk,</pre></li>
- </ol>
- <ol start="947" class="context-line">
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre>
- using=using, raw=raw)</pre> <span>...</span></li></ol>
- <ol start='948' class="post-context" id="post140168027899080">
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre></pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> def delete(self, using=None, keep_parents=False):</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> using = using or router.db_for_write(self.__class__, instance=self)</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> assert self._get_pk_val() is not None, (</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> "%s object can't be deleted because its %s attribute is set to None." %</pre></li>
- <li onclick="toggle('pre140168027899080', 'post140168027899080')"><pre> (self._meta.object_name, self._meta.pk.attname)</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168027899080')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168027899080">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>fields</td>
- <td class="code"><pre>[<django.db.models.fields.DateTimeField: created>,
- <django.db.models.fields.related.ForeignKey: creator>,
- <django.db.models.fields.related.ForeignKey: entity_ct>,
- <datagator.wsgi.fields.UUIDField: entity_id>,
- <datagator.wsgi.fields.UUIDField: id>,
- <django.db.models.fields.CharField: name>,
- <django.contrib.postgres.fields.jsonb.JSONField: data>]</pre></td>
- </tr>
- <tr>
- <td>manager</td>
- <td class="code"><pre><django.db.models.manager.Manager object at 0x7f7b697960f0></pre></td>
- </tr>
- <tr>
- <td>raw</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2></pre></td>
- </tr>
- <tr>
- <td>update_pk</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>using</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/manager.py</code> in <code>manager_method</code>
- <div class="context" id="c140168027897992">
- <ol start="78" class="pre-context" id="pre140168027897992">
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> def check(self, **kwargs):</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> return []</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre></pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> @classmethod</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> def _get_queryset_methods(cls, queryset_class):</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> def create_method(name, method):</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> def manager_method(self, *args, **kwargs):</pre></li>
- </ol>
- <ol start="85" class="context-line">
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre>
- return getattr(self.get_queryset(), name)(*args, **kwargs)</pre> <span>...</span></li></ol>
- <ol start='86' class="post-context" id="post140168027897992">
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> manager_method.__name__ = method.__name__</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> manager_method.__doc__ = method.__doc__</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> return manager_method</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre></pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> new_methods = {}</pre></li>
- <li onclick="toggle('pre140168027897992', 'post140168027897992')"><pre> # Refs http://bugs.python.org/issue1785.</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168027897992')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168027897992">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>args</td>
- <td class="code"><pre>([<Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2>],)</pre></td>
- </tr>
- <tr>
- <td>kwargs</td>
- <td class="code"><pre>{'fields': [<django.db.models.fields.DateTimeField: created>,
- <django.db.models.fields.related.ForeignKey: creator>,
- <django.db.models.fields.related.ForeignKey: entity_ct>,
- <datagator.wsgi.fields.UUIDField: entity_id>,
- <datagator.wsgi.fields.UUIDField: id>,
- <django.db.models.fields.CharField: name>,
- <django.contrib.postgres.fields.jsonb.JSONField: data>],
- 'raw': False,
- 'return_id': False,
- 'using': 'default'}</pre></td>
- </tr>
- <tr>
- <td>name</td>
- <td class="code"><pre>'_insert'</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.models.manager.Manager object at 0x7f7b697960f0></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/query.py</code> in <code>_insert</code>
- <div class="context" id="c140168029461832">
- <ol start="1038" class="pre-context" id="pre140168029461832">
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> the InsertQuery class and is how Model.save() is implemented.</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> """</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> self._for_write = True</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> if using is None:</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> using = self.db</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> query = sql.InsertQuery(self.model)</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> query.insert_values(fields, objs, raw=raw)</pre></li>
- </ol>
- <ol start="1045" class="context-line">
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre>
- return query.get_compiler(using=using).execute_sql(return_id)</pre> <span>...</span></li></ol>
- <ol start='1046' class="post-context" id="post140168029461832">
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> _insert.alters_data = True</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> _insert.queryset_only = False</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre></pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> def _batched_insert(self, objs, fields, batch_size):</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> """</pre></li>
- <li onclick="toggle('pre140168029461832', 'post140168029461832')"><pre> A little helper method for bulk_insert to insert the bulk one batch</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168029461832')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168029461832">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>fields</td>
- <td class="code"><pre>[<django.db.models.fields.DateTimeField: created>,
- <django.db.models.fields.related.ForeignKey: creator>,
- <django.db.models.fields.related.ForeignKey: entity_ct>,
- <datagator.wsgi.fields.UUIDField: entity_id>,
- <datagator.wsgi.fields.UUIDField: id>,
- <django.db.models.fields.CharField: name>,
- <django.contrib.postgres.fields.jsonb.JSONField: data>]</pre></td>
- </tr>
- <tr>
- <td>objs</td>
- <td class="code"><pre>[<Mark: antonio/dyad.48["ddddddd.recipe"]/testMark2>]</pre></td>
- </tr>
- <tr>
- <td>query</td>
- <td class="code"><pre><django.db.models.sql.subqueries.InsertQuery object at 0x7f7b69ab08d0></pre></td>
- </tr>
- <tr>
- <td>raw</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>return_id</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><QuerySet [<Mark: Senko/lll.1/date>, <Mark: Senko/lll.1/citations>, <Mark: Senko/lll.1/acknowledgment>, <Mark: Senko/lll.1/metaLinks>, <Mark: Senko/lll.1/description>, <Mark: Senko/lll.1/notes>, <Mark: Senko/lll.1/additionalLinks>, <Mark: Senko/lll.1/sources>, <Mark: Senko/lll.1/units>, <Mark: Senko/lll.1/tags>, <Mark: Senko/TestDataset.2/time>, <Mark: Senko/TestDataset.2/additionalLinks>, <Mark: Senko/TestDataset.2/authors>, <Mark: Senko/TestDataset.2/citations>, <Mark: Senko/TestDataset.2/authors2>, <Mark: Senko/TestDataset.2/description>, <Mark: Senko/TestDataset.2/date>, <Mark: Senko/TestDataset.2/links>, <Mark: Senko/TestDataset.2/metaLinks>, <Mark: Senko/TestDataset.2/sources>, '...(remaining elements truncated)...']></pre></td>
- </tr>
- <tr>
- <td>using</td>
- <td class="code"><pre>'default'</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/models/sql/compiler.py</code> in <code>execute_sql</code>
- <div class="context" id="c140168028256904">
- <ol start="1047" class="pre-context" id="pre140168028256904">
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> assert not (</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> return_id and len(self.query.objs) != 1 and</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> not self.connection.features.can_return_ids_from_bulk_insert</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> )</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> self.return_id = return_id</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> with self.connection.cursor() as cursor:</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> for sql, params in self.as_sql():</pre></li>
- </ol>
- <ol start="1054" class="context-line">
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre>
- cursor.execute(sql, params)</pre> <span>...</span></li></ol>
- <ol start='1055' class="post-context" id="post140168028256904">
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> if not (return_id and cursor):</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> return</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> if self.connection.features.can_return_ids_from_bulk_insert and len(self.query.objs) > 1:</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> return self.connection.ops.fetch_returned_insert_ids(cursor)</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> if self.connection.features.can_return_id_from_insert:</pre></li>
- <li onclick="toggle('pre140168028256904', 'post140168028256904')"><pre> assert len(self.query.objs) == 1</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028256904')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028256904">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>cursor</td>
- <td class="code"><pre><django.db.backends.utils.CursorDebugWrapper object at 0x7f7b69a0c128></pre></td>
- </tr>
- <tr>
- <td>params</td>
- <td class="code"><pre>(datetime.datetime(2017, 1, 13, 13, 41, 26, 185576, tzinfo=<UTC>),
- UUID('324e6020-e253-5b8e-8871-883ec17d0d45'),
- 18,
- UUID('b3c0ecec-ccde-5bda-9a0d-f0e745b02199'),
- UUID('cade4338-d5a2-583e-a386-2571bf537a65'),
- 'testMark2',
- <psycopg2._json.Json object at 0x7f7b6995f470>)</pre></td>
- </tr>
- <tr>
- <td>return_id</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.models.sql.compiler.SQLInsertCompiler object at 0x7f7b69a0c940></pre></td>
- </tr>
- <tr>
- <td>sql</td>
- <td class="code"><pre>('INSERT INTO "community_mark" ("created", "creator_id", "entity_ct_id", '
- '"entity_id", "id", "name", "data") VALUES (%s, %s, %s, %s, %s, %s, %s)')</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py</code> in <code>execute</code>
- <div class="context" id="c140168014676872">
- <ol start="72" class="pre-context" id="pre140168014676872">
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre>class CursorDebugWrapper(CursorWrapper):</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre></pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> # XXX callproc isn't instrumented at this time.</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre></pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> def execute(self, sql, params=None):</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> start = time()</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> try:</pre></li>
- </ol>
- <ol start="79" class="context-line">
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre>
- return super(CursorDebugWrapper, self).execute(sql, params)</pre> <span>...</span></li></ol>
- <ol start='80' class="post-context" id="post140168014676872">
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> finally:</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> stop = time()</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> duration = stop - start</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> sql = self.db.ops.last_executed_query(self.cursor, sql, params)</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> self.db.queries_log.append({</pre></li>
- <li onclick="toggle('pre140168014676872', 'post140168014676872')"><pre> 'sql': sql,</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168014676872')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168014676872">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>__class__</td>
- <td class="code"><pre><class 'django.db.backends.utils.CursorDebugWrapper'></pre></td>
- </tr>
- <tr>
- <td>duration</td>
- <td class="code"><pre>0.001117706298828125</pre></td>
- </tr>
- <tr>
- <td>params</td>
- <td class="code"><pre>(datetime.datetime(2017, 1, 13, 13, 41, 26, 185576, tzinfo=<UTC>),
- UUID('324e6020-e253-5b8e-8871-883ec17d0d45'),
- 18,
- UUID('b3c0ecec-ccde-5bda-9a0d-f0e745b02199'),
- UUID('cade4338-d5a2-583e-a386-2571bf537a65'),
- 'testMark2',
- <psycopg2._json.Json object at 0x7f7b6995f470>)</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.backends.utils.CursorDebugWrapper object at 0x7f7b69a0c128></pre></td>
- </tr>
- <tr>
- <td>sql</td>
- <td class="code"><pre>('INSERT INTO "community_mark" ("created", "creator_id", "entity_ct_id", '
- '"entity_id", "id", "name", "data") VALUES '
- "('2017-01-13T13:41:26.185576+00:00'::timestamptz, "
- "'324e6020-e253-5b8e-8871-883ec17d0d45'::uuid, 18, "
- "'b3c0ecec-ccde-5bda-9a0d-f0e745b02199'::uuid, "
- "'cade4338-d5a2-583e-a386-2571bf537a65'::uuid, 'testMark2', "
- '\'"www.test123.com"\')')</pre></td>
- </tr>
- <tr>
- <td>start</td>
- <td class="code"><pre>1484314886.1886258</pre></td>
- </tr>
- <tr>
- <td>stop</td>
- <td class="code"><pre>1484314886.1897435</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py</code> in <code>execute</code>
- <div class="context" id="c140168015412040">
- <ol start="57" class="pre-context" id="pre140168015412040">
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre></pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> def execute(self, sql, params=None):</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> self.db.validate_no_broken_transaction()</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> with self.db.wrap_database_errors:</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> if params is None:</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> return self.cursor.execute(sql)</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> else:</pre></li>
- </ol>
- <ol start="64" class="context-line">
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre>
- return self.cursor.execute(sql, params)</pre> <span>...</span></li></ol>
- <ol start='65' class="post-context" id="post140168015412040">
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre></pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> def executemany(self, sql, param_list):</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> self.db.validate_no_broken_transaction()</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> with self.db.wrap_database_errors:</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre> return self.cursor.executemany(sql, param_list)</pre></li>
- <li onclick="toggle('pre140168015412040', 'post140168015412040')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168015412040')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168015412040">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>params</td>
- <td class="code"><pre>(datetime.datetime(2017, 1, 13, 13, 41, 26, 185576, tzinfo=<UTC>),
- UUID('324e6020-e253-5b8e-8871-883ec17d0d45'),
- 18,
- UUID('b3c0ecec-ccde-5bda-9a0d-f0e745b02199'),
- UUID('cade4338-d5a2-583e-a386-2571bf537a65'),
- 'testMark2',
- <psycopg2._json.Json object at 0x7f7b6995f470>)</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.backends.utils.CursorDebugWrapper object at 0x7f7b69a0c128></pre></td>
- </tr>
- <tr>
- <td>sql</td>
- <td class="code"><pre>('INSERT INTO "community_mark" ("created", "creator_id", "entity_ct_id", '
- '"entity_id", "id", "name", "data") VALUES (%s, %s, %s, %s, %s, %s, %s)')</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/utils.py</code> in <code>__exit__</code>
- <div class="context" id="c140168028685192">
- <ol start="87" class="pre-context" id="pre140168028685192">
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> dj_exc_value.__cause__ = exc_value</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> if not hasattr(exc_value, '__traceback__'):</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> exc_value.__traceback__ = traceback</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> # Only set the 'errors_occurred' flag for errors that may make</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> # the connection unusable.</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> if dj_exc_type not in (DataError, IntegrityError):</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> self.wrapper.errors_occurred = True</pre></li>
- </ol>
- <ol start="94" class="context-line">
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre>
- six.reraise(dj_exc_type, dj_exc_value, traceback)</pre> <span>...</span></li></ol>
- <ol start='95' class="post-context" id="post140168028685192">
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre></pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> def __call__(self, func):</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> # Note that we are intentionally not using @wraps here for performance</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> # reasons. Refs #21109.</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> def inner(*args, **kwargs):</pre></li>
- <li onclick="toggle('pre140168028685192', 'post140168028685192')"><pre> with self:</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168028685192')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168028685192">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>db_exc_type</td>
- <td class="code"><pre><class 'psycopg2.IntegrityError'></pre></td>
- </tr>
- <tr>
- <td>dj_exc_type</td>
- <td class="code"><pre><class 'django.db.utils.IntegrityError'></pre></td>
- </tr>
- <tr>
- <td>dj_exc_value</td>
- <td class="code"><pre>IntegrityError('duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"\nDETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.\n',)</pre></td>
- </tr>
- <tr>
- <td>exc_type</td>
- <td class="code"><pre><class 'psycopg2.IntegrityError'></pre></td>
- </tr>
- <tr>
- <td>exc_value</td>
- <td class="code"><pre>IntegrityError('duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"\nDETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.\n',)</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.utils.DatabaseErrorWrapper object at 0x7f7b6992f278></pre></td>
- </tr>
- <tr>
- <td>traceback</td>
- <td class="code"><pre><traceback object at 0x7f7b68e50308></pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/utils/six.py</code> in <code>reraise</code>
- <div class="context" id="c140168016565960">
- <ol start="678" class="pre-context" id="pre140168016565960">
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre>if PY3:</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> exec_ = getattr(moves.builtins, "exec")</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre></pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> def reraise(tp, value, tb=None):</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> if value is None:</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> value = tp()</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> if value.__traceback__ is not tb:</pre></li>
- </ol>
- <ol start="685" class="context-line">
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre>
- raise value.with_traceback(tb)</pre> <span>...</span></li></ol>
- <ol start='686' class="post-context" id="post140168016565960">
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> raise value</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre></pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre>else:</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> def exec_(_code_, _globs_=None, _locs_=None):</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> """Execute code in a namespace."""</pre></li>
- <li onclick="toggle('pre140168016565960', 'post140168016565960')"><pre> if _globs_ is None:</pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168016565960')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168016565960">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>tb</td>
- <td class="code"><pre><traceback object at 0x7f7b68e50308></pre></td>
- </tr>
- <tr>
- <td>tp</td>
- <td class="code"><pre><class 'django.db.utils.IntegrityError'></pre></td>
- </tr>
- <tr>
- <td>value</td>
- <td class="code"><pre>IntegrityError('duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"\nDETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.\n',)</pre></td>
- </tr>
- </tbody>
- </table>
- </li>
- <li class="frame django">
- <code>/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py</code> in <code>execute</code>
- <div class="context" id="c140168017543944">
- <ol start="57" class="pre-context" id="pre140168017543944">
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre></pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> def execute(self, sql, params=None):</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> self.db.validate_no_broken_transaction()</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> with self.db.wrap_database_errors:</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> if params is None:</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> return self.cursor.execute(sql)</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> else:</pre></li>
- </ol>
- <ol start="64" class="context-line">
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre>
- return self.cursor.execute(sql, params)</pre> <span>...</span></li></ol>
- <ol start='65' class="post-context" id="post140168017543944">
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre></pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> def executemany(self, sql, param_list):</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> self.db.validate_no_broken_transaction()</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> with self.db.wrap_database_errors:</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre> return self.cursor.executemany(sql, param_list)</pre></li>
- <li onclick="toggle('pre140168017543944', 'post140168017543944')"><pre></pre></li>
- </ol>
- </div>
- <div class="commands">
- <a href="#" onclick="return varToggle(this, '140168017543944')"><span>▶</span> Local vars</a>
- </div>
- <table class="vars" id="v140168017543944">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>params</td>
- <td class="code"><pre>(datetime.datetime(2017, 1, 13, 13, 41, 26, 185576, tzinfo=<UTC>),
- UUID('324e6020-e253-5b8e-8871-883ec17d0d45'),
- 18,
- UUID('b3c0ecec-ccde-5bda-9a0d-f0e745b02199'),
- UUID('cade4338-d5a2-583e-a386-2571bf537a65'),
- 'testMark2',
- <psycopg2._json.Json object at 0x7f7b6995f470>)</pre></td>
- </tr>
- <tr>
- <td>self</td>
- <td class="code"><pre><django.db.backends.utils.CursorDebugWrapper object at 0x7f7b69a0c128></pre></td>
- </tr>
- <tr>
- <td>sql</td>
- <td class="code"><pre>('INSERT INTO "community_mark" ("created", "creator_id", "entity_ct_id", '
- '"entity_id", "id", "name", "data") VALUES (%s, %s, %s, %s, %s, %s, %s)')</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="IntegrityError at /api/repo/antonio/dyad/mark/ddddddd.recipe">
- <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: PUT
- Request URL: https://dev.datagator.org/api/repo/antonio/dyad/mark/ddddddd.recipe
- Django Version: 1.10.4
- Python Version: 3.4.5
- Installed Applications:
- ('django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'django_redis',
- 'corsheaders',
- 'datagator.ext.repodata',
- 'datagator.ext.docindex',
- 'datagator.ext.docstore',
- 'datagator.ext.safezone',
- 'datagator.ext.taskqueue',
- 'datagator.api.portal')
- Installed Middleware:
- ('datagator.wsgi.middleware.CrossOriginMiddleware',
- 'datagator.wsgi.middleware.ConditionalGetMiddleware',
- 'datagator.wsgi.middleware.SessionMiddleware',
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware')
- Traceback:
- File "/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py" in execute
- 64. return self.cursor.execute(sql, params)
- The above exception (duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"
- DETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.
- ) was the direct cause of the following exception:
- File "/opt/datagator/lib/python3.4/site-packages/django/core/handlers/exception.py" in inner
- 39. response = get_response(request)
- File "/opt/datagator/lib/python3.4/site-packages/django/core/handlers/base.py" in _legacy_get_response
- 249. response = self._get_response(request)
- File "/opt/datagator/lib/python3.4/site-packages/django/core/handlers/base.py" in _get_response
- 187. response = self.process_exception_by_middleware(e, request)
- File "/opt/datagator/lib/python3.4/site-packages/django/core/handlers/base.py" in _get_response
- 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
- File "/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py" in view
- 68. return self.dispatch(request, *args, **kwargs)
- File "./datagator/wsgi/decorators.py" in wrapper
- 199. response = method(view, request, *args, **kwargs)
- File "./datagator/wsgi/views.py" in dispatch
- 59. response = super(Endpoint, self).dispatch(request, *args, **kwargs)
- File "/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py" in dispatch
- 88. return handler(request, *args, **kwargs)
- File "./datagator/wsgi/decorators.py" in wrapper
- 84. return method(view, request, *args, **kwargs)
- File "./datagator/api/portal/v2/mark.py" in put
- 317. return self.forward_request(request, repo, name, key, rev)
- File "./datagator/api/portal/v2/mark.py" in forward_request
- 337. return endpoint.func(request, *endpoint.args, **endpoint.kwargs)
- File "/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py" in view
- 68. return self.dispatch(request, *args, **kwargs)
- File "./datagator/wsgi/decorators.py" in wrapper
- 199. response = method(view, request, *args, **kwargs)
- File "./datagator/wsgi/views.py" in dispatch
- 59. response = super(Endpoint, self).dispatch(request, *args, **kwargs)
- File "/opt/datagator/lib/python3.4/site-packages/django/views/generic/base.py" in dispatch
- 88. return handler(request, *args, **kwargs)
- File "./datagator/wsgi/decorators.py" in wrapper
- 84. return method(view, request, *args, **kwargs)
- File "/usr/lib64/python3.4/contextlib.py" in inner
- 30. return func(*args, **kwds)
- File "./datagator/api/portal/v2/mark.py" in put
- 173. mark.save()
- File "./datagator/ext/repodata/models/mark.py" in save
- 126. return super(Mark, self).save(*args, **kwargs)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py" in save
- 796. force_update=force_update, update_fields=update_fields)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py" in save_base
- 824. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py" in _save_table
- 908. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/base.py" in _do_insert
- 947. using=using, raw=raw)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/manager.py" in manager_method
- 85. return getattr(self.get_queryset(), name)(*args, **kwargs)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/query.py" in _insert
- 1045. return query.get_compiler(using=using).execute_sql(return_id)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/models/sql/compiler.py" in execute_sql
- 1054. cursor.execute(sql, params)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py" in execute
- 79. return super(CursorDebugWrapper, self).execute(sql, params)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py" in execute
- 64. return self.cursor.execute(sql, params)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/utils.py" in __exit__
- 94. six.reraise(dj_exc_type, dj_exc_value, traceback)
- File "/opt/datagator/lib/python3.4/site-packages/django/utils/six.py" in reraise
- 685. raise value.with_traceback(tb)
- File "/opt/datagator/lib/python3.4/site-packages/django/db/backends/utils.py" in execute
- 64. return self.cursor.execute(sql, params)
- Exception Type: IntegrityError at /api/repo/antonio/dyad/mark/ddddddd.recipe
- Exception Value: duplicate key value violates unique constraint "community_mark_entity_ct_id_4145a28e_uniq"
- DETAIL: Key (entity_ct_id, entity_id, name, creator_id)=(18, b3c0ecec-ccde-5bda-9a0d-f0e745b02199, testMark2, 324e6020-e253-5b8e-8871-883ec17d0d45) already exists.
- </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>antonio</p>
- <h3 id="get-info">GET</h3>
- <p>No GET data</p>
- <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>
- <p>No cookie data</p>
- <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>'436'</pre></td>
- </tr>
- <tr>
- <td>CONTENT_TYPE</td>
- <td class="code"><pre>'application/json'</pre></td>
- </tr>
- <tr>
- <td>DOCUMENT_ROOT</td>
- <td class="code"><pre>'/usr/share/nginx/html'</pre></td>
- </tr>
- <tr>
- <td>HTTPS</td>
- <td class="code"><pre>'on'</pre></td>
- </tr>
- <tr>
- <td>HTTP_ACCEPT</td>
- <td class="code"><pre>'*/*'</pre></td>
- </tr>
- <tr>
- <td>HTTP_AUTHORIZATION</td>
- <td class="code"><pre>'Token BO3Voq6dq4IXbAVZyBSOT27oss6b0JsK'</pre></td>
- </tr>
- <tr>
- <td>HTTP_CONTENT_LENGTH</td>
- <td class="code"><pre>'436'</pre></td>
- </tr>
- <tr>
- <td>HTTP_CONTENT_TYPE</td>
- <td class="code"><pre>'application/json'</pre></td>
- </tr>
- <tr>
- <td>HTTP_HOST</td>
- <td class="code"><pre>'dev.datagator.org'</pre></td>
- </tr>
- <tr>
- <td>HTTP_USER_AGENT</td>
- <td class="code"><pre>'curl/7.47.0'</pre></td>
- </tr>
- <tr>
- <td>PATH_INFO</td>
- <td class="code"><pre>'/api/repo/antonio/dyad/mark/ddddddd.recipe'</pre></td>
- </tr>
- <tr>
- <td>QUERY_STRING</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>REMOTE_ADDR</td>
- <td class="code"><pre>'94.250.163.153'</pre></td>
- </tr>
- <tr>
- <td>REMOTE_PORT</td>
- <td class="code"><pre>'53265'</pre></td>
- </tr>
- <tr>
- <td>REQUEST_METHOD</td>
- <td class="code"><pre>'PUT'</pre></td>
- </tr>
- <tr>
- <td>REQUEST_SCHEME</td>
- <td class="code"><pre>'https'</pre></td>
- </tr>
- <tr>
- <td>REQUEST_URI</td>
- <td class="code"><pre>'/api/repo/antonio/dyad/mark/ddddddd.recipe'</pre></td>
- </tr>
- <tr>
- <td>SCRIPT_NAME</td>
- <td class="code"><pre>''</pre></td>
- </tr>
- <tr>
- <td>SERVER_NAME</td>
- <td class="code"><pre>'dev.datagator.org'</pre></td>
- </tr>
- <tr>
- <td>SERVER_PORT</td>
- <td class="code"><pre>'443'</pre></td>
- </tr>
- <tr>
- <td>SERVER_PROTOCOL</td>
- <td class="code"><pre>'HTTP/1.1'</pre></td>
- </tr>
- <tr>
- <td>UWSGI_APPID</td>
- <td class="code"><pre>'dev.datagator.org|'</pre></td>
- </tr>
- <tr>
- <td>uwsgi.core</td>
- <td class="code"><pre>15</pre></td>
- </tr>
- <tr>
- <td>uwsgi.node</td>
- <td class="code"><pre>b'dev.localdomain'</pre></td>
- </tr>
- <tr>
- <td>uwsgi.version</td>
- <td class="code"><pre>b'2.0.14'</pre></td>
- </tr>
- <tr>
- <td>wsgi.errors</td>
- <td class="code"><pre><_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'></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><uwsgi._Input object at 0x7f7b6b2f8e88></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>'https'</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>wsgi.settings.api.dev</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>(('liuyu', 'liuyu@opencps.net'),)</pre></td>
- </tr>
- <tr>
- <td>ALLOWED_HOSTS</td>
- <td class="code"><pre>['.datagator.org',
- 'datagator-1766875405.us-west-2.elb.amazonaws.com',
- 'dev.datagator.org']</pre></td>
- </tr>
- <tr>
- <td>APPEND_SLASH</td>
- <td class="code"><pre>False</pre></td>
- </tr>
- <tr>
- <td>AUTHENTICATION_BACKENDS</td>
- <td class="code"><pre>('datagator.ext.safezone.backends.EntityPermBackend',
- 'datagator.ext.safezone.backends.TokenAuthBackend',
- 'datagator.ext.safezone.backends.BasicAuthBackend')</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_PROFILE</td>
- <td class="code"><pre>{'default': {'ACCESS_KEY_ID': '********************',
- 'DEFAULT_REGION': 'us-west-2',
- 'SECRET_ACCESS_KEY': '********************'},
- 'webface': {'ACCESS_KEY_ID': '********************',
- 'DEFAULT_REGION': 'us-west-2',
- 'SECRET_ACCESS_KEY': '********************'}}</pre></td>
- </tr>
- <tr>
- <td>BASE_DIR</td>
- <td class="code"><pre>'/opt/datagator'</pre></td>
- </tr>
- <tr>
- <td>CACHES</td>
- <td class="code"><pre>{'default': {'BACKEND': 'django_redis.cache.RedisCache',
- 'LOCATION': 'redis://datagator-cache.0hzqk8.ng.0001.usw2.cache.amazonaws.com:6379/3',
- 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',
- 'IGNORE_EXCEPTIONS': True}}}</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>CORS_ALLOW_CREDENTIALS</td>
- <td class="code"><pre>True</pre></td>
- </tr>
- <tr>
- <td>CORS_ALLOW_HEADERS</td>
- <td class="code"><pre>('Authorization',
- 'Content-Type',
- 'If-Match',
- 'If-Modified-Since',
- 'If-None-Match',
- 'If-Unmodified-Since',
- 'Origin')</pre></td>
- </tr>
- <tr>
- <td>CORS_ALLOW_METHODS</td>
- <td class="code"><pre>('GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS')</pre></td>
- </tr>
- <tr>
- <td>CORS_EXPOSE_HEADERS</td>
- <td class="code"><pre>('ETag',
- 'Link',
- 'Location',
- 'X-RateLimit-Limit',
- 'X-RateLimit-Remaining',
- 'X-RateLimit-Reset',
- 'X-DataGator-Entity')</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>'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>DATABASES</td>
- <td class="code"><pre>{'default': {'ATOMIC_REQUESTS': False,
- 'AUTOCOMMIT': True,
- 'CONN_MAX_AGE': 0,
- 'ENGINE': 'django.db.backends.postgresql',
- 'HOST': 'datagator-rds.ctxyh8ivptji.us-west-2.rds.amazonaws.com',
- 'NAME': 'datagator_dev',
- 'OPTIONS': {},
- 'PASSWORD': '********************',
- 'PORT': '5432',
- 'TEST': {'CHARSET': None,
- 'COLLATION': None,
- 'MIRROR': None,
- 'NAME': None},
- 'TIME_ZONE': None,
- 'USER': 'datagator'}}</pre></td>
- </tr>
- <tr>
- <td>DATABASE_ROUTERS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>DATAGATOR_SETTINGS</td>
- <td class="code"><pre>'DEV'</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>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>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>'application/json'</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>'datagator.ext.docstore.DocStore'</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>DOCINDEX</td>
- <td class="code"><pre>{'default': {'HOST': 'search-datagator-ila7plcq3brgzdf72c5f2oznve.us-west-2.es.amazonaws.com',
- 'PORT': 443}}</pre></td>
- </tr>
- <tr>
- <td>DOCSTORE</td>
- <td class="code"><pre>{'default': {'BACKEND': 'datagator.ext.docstore.backends.s3.S3BucketStorage',
- 'NAME': 'store.dev.datagator.org'},
- 'download': {'BACKEND': 'datagator.ext.docstore.backends.s3.S3BucketStorage',
- 'NAME': 'download.dev.datagator.org'},
- 'upload': {'BACKEND': 'datagator.ext.docstore.backends.s3.S3BucketStorage',
- 'NAME': 'upload.dev.datagator.org'}}</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>'localhost'</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>''</pre></td>
- </tr>
- <tr>
- <td>EMAIL_PORT</td>
- <td class="code"><pre>25</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_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>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>('datagator.ext.docstore.DocUploadHandler',)</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>IGNORABLE_404_URLS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>INSTALLED_APPS</td>
- <td class="code"><pre>('django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'django_redis',
- 'corsheaders',
- 'datagator.ext.repodata',
- 'datagator.ext.docindex',
- 'datagator.ext.docstore',
- 'datagator.ext.safezone',
- 'datagator.ext.taskqueue',
- 'datagator.api.portal')</pre></td>
- </tr>
- <tr>
- <td>INTERNAL_IPS</td>
- <td class="code"><pre>[]</pre></td>
- </tr>
- <tr>
- <td>ITEMS_PER_PAGE</td>
- <td class="code"><pre>10</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,
- 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
- 'formatters': {'default': {'format': '%(asctime)s - %(levelname)s - '
- '%(name)s - %(message)s'}},
- 'handlers': {'console': {'class': 'logging.StreamHandler',
- 'formatter': 'default',
- 'level': 'DEBUG'},
- 'datagator.log': {'class': 'logging.FileHandler',
- 'filename': '/opt/datagator/log/datagator.log',
- 'formatter': 'default',
- 'level': 'DEBUG'},
- 'django.log': {'class': 'logging.FileHandler',
- 'filename': '/opt/datagator/log/django.log',
- 'formatter': 'default',
- 'level': 'DEBUG'},
- 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',
- 'filters': ['require_debug_false'],
- 'level': 'ERROR'},
- 'test.log': {'class': 'logging.FileHandler',
- 'filename': '/opt/datagator/log/test.log',
- 'formatter': 'default',
- 'level': 'DEBUG'}},
- 'loggers': {'datagator': {'handlers': ['datagator.log'],
- 'level': 'DEBUG',
- 'propagate': False},
- 'django': {'handlers': ['django.log'],
- 'level': 'INFO',
- 'propagate': False},
- 'test': {'handlers': ['test.log'],
- 'level': 'DEBUG',
- 'propagate': False}},
- '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>'/login'</pre></td>
- </tr>
- <tr>
- <td>LOGOUT_REDIRECT_URL</td>
- <td class="code"><pre>None</pre></td>
- </tr>
- <tr>
- <td>MANAGERS</td>
- <td class="code"><pre>(('liuyu', 'liuyu@opencps.net'),)</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>None</pre></td>
- </tr>
- <tr>
- <td>MIDDLEWARE_CLASSES</td>
- <td class="code"><pre>('datagator.wsgi.middleware.CrossOriginMiddleware',
- 'datagator.wsgi.middleware.ConditionalGetMiddleware',
- 'datagator.wsgi.middleware.SessionMiddleware',
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware')</pre></td>
- </tr>
- <tr>
- <td>MIGRATION_MODULES</td>
- <td class="code"><pre>{}</pre></td>
- </tr>
- <tr>
- <td>MONTH_DAY_FORMAT</td>
- <td class="code"><pre>'F j'</pre></td>
- </tr>
- <tr>
- <td>NUMBER_GROUPING</td>
- <td class="code"><pre>0</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>RATELIMIT</td>
- <td class="code"><pre>{'guest': {'1hr': (200, 3600)}, 'user': {'1hr': (2000, 3600)}}</pre></td>
- </tr>
- <tr>
- <td>ROOT_URLCONF</td>
- <td class="code"><pre>'datagator.api.portal.urls'</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_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>SERVER_EMAIL</td>
- <td class="code"><pre>'root@localhost'</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>1209600</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>'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.cache'</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>'wsgi.settings.api.dev'</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>SITE_ID</td>
- <td class="code"><pre>1</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>None</pre></td>
- </tr>
- <tr>
- <td>STATIC_URL</td>
- <td class="code"><pre>'/static/'</pre></td>
- </tr>
- <tr>
- <td>TASKQUEUE</td>
- <td class="code"><pre>{'default': {'BACKEND': 'datagator.ext.taskqueue.backends.zmq.ZMQManager',
- 'DEFAULT_QUEUE': 'datagator-async-tasks',
- 'LOCATION': 'https://sqs.us-west-2.amazonaws.com/166606634217/{queue}',
- 'pull': {'HOST': '0.0.0.0', 'PORT': 5555},
- 'push': {'HOST': '127.0.0.1', 'PORT': 5555}}}</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.template.context_processors.debug',
- 'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth',
- 'django.contrib.messages.context_processors.messages']}}]</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>'America/Denver'</pre></td>
- </tr>
- <tr>
- <td>USERNAME</td>
- <td class="code"><pre>{'MAX_LENGTH': 30,
- 'MIN_LENGTH': 5,
- 'RESERVED': ('admin',
- 'administrator',
- 'client',
- 'clients',
- 'collection',
- 'contact',
- 'contacts',
- 'component',
- 'components',
- 'comment',
- 'comments',
- 'credit',
- 'credits',
- 'donate',
- 'donation',
- 'download',
- 'downloads',
- 'extra',
- 'friend',
- 'friends',
- 'follow',
- 'follower',
- 'followers',
- 'index',
- 'kernel',
- 'manual',
- 'matrix',
- 'notes',
- 'opaque',
- 'operator',
- 'object',
- 'objects',
- 'payment',
- 'phone',
- 'profile',
- 'profiles',
- 'publication',
- 'publications',
- 'python',
- 'queue',
- 'recipe',
- 'sandbox',
- 'safezone',
- 'sites',
- 'stars',
- 'start',
- 'supervisor',
- 'supervisors',
- 'system',
- 'table',
- 'tables',
- 'tasks',
- 'tools',
- 'users',
- 'version',
- 'workflow',
- 'world',
- 'wizard')}</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>False</pre></td>
- </tr>
- <tr>
- <td>USE_L10N</td>
- <td class="code"><pre>False</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>WSGI_APPLICATION</td>
- <td class="code"><pre>'wsgi.wsgi.application'</pre></td>
- </tr>
- <tr>
- <td>X_FRAME_OPTIONS</td>
- <td class="code"><pre>'SAMEORIGIN'</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