- ID
- 7ac93224-f351-4f78-ba43-8ac4ff07c23f
2020-10-09 - Friday
[[id:010e5c72-3d51-45f3-bc3d-d4ac07fe11b8][Weekly Review]] with [[id:10b14f49-b275-45f5-b76b-fea159f0a75a][Andrii]]
- ID
- ccb77036-9e3f-4533-9e3f-63c33de64fc6
<2020-10-09 Fri 9:00-9:20>
Discussion on [[id:ef481268-f37b-43d0-b10b-1a52eb2d3236][Investigation of SAML login for Mobile]]
- ID
- 085eea72-f05d-43bf-861b-a7bf10786c62
+ From iOS we sign in using a "Sign in via SAML" button
+ Link opens mobile safari (or default web browser, which could cause a problem)
+ SAML session goes through in Safari
+ No SAML token can be sniffed, but we could re-open the app with a GET parameter that points to an API endpoint with SAML response
[[id:2fa72963-2a50-4b64-8eb4-271c735ee818][Gusto Partnership]] kick-off
Present
+ Dallas Tester GU
+ Matt Smallwood GU
+ Ailin Zeng GU
+ Jeff Federman GU
+ Harry K FF
+ Kapil Gupta FF
+ Colin Powell FF
Zeng on why
+ Gusto in early phases of customer research
+ How do they perceive a relationship between payroll and performance?
+ A lot is being done manually
+ Perf mangement being done in word or Gdocs
+ Some have perf management tools, but minimally
+ Comp changes, adding employees or view perf report is done manually
+ Lot of opportunities that we can solve with integration
+ Manual time spent going back and forth
+ Creating, deleting users
+ How their compensation changes as a result of perf reviews
Integration path
+ Usually with more complex HRIS systems, predefined scope
+ Workday took two quarters
Data sync frequency
+ Nightly cronjob
+ Webhooks from Shopify
- ID
- 42b9ccd0-7660-49a9-8b22-8b2b7de76dcc
[[id:e70ae393-e2c2-4e44-bbd8-bfd410a2c610][Friday Boost]]
[[id:7b5c0db6-16c7-447c-bd45-ace0f5ae1cdc][Friday Nature Hike]]
DONE Unblock [[id:d835101e-6d98-43a0-99d4-f74d5a1bb810][ENG-12734]] about investigating VPC support for Epic
CLOSED:
- ID
- deefd0d6-fa2e-41b5-99b2-ae19e7eb4e26
Using LocalStack to Test SFTP in 15Five
#+begin_src restclient :outputs none
POST https://15five.localhost/mobile/login?debug_api=1&check_signature=false
Content-Type: application/x-www-form-urlencoded
email=workday@15five.com&password=15five
#
#+end_src
#+begin_src restclient :output result
POST https://15five.localhost/sftp/receiver/
Content-Type: application/json
{ "Records": [ { "s3": { "object": { "key": "import.csv" } } } ] }
#+end_src
#+RESULTS:
#+begin_example
,#+BEGIN_SRC html
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>StopIteration
at /sftp/receiver/</title>
<style type="text/css">
html * { padding:0; margin:0; }
body * { padding:10px 20px; }
body * * { padding:0; }
body { font:small sans-serif; background-color:#fff; color:#000; }
body>div { border-bottom:1px solid #ddd; }
h1 { font-weight:normal; }
h2 { margin-bottom:.8em; }
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:#4f4f4f; }
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:#464646; 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; font-weight:normal; }
span.commands a:link {color:#5E5694;}
pre.exception_value { font-family: sans-serif; color: #575757; font-size: 1.5em; margin: 10px 0 10px 0; }
.append-bottom { margin-bottom: 10px; }
</style>
<script type="text/javascript">
function hideAll(elems) {
for (var e = 0; e < elems.length; e++) {
elems[e].style.display = 'none';
}
}
window.onload = function() {
hideAll(document.querySelectorAll('table.vars'));
hideAll(document.querySelectorAll('ol.pre-context'));
hideAll(document.querySelectorAll('ol.post-context'));
hideAll(document.querySelectorAll('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>StopIteration
at /sftp/receiver/</h1>
<pre class="exception_value">No exception message supplied</pre>
<table class="meta">
<tr>
<th>Request Method:</th>
<td>POST</td>
</tr>
<tr>
<th>Request URL:</th>
<td>https://15five.localhost/sftp/receiver/</td>
</tr>
<tr>
<th>Django Version:</th>
<td>2.2.13</td>
</tr>
<tr>
<th>Exception Type:</th>
<td>StopIteration</td>
</tr>
<tr>
<th>Exception Location:</th>
<td>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/unicodecsv/py3.py in __next__, line 55</td>
</tr>
<tr>
<th>Python Executable:</th>
<td>/home/powellc/.virtualenvs/ff/bin/python</td>
</tr>
<tr>
<th>Python Version:</th>
<td>3.8.5</td>
</tr>
<tr>
<th>Python Path:</th>
<td><pre>['/home/powellc/src/github.com/15five/fifteen5',
'/home/powellc/.virtualenvs/ff/bin',
'/home/powellc/src/github.com/15five/fifteen5',
'/home/powellc/.asdf/installs/python/3.8.5/lib/python38.zip',
'/home/powellc/.asdf/installs/python/3.8.5/lib/python3.8',
'/home/powellc/.asdf/installs/python/3.8.5/lib/python3.8/lib-dynload',
'/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages']</pre></td>
</tr>
<tr>
<th>Server time:</th>
<td>Tue, 13 Oct 2020 11:18:07 -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>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/core/handlers/exception.py</code> in <code>inner</code>
<div class="context" id="c140634057389376">
<ol start="27" class="pre-context" id="pre140634057389376">
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> This decorator is automatically applied to all middleware to ensure that</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> no middleware leaks an exception and that the next middleware in the stack</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> can rely on getting a response instead of an exception.</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> """</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> @wraps(get_response)</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> def inner(request):</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> try:</pre></li>
</ol>
<ol start="34" class="context-line">
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> response = get_response(request)</pre> <span>…</span></li>
</ol>
<ol start='35' class="post-context" id="post140634057389376">
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> except Exception as exc:</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> response = response_for_exception(request, exc)</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> return response</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre> return inner</pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre></pre></li>
<li onclick="toggle('pre140634057389376', 'post140634057389376')"><pre></pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057389376')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057389376">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>exc</td>
<td class="code"><pre>StopIteration()</pre></td>
</tr>
<tr>
<td>get_response</td>
<td class="code"><pre><bound method BaseHandler._get_response of <channels.http.AsgiHandler object at 0x7fe7ebfef3d0>></pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><AsgiRequest: POST '/sftp/receiver/'></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>
<div class="context" id="c140634057391680">
<ol start="108" class="pre-context" id="pre140634057391680">
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> break</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre></pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> try:</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> except Exception as e:</pre></li>
</ol>
<ol start="115" class="context-line">
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> response = self.process_exception_by_middleware(e, request)</pre> <span>…</span></li>
</ol>
<ol start='116' class="post-context" id="post140634057391680">
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre></pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> # Complain if the view returned None (a common error).</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> view_name = callback.__name__</pre></li>
<li onclick="toggle('pre140634057391680', 'post140634057391680')"><pre> else: # CBV</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391680')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391680">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>callback</td>
<td class="code"><pre><function ReceiverView at 0x7fe7f5b56b80></pre></td>
</tr>
<tr>
<td>callback_args</td>
<td class="code"><pre>()</pre></td>
</tr>
<tr>
<td>callback_kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>middleware_method</td>
<td class="code"><pre><bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7fe7f4e34730>></pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><AsgiRequest: POST '/sftp/receiver/'></pre></td>
</tr>
<tr>
<td>resolver</td>
<td class="code"><pre><URLResolver 'ff.urls' (None:None) '^/'></pre></td>
</tr>
<tr>
<td>resolver_match</td>
<td class="code"><pre>ResolverMatch(func=ff.mods.sftp.views.ReceiverView, args=(), kwargs={}, url_name=receiver, app_names=['sftp'], namespaces=['sftp'], route=sftp/receiver/)</pre></td>
</tr>
<tr>
<td>response</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><channels.http.AsgiHandler object at 0x7fe7ebfef3d0></pre></td>
</tr>
<tr>
<td>wrapped_callback</td>
<td class="code"><pre><function ReceiverView at 0x7fe7f5b56b80></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>
<div class="context" id="c140634057391616">
<ol start="106" class="pre-context" id="pre140634057391616">
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> if response:</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> break</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre></pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> try:</pre></li>
</ol>
<ol start="113" class="context-line">
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>…</span></li>
</ol>
<ol start='114' class="post-context" id="post140634057391616">
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> except Exception as e:</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> response = self.process_exception_by_middleware(e, request)</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre></pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> # Complain if the view returned None (a common error).</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre140634057391616', 'post140634057391616')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391616')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391616">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>callback</td>
<td class="code"><pre><function ReceiverView at 0x7fe7f5b56b80></pre></td>
</tr>
<tr>
<td>callback_args</td>
<td class="code"><pre>()</pre></td>
</tr>
<tr>
<td>callback_kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>middleware_method</td>
<td class="code"><pre><bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7fe7f4e34730>></pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><AsgiRequest: POST '/sftp/receiver/'></pre></td>
</tr>
<tr>
<td>resolver</td>
<td class="code"><pre><URLResolver 'ff.urls' (None:None) '^/'></pre></td>
</tr>
<tr>
<td>resolver_match</td>
<td class="code"><pre>ResolverMatch(func=ff.mods.sftp.views.ReceiverView, args=(), kwargs={}, url_name=receiver, app_names=['sftp'], namespaces=['sftp'], route=sftp/receiver/)</pre></td>
</tr>
<tr>
<td>response</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><channels.http.AsgiHandler object at 0x7fe7ebfef3d0></pre></td>
</tr>
<tr>
<td>wrapped_callback</td>
<td class="code"><pre><function ReceiverView at 0x7fe7f5b56b80></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/views/generic/base.py</code> in <code>view</code>
<div class="context" id="c140634057391744">
<ol start="64" class="pre-context" id="pre140634057391744">
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> self.head = self.get</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> self.setup(request, *args, **kwargs)</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> if not hasattr(self, 'request'):</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> raise AttributeError(</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> "%s instance has no 'request' attribute. Did you override "</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> "setup() and forget to call super()?" % cls.__name__</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> )</pre></li>
</ol>
<ol start="71" class="context-line">
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> return self.dispatch(request, *args, **kwargs)</pre> <span>…</span></li>
</ol>
<ol start='72' class="post-context" id="post140634057391744">
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> view.view_class = cls</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> view.view_initkwargs = initkwargs</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre></pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> # take name and docstring from class</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre> update_wrapper(view, cls, updated=())</pre></li>
<li onclick="toggle('pre140634057391744', 'post140634057391744')"><pre></pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391744')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391744">
<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 'ff.mods.sftp.views.ReceiverView'></pre></td>
</tr>
<tr>
<td>initkwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><AsgiRequest: POST '/sftp/receiver/'></pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><ff.mods.sftp.views.ReceiverView object at 0x7fe7eb657940></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/utils/decorators.py</code> in <code>_wrapper</code>
<div class="context" id="c140634057391808">
<ol start="38" class="pre-context" id="pre140634057391808">
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> # bound_method has the signature that 'decorator' expects i.e. no</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> # 'self' argument, but it's a closure over self so it can call</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> # 'func'. Also, wrap method.__get__() in a function because new</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> # attributes can't be set on bound method objects, only on functions.</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> bound_method = partial(method.__get__(self, type(self)))</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> for dec in decorators:</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> bound_method = dec(bound_method)</pre></li>
</ol>
<ol start="45" class="context-line">
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> return bound_method(*args, **kwargs)</pre> <span>…</span></li>
</ol>
<ol start='46' class="post-context" id="post140634057391808">
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre></pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> # Copy any attributes that a decorator adds to the function it decorates.</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> for dec in decorators:</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> _update_method_wrapper(_wrapper, dec)</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> # Preserve any existing attributes of 'method', including the name.</pre></li>
<li onclick="toggle('pre140634057391808', 'post140634057391808')"><pre> update_wrapper(_wrapper, method)</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391808')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391808">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>args</td>
<td class="code"><pre>(<AsgiRequest: POST '/sftp/receiver/'>,)</pre></td>
</tr>
<tr>
<td>bound_method</td>
<td class="code"><pre><function csrf_exempt.<locals>.wrapped_view at 0x7fe7eb708e50></pre></td>
</tr>
<tr>
<td>dec</td>
<td class="code"><pre><function csrf_exempt at 0x7fe80690d160></pre></td>
</tr>
<tr>
<td>decorators</td>
<td class="code"><pre>[<function csrf_exempt at 0x7fe80690d160>]</pre></td>
</tr>
<tr>
<td>kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>method</td>
<td class="code"><pre><function View.dispatch at 0x7fe8091ccd30></pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><ff.mods.sftp.views.ReceiverView object at 0x7fe7eb657940></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/views/decorators/csrf.py</code> in <code>wrapped_view</code>
<div class="context" id="c140634057391872">
<ol start="47" class="pre-context" id="pre140634057391872">
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre></pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre></pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre>def csrf_exempt(view_func):</pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> """Mark a view function as being exempt from the CSRF view protection."""</pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> # view_func.csrf_exempt = True would also work, but decorators are nicer</pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> # if they don't have side effects, so return a new function.</pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> def wrapped_view(*args, **kwargs):</pre></li>
</ol>
<ol start="54" class="context-line">
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> return view_func(*args, **kwargs)</pre> <span>…</span></li>
</ol>
<ol start='55' class="post-context" id="post140634057391872">
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> wrapped_view.csrf_exempt = True</pre></li>
<li onclick="toggle('pre140634057391872', 'post140634057391872')"><pre> return wraps(view_func)(wrapped_view)</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391872')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391872">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>args</td>
<td class="code"><pre>(<AsgiRequest: POST '/sftp/receiver/'>,)</pre></td>
</tr>
<tr>
<td>kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>view_func</td>
<td class="code"><pre>functools.partial(<bound method View.dispatch of <ff.mods.sftp.views.ReceiverView object at 0x7fe7eb657940>>)</pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/views/generic/base.py</code> in <code>dispatch</code>
<div class="context" id="c140634057391488">
<ol start="90" class="pre-context" id="pre140634057391488">
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> # Try to dispatch to the right method; if a method doesn't exist,</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> # defer to the error handler. Also defer to the error handler if the</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> # request method isn't on the approved list.</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> if request.method.lower() in self.http_method_names:</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> handler = getattr(self, request.method.lower(), self.http_method_not_allowed)</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> else:</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> handler = self.http_method_not_allowed</pre></li>
</ol>
<ol start="97" class="context-line">
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> return handler(request, *args, **kwargs)</pre> <span>…</span></li>
</ol>
<ol start='98' class="post-context" id="post140634057391488">
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre></pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> def http_method_not_allowed(self, request, *args, **kwargs):</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> logger.warning(</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> 'Method Not Allowed (%s): %s', request.method, request.path,</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> extra={'status_code': 405, 'request': request}</pre></li>
<li onclick="toggle('pre140634057391488', 'post140634057391488')"><pre> )</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391488')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391488">
<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 ReceiverView.post of <ff.mods.sftp.views.ReceiverView object at 0x7fe7eb657940>></pre></td>
</tr>
<tr>
<td>kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><AsgiRequest: POST '/sftp/receiver/'></pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><ff.mods.sftp.views.ReceiverView object at 0x7fe7eb657940></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>/home/powellc/src/github.com/15five/fifteen5/ff/mods/sftp/views.py</code> in <code>post</code>
<div class="context" id="c140634057391424">
<ol start="25" class="pre-context" id="pre140634057391424">
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre></pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> # Track what keys have been sent via SFTP for</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> # easier debugging.</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> models.SFTPReceipt.objects.create(</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> config=request.user.company.sftp_config, key=key,</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> )</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> # Pull from s3, verify, and send to bulk import</pre></li>
</ol>
<ol start="32" class="context-line">
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> process_key(request.user, key)</pre> <span>…</span></li>
</ol>
<ol start='33' class="post-context" id="post140634057391424">
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre></pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> return JsonResponse({'key': key})</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre></pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre></pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre>class SettingsView(</pre></li>
<li onclick="toggle('pre140634057391424', 'post140634057391424')"><pre> build_company_feature_settings_view_mixin('integrations'), ModelFormMixin, FormView</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391424')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391424">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>args</td>
<td class="code"><pre>()</pre></td>
</tr>
<tr>
<td>event</td>
<td class="code"><pre>{'Records': [{'s3': {'object': {'key': 'import.csv'}}}]}</pre></td>
</tr>
<tr>
<td>key</td>
<td class="code"><pre>'import.csv'</pre></td>
</tr>
<tr>
<td>kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><AsgiRequest: POST '/sftp/receiver/'></pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><ff.mods.sftp.views.ReceiverView object at 0x7fe7eb657940></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>/home/powellc/src/github.com/15five/fifteen5/ff/mods/hris/workday/utils.py</code> in <code>process_key</code>
<div class="context" id="c140634057392000">
<ol start="82" class="pre-context" id="pre140634057392000">
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> supported_bulk_import_column_names = [col[0] for col in BULK_IMPORT_COLUMNS]</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> bulk_csv_file = reduce_csv_file_columns(csv_file, supported_bulk_import_column_names)</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> return bulk_csv_file</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre></pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre></pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre>def process_key(assume_user, key) -> None:</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> original_csv_file = download_workday_csv_file(key)</pre></li>
</ol>
<ol start="89" class="context-line">
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> converted_csv_file = convert_workday_csv(original_csv_file)</pre> <span>…</span></li>
</ol>
<ol start='90' class="post-context" id="post140634057392000">
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre></pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> # send_to_bulk_import_now() creates a CSV object, calls verify_bulk_user_import(), returns</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> # errors if it is unable to continue the import, then calls process_bulk_user_import_file().</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> # Do we want to create groups?</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> (</pre></li>
<li onclick="toggle('pre140634057392000', 'post140634057392000')"><pre> error_results,</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057392000')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057392000">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>assume_user</td>
<td class="code"><pre><SimpleLazyObject: <SimpleLazyObject: (19819)workday@15five.com/50015>></pre></td>
</tr>
<tr>
<td>key</td>
<td class="code"><pre>'import.csv'</pre></td>
</tr>
<tr>
<td>original_csv_file</td>
<td class="code"><pre><_io.BytesIO object at 0x7fe7eb5a4ef0></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>/home/powellc/src/github.com/15five/fifteen5/ff/mods/hris/workday/utils.py</code> in <code>convert_workday_csv</code>
<div class="context" id="c140634057392064">
<ol start="76" class="pre-context" id="pre140634057392064">
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre>def convert_workday_csv(csv_file: BinaryIO) -> BinaryIO:</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> """</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> Helper method that converts a Workday CSV file into an</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> appropriate format suitable for Bulk Import usage</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> """</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> logger.info(f'Converting Workday CSV into Bulk Import compatible CSV')</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> supported_bulk_import_column_names = [col[0] for col in BULK_IMPORT_COLUMNS]</pre></li>
</ol>
<ol start="83" class="context-line">
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> bulk_csv_file = reduce_csv_file_columns(csv_file, supported_bulk_import_column_names)</pre> <span>…</span></li>
</ol>
<ol start='84' class="post-context" id="post140634057392064">
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> return bulk_csv_file</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre></pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre></pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre>def process_key(assume_user, key) -> None:</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> original_csv_file = download_workday_csv_file(key)</pre></li>
<li onclick="toggle('pre140634057392064', 'post140634057392064')"><pre> converted_csv_file = convert_workday_csv(original_csv_file)</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057392064')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057392064">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>csv_file</td>
<td class="code"><pre><_io.BytesIO object at 0x7fe7eb5a4ef0></pre></td>
</tr>
<tr>
<td>supported_bulk_import_column_names</td>
<td class="code"><pre>['email',
'first_name',
'last_name',
'title',
'due_day',
'reviewer_email',
'time_zone',
'add_to_groups',
'remove_from_groups',
'active_group_names',
'is_active',
'location',
'employee_id',
'job_description',
'strengths',
'saml_user_id',
'change_email_to',
'send_welcome_from',
'start_date',
'is_group_admin_for']</pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>/home/powellc/src/github.com/15five/fifteen5/ff/mods/hris/workday/utils.py</code> in <code>reduce_csv_file_columns</code>
<div class="context" id="c140634057391936">
<ol start="54" class="pre-context" id="pre140634057391936">
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre>def reduce_csv_file_columns(csv_file: BinaryIO, columns_to_keep: List) -> BinaryIO:</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> """Returns a file with only the specified columns from given CSV file"""</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> # Prepare to write an in memory CSV file with only the columns we want</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> in_memory_csv_file = io.BytesIO()</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> writer = SanitizedCSVDictWriter(in_memory_csv_file, columns_to_keep)</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> reader = get_csv_dict_reader(convert_to_bytes_io(csv_file), columns_to_keep)</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> # We have our field names, burn the header row</pre></li>
</ol>
<ol start="61" class="context-line">
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> next(reader)</pre> <span>…</span></li>
</ol>
<ol start='62' class="post-context" id="post140634057391936">
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre></pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> writer.writeheader()</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> for row in reader:</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> # All columns not in our field names will have a key of None, throw them out or pass if there are none</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> try:</pre></li>
<li onclick="toggle('pre140634057391936', 'post140634057391936')"><pre> del row[None]</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634057391936')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634057391936">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>columns_to_keep</td>
<td class="code"><pre>['email',
'first_name',
'last_name',
'title',
'due_day',
'reviewer_email',
'time_zone',
'add_to_groups',
'remove_from_groups',
'active_group_names',
'is_active',
'location',
'employee_id',
'job_description',
'strengths',
'saml_user_id',
'change_email_to',
'send_welcome_from',
'start_date',
'is_group_admin_for']</pre></td>
</tr>
<tr>
<td>csv_file</td>
<td class="code"><pre><_io.BytesIO object at 0x7fe7eb5a4ef0></pre></td>
</tr>
<tr>
<td>in_memory_csv_file</td>
<td class="code"><pre><_io.BytesIO object at 0x7fe7ea800a40></pre></td>
</tr>
<tr>
<td>reader</td>
<td class="code"><pre><unicodecsv.py3.DictReader object at 0x7fe7ea86daf0></pre></td>
</tr>
<tr>
<td>writer</td>
<td class="code"><pre><ff.core.csv_exports.SanitizedCSVDictWriter object at 0x7fe7ea86db20></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>/home/powellc/.asdf/installs/python/3.8.5/lib/python3.8/csv.py</code> in <code>__next__</code>
<div class="context" id="c140634063896320">
<ol start="104" class="pre-context" id="pre140634063896320">
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> def fieldnames(self, value):</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> self._fieldnames = value</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre></pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> def __next__(self):</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> if self.line_num == 0:</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> # Used only for its side effect.</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> self.fieldnames</pre></li>
</ol>
<ol start="111" class="context-line">
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> row = next(self.reader)</pre> <span>…</span></li>
</ol>
<ol start='112' class="post-context" id="post140634063896320">
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> self.line_num = self.reader.line_num</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre></pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> # unlike the basic reader, we prefer not to return blanks,</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> # because we will typically wind up with a dict full of None</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> # values</pre></li>
<li onclick="toggle('pre140634063896320', 'post140634063896320')"><pre> while row == []:</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634063896320')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634063896320">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>self</td>
<td class="code"><pre><unicodecsv.py3.DictReader object at 0x7fe7ea86daf0></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/unicodecsv/py3.py</code> in <code>__next__</code>
<div class="context" id="c140634048794816">
<ol start="48" class="pre-context" id="pre140634048794816">
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> for kwd_name in kwds.keys()]):</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> dialect = csv.excel</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre></pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> f = (bs.decode(encoding, errors=errors) for bs in f)</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> self.reader = csv.reader(f, dialect, **kwds)</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre></pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> def __next__(self):</pre></li>
</ol>
<ol start="55" class="context-line">
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> return self.reader.__next__()</pre> <span>…</span></li>
</ol>
<ol start='56' class="post-context" id="post140634048794816">
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre></pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> def __iter__(self):</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> return self</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre></pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> @property</pre></li>
<li onclick="toggle('pre140634048794816', 'post140634048794816')"><pre> def dialect(self):</pre></li>
</ol>
</div>
<div class="commands">
<a href="#" onclick="return varToggle(this, '140634048794816')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v140634048794816">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>self</td>
<td class="code"><pre><unicodecsv.py3.UnicodeReader object at 0x7fe7eb0bca60></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="StopIteration at /sftp/receiver/">
<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: POST
Request URL: https://15five.localhost/sftp/receiver/
Django Version: 2.2.13
Python Version: 3.8.5
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.humanize',
'django.contrib.postgres',
'django.forms',
'ajax_select',
'ff',
'ff.mods.admin',
'ff.mods.answer',
'ff.mods.account',
'ff.mods.api',
'ff.mods.attachments',
'ff.mods.attributes',
'ff.mods.avatars',
'ff.mods.best_self_academy_sso',
'ff.mods.best_self_kickoff',
'ff.mods.billing',
'ff.mods.bulkimport',
'ff.mods.bundles',
'ff.mods.calendar',
'ff.mods.comments',
'ff.mods.company',
'ff.mods.contentdisplay',
'ff.mods.customer',
'ff.mods.custom_report',
'ff.mods.dashboard',
'ff.mods.dev_company',
'ff.mods.devops',
'ff.mods.digest',
'ff.mods.email',
'ff.mods.engagement',
'ff.mods.expansion',
'ff.mods.external_services.churnzero',
'ff.mods.external_services.intercom',
'ff.mods.external_services.qualtrics',
'ff.mods.external_services.salesforce',
'ff.mods.features',
'ff.mods.followers',
'ff.mods.followups',
'ff.mods.freemium',
'ff.mods.goals',
'ff.mods.group',
'ff.mods.healthcheck',
'ff.mods.high_fives',
'ff.mods.hris.bamboo_hr',
'ff.mods.hris.namely',
'ff.mods.hris.workday',
'ff.mods.jira',
'ff.mods.maintenance',
'ff.mods.mentions',
'ff.mods.metrics',
'ff.mods.msteams',
'ff.mods.newsfeed',
'ff.mods.notifications',
'ff.mods.objectives',
'ff.mods.okr',
'ff.mods.old_stats',
'ff.mods.one_offs',
'ff.mods.onboarding',
'ff.mods.one_on_one',
'ff.mods.people_segments',
'ff.mods.profile',
'ff.mods.property_store',
'ff.mods.question',
'ff.mods.reactions',
'ff.mods.realtime_feedback',
'ff.mods.report',
'ff.mods.reporting.feedback',
'ff.mods.reporting.one_on_one_reports',
'ff.mods.reporting.sentiment_analysis',
'ff.mods.reviews',
'ff.mods.saml2',
'ff.mods.salesforce',
'ff.mods.scim',
'ff.mods.sftp',
'ff.mods.security_audit',
'ff.mods.sentiment',
'ff.mods.slack',
'ff.mods.splittesting',
'ff.mods.sql_reports',
'ff.mods.stats',
'ff.mods.survey',
'ff.mods.tags',
'ff.mods.question_bank',
'ff.mods.url_shortener',
'ff.mods.vacations',
'ff.mods.wins',
'ff.mods.zapier',
'simple_history',
'social_django',
'crispy_forms',
'django_extensions',
'compressor',
'django_js_reverse',
'import_export',
'distributedlock',
'macros',
'recurly',
'django_otp',
'django_otp.plugins.otp_static',
'django_otp.plugins.otp_totp',
'two_factor',
'push_notifications',
'fcm_django',
'app_overrides',
'webpack_loader',
'widget_tweaks',
'rest_framework',
'graphene_django',
'oauth2_provider',
'django_filters',
'channels',
'snowplow_tracker',
'djangoql',
'django_ltree',
'waffle',
'debug_toolbar',
'sandbox.common',
'ff.mods.internal_tools',
'sandbox.piotr_dev',
'sandbox.paul_dev.oauth']
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
'ff.core.middleware.append_slash_middleware',
'ff.core.middleware.FifteenFiveEarlyMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'ff.mods.msteams.middleware.msteams_auth_middleware',
'oauth2_provider.middleware.OAuth2TokenMiddleware',
'ff.mods.scim.middleware.CustomSCIMAuthCheckMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_otp.middleware.OTPMiddleware',
'ff.core.middleware.FifteenFiveCentralMiddleware',
'social_django.middleware.SocialAuthExceptionMiddleware',
'waffle.middleware.WaffleMiddleware',
'ff.core.middleware.FifteenFiveLateMiddleware',
'ff.core.middleware.PerformanceAlertingMiddleware')
Traceback:
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/utils/decorators.py" in _wrapper
45. return bound_method(*args, **kwargs)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/views/decorators/csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/django/views/generic/base.py" in dispatch
97. return handler(request, *args, **kwargs)
File "/home/powellc/src/github.com/15five/fifteen5/ff/mods/sftp/views.py" in post
32. process_key(request.user, key)
File "/home/powellc/src/github.com/15five/fifteen5/ff/mods/hris/workday/utils.py" in process_key
89. converted_csv_file = convert_workday_csv(original_csv_file)
File "/home/powellc/src/github.com/15five/fifteen5/ff/mods/hris/workday/utils.py" in convert_workday_csv
83. bulk_csv_file = reduce_csv_file_columns(csv_file, supported_bulk_import_column_names)
File "/home/powellc/src/github.com/15five/fifteen5/ff/mods/hris/workday/utils.py" in reduce_csv_file_columns
61. next(reader)
File "/home/powellc/.asdf/installs/python/3.8.5/lib/python3.8/csv.py" in __next__
111. row = next(self.reader)
File "/home/powellc/.virtualenvs/ff/lib/python3.8/site-packages/unicodecsv/py3.py" in __next__
55. return self.reader.__next__()
Exception Type: StopIteration at /sftp/receiver/
Exception Value:
</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>Workday Admin</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>
<table class="req">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>sessionid</td>
<td class="code"><pre>'cqo1g6bzzziolcn5gq2e1m5c7ax5fngm'</pre></td>
</tr>
<tr>
<td>ffRef</td>
<td class="code"><pre>'~GET=debug_api=1&check_signature=false'</pre></td>
</tr>
<tr>
<td>ff_csrf_token</td>
<td class="code"><pre>'n15f1Eh1Ters2aGg9npbFxuWSIVKqL5NvpwD2RFheLPA9UVL72KdaGdjkjN4WTjU'</pre></td>
</tr>
</tbody>
</table>
<h3 id="meta-info">META</h3>
<table class="req">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>CONTENT_LENGTH</td>
<td class="code"><pre>'66'</pre></td>
</tr>
<tr>
<td>CONTENT_TYPE</td>
<td class="code"><pre>'application/json'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE</td>
<td class="code"><pre>'n15f1Eh1Ters2aGg9npbFxuWSIVKqL5NvpwD2RFheLPA9UVL72KdaGdjkjN4WTjU'</pre></td>
</tr>
<tr>
<td>HTTP_ACCEPT</td>
<td class="code"><pre>'*/*'</pre></td>
</tr>
<tr>
<td>HTTP_ACCEPT_ENCODING</td>
<td class="code"><pre>'gzip'</pre></td>
</tr>
<tr>
<td>HTTP_CONNECTION</td>
<td class="code"><pre>'close'</pre></td>
</tr>
<tr>
<td>HTTP_COOKIE</td>
<td class="code"><pre>('sessionid=cqo1g6bzzziolcn5gq2e1m5c7ax5fngm; '
'ffRef=~GET=debug_api=1&check_signature=false; '
'ff_csrf_token=n15f1Eh1Ters2aGg9npbFxuWSIVKqL5NvpwD2RFheLPA9UVL72KdaGdjkjN4WTjU')</pre></td>
</tr>
<tr>
<td>HTTP_EXTENSION</td>
<td class="code"><pre>'Security/Digest Security/SSL'</pre></td>
</tr>
<tr>
<td>HTTP_HOST</td>
<td class="code"><pre>'15five.localhost'</pre></td>
</tr>
<tr>
<td>HTTP_MIME_VERSION</td>
<td class="code"><pre>'1.0'</pre></td>
</tr>
<tr>
<td>HTTP_X_FORWARDED_FOR</td>
<td class="code"><pre>'127.0.0.1'</pre></td>
</tr>
<tr>
<td>HTTP_X_FORWARDED_PORT</td>
<td class="code"><pre>'443'</pre></td>
</tr>
<tr>
<td>HTTP_X_FORWARDED_PROTO</td>
<td class="code"><pre>'https'</pre></td>
</tr>
<tr>
<td>PATH_INFO</td>
<td class="code"><pre>'/sftp/receiver/'</pre></td>
</tr>
<tr>
<td>QUERY_STRING</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>REMOTE_ADDR</td>
<td class="code"><pre>'127.0.0.1'</pre></td>
</tr>
<tr>
<td>REMOTE_HOST</td>
<td class="code"><pre>'127.0.0.1'</pre></td>
</tr>
<tr>
<td>REMOTE_PORT</td>
<td class="code"><pre>41878</pre></td>
</tr>
<tr>
<td>REQUEST_METHOD</td>
<td class="code"><pre>'POST'</pre></td>
</tr>
<tr>
<td>SCRIPT_NAME</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>SERVER_NAME</td>
<td class="code"><pre>'127.0.0.1'</pre></td>
</tr>
<tr>
<td>SERVER_PORT</td>
<td class="code"><pre>'8000'</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>
</tbody>
</table>
<h3 id="settings-info">Settings</h3>
<h4>Using settings module <code>ff.settings.dev.colin</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>(('Colin Powell', 'colin.powell@15five.com'),)</pre></td>
</tr>
<tr>
<td>ADMIN_SUBDOMAIN</td>
<td class="code"><pre>'admin'</pre></td>
</tr>
<tr>
<td>AJAX_SELECT_BOOTSTRAP</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>ALLOWED_HOSTS</td>
<td class="code"><pre>['*']</pre></td>
</tr>
<tr>
<td>ALLOW_ADMIN_PLAINTEXT_VIEW_COMPANY_REGEXES</td>
<td class="code"><pre>(re.compile('.*'),)</pre></td>
</tr>
<tr>
<td>API_SUBDOMAIN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>APPEND_SLASH</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>ASGI_APPLICATION</td>
<td class="code"><pre>'ff.routing.application'</pre></td>
</tr>
<tr>
<td>AUTHENTICATION_BACKENDS</td>
<td class="code"><pre>('ff.mods.account.backends.FFModelBackend',
'ff.mods.account.backends.AdminLoginAsAuthBackend',
'ff.mods.account.backends.AdminLoginAsExitAuthBackend',
'ff.mods.onboarding.authentication.OnboardingAutoLoginAuthBackend',
'ff.mods.account.backends.TempPasswordAutoLoginBackend',
'ff.mods.saml2.backends.SAML2Backend',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.google.GooglePlusAuth',
'oauth2_provider.backends.OAuth2Backend',
'ff.mods.sftp.backends.SFTPBackend')</pre></td>
</tr>
<tr>
<td>AUTH_PASSWORD_VALIDATORS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>AUTH_SUBDOMAIN</td>
<td class="code"><pre>'auth'</pre></td>
</tr>
<tr>
<td>AUTH_USER_MODEL</td>
<td class="code"><pre>'ff.User'</pre></td>
</tr>
<tr>
<td>AUTO_GENERATE_AVATAR_SIZES</td>
<td class="code"><pre>(25, 27, 30, 34, 48, 100)</pre></td>
</tr>
<tr>
<td>AVATAR_PROCESSING_ON_S3</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>AWS_DEFAULT_ACL</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>AWS_ENDPOINT_URL</td>
<td class="code"><pre>'http://localhost:4566'</pre></td>
</tr>
<tr>
<td>AWS_S3_COMPANY_EXPORT_BUILD_MAX_AGE</td>
<td class="code"><pre>86400</pre></td>
</tr>
<tr>
<td>AWS_S3_COMPANY_EXPORT_URL_EXPIRES_IN</td>
<td class="code"><pre>86400</pre></td>
</tr>
<tr>
<td>AWS_S3_OBJECT_PARAMETERS</td>
<td class="code"><pre>{'SSEKMSKeyId': '********************', 'ServerSideEncryption': 'aws:kms'}</pre></td>
</tr>
<tr>
<td>AWS_STORAGE_BUCKET_NAME_PRIVATE</td>
<td class="code"><pre>'local'</pre></td>
</tr>
<tr>
<td>AWS_STORAGE_BUCKET_NAME_PUBLIC</td>
<td class="code"><pre>'local'</pre></td>
</tr>
<tr>
<td>BAMBOO_HR_OPENID_APP_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>BAMBOO_HR_OPENID_CLIENT_ID</td>
<td class="code"><pre>'15five-bamboohr-7.17.2017'</pre></td>
</tr>
<tr>
<td>BAMBOO_HR_OPENID_CLIENT_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>BASE_QUALTRICS_API_URL</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>BEST_SELF_ACADEMY_API_PRIVATE_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>BEST_SELF_ACADEMY_SCHOOL_NAME</td>
<td class="code"><pre>'15five'</pre></td>
</tr>
<tr>
<td>BILLING_EMAIL</td>
<td class="code"><pre>'billing@15fiveit.com'</pre></td>
</tr>
<tr>
<td>BIWEEKLY_REFERENCE_WEEK_START</td>
<td class="code"><pre>datetime.date(2001, 1, 1)</pre></td>
</tr>
<tr>
<td>CACHES</td>
<td class="code"><pre>{'debug-panel': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'debug-panel-cache'},
'default': {'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/',
'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'SERIALIZER': 'ff.DjangoRedisOverrideJSONSerializer'}},
'local': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'base-cache'}}</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>CELERY_BROKER_URL</td>
<td class="code"><pre>'redis://127.0.0.1:6379/'</pre></td>
</tr>
<tr>
<td>CELERY_TASK_ALWAYS_EAGER</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>CELERY_TASK_DEFAULT_QUEUE</td>
<td class="code"><pre>'celery'</pre></td>
</tr>
<tr>
<td>CELERY_TASK_EAGER_PROPAGATES</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>CELERY_TASK_IGNORE_RESULT</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>CELERY_TASK_QUEUES_METADATA</td>
<td class="code"><pre>{'bundle': {'warning_size': 100},
'celery': {'warning_size': 100},
'external': {'warning_size': 10000},
'notification': {'warning_size': 100},
'ordered': {'warning_size': 10},
'snowplow': {'warning_size': 1000}}</pre></td>
</tr>
<tr>
<td>CELERY_TASK_ROUTES</td>
<td class="code"><pre>{'ff.mods.account.*': {'queue': 'test6'},
'ff.mods.answer.*': {'queue': 'test5'},
'ff.mods.api.*': '********************',
'ff.mods.avatars.*': {'queue': 'test4'},
'ff.mods.billing.recurlydata.subscriptions.update_billing_add_ons': {'queue': 'ordered'},
'ff.mods.billing.recurlydata.subscriptions.update_subscription_add_ons_in_recurly': {'queue': 'test7'},
'ff.mods.billing.tasks.start_charging_for_user': {'queue': 'test7'},
'ff.mods.billing.tasks.stop_charging_for_user': {'queue': 'test7'},
'ff.mods.bulkimport.*': {'queue': 'test7'},
'ff.mods.bundles.tasks.build_bundle_cache': {'queue': 'bundle'},
'ff.mods.calendar.*': {'queue': 'test6'},
'ff.mods.comments.*': {'queue': 'notification'},
'ff.mods.company.*': {'queue': 'test2'},
'ff.mods.custom_report.tasks.generate_custom_report': {'queue': 'test5'},
'ff.mods.custom_report.tasks.send_custom_report_build_completed_notif_task': {'queue': 'notification'},
'ff.mods.dashboard.*': {'queue': 'test7'},
'ff.mods.dev_company.*': {'queue': 'test6'},
'ff.mods.email.*': {'queue': 'test4'},
'ff.mods.engagement.*': {'queue': 'test6'},
'ff.mods.external_services.*': {'queue': 'external'},
'ff.mods.group.*': {'queue': 'test7'},
'ff.mods.high_fives.*': {'queue': 'test2'},
'ff.mods.hris.*': {'queue': 'test5'},
'ff.mods.jira.*': {'queue': 'test3'},
'ff.mods.mentions.*': {'queue': 'notification'},
'ff.mods.notifications.*': {'queue': 'notification'},
'ff.mods.objectives.*': {'queue': 'test2'},
'ff.mods.onboarding.*': {'queue': 'test7'},
'ff.mods.one_offs.*': {'queue': 'test7'},
'ff.mods.one_on_one.*': {'queue': 'test3'},
'ff.mods.realtime_feedback.*': {'queue': 'test7'},
'ff.mods.report.tasks.all_in_one': {'queue': 'test1'},
'ff.mods.report.tasks.create_report_placeholder_for_due_date_and_company_users': {'queue': 'test1'},
'ff.mods.report.tasks.mark_reports_for_users_as_private': {'queue': 'test1'},
'ff.mods.report.tasks.on_draft_report_creation': {'queue': 'test1'},
'ff.mods.report.tasks.process_answer_mentions_for_report_answers': {'queue': 'test1'},
'ff.mods.report.tasks.request_to_edit_report_notif': {'queue': 'notification'},
'ff.mods.report.tasks.review_unreviewed_reports': {'queue': 'test1'},
'ff.mods.report.tasks.send_notifications_on_report_submission': {'queue': 'notification'},
'ff.mods.report.tasks.send_report_marked_editable_email': {'queue': 'notification'},
'ff.mods.report.tasks.send_report_reviewed_email': {'queue': 'notification'},
'ff.mods.report.tasks.send_report_reviewed_notifications': {'queue': 'notification'},
'ff.mods.report.tasks.send_report_submitted_notification_emails': {'queue': 'notification'},
'ff.mods.report.tasks.send_report_submitted_notifications': {'queue': 'notification'},
'ff.mods.report.tasks.send_report_submitted_slack_messages': {'queue': 'notification'},
'ff.mods.reporting.*': {'queue': 'slow'},
'ff.mods.reviews.api.notifications.*': '********************',
'ff.mods.reviews.cycles.emails.*': {'queue': 'test7'},
'ff.mods.reviews.cycles.individual_settings.notifications.*': {'queue': 'notification'},
'ff.mods.reviews.cycles.notifications.*': {'queue': 'notification'},
'ff.mods.reviews.cycles.slack.*': {'queue': 'test7'},
'ff.mods.reviews.cycles.utils.change_reviewer': {'queue': 'ordered'},
'ff.mods.reviews.cycles.utils.start_cycle': {'queue': 'test7'},
'ff.mods.reviews.fillout.notifications.*': {'queue': 'notification'},
'ff.mods.reviews.question_templates.notifications.*': {'queue': 'notification'},
'ff.mods.reviews.settings.notifications.*': {'queue': 'notification'},
'ff.mods.scim.*': {'queue': 'test6'},
'ff.mods.slack.*': {'queue': 'test5'},
'ff.mods.vacations.*': {'queue': 'test3'},
'snowplow_tracker.emitters.send_events': {'queue': 'snowplow'}}</pre></td>
</tr>
<tr>
<td>CELERY_WORKER_DISABLE_RATE_LIMITS</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>CHANNEL_LAYERS</td>
<td class="code"><pre>{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {'hosts': [('127.0.0.1', 6379)]}}}</pre></td>
</tr>
<tr>
<td>CHURNZERO_APP_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>CHURNZERO_SECRET_TOKEN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>CLEARBIT_ACCOUNT_ID</td>
<td class="code"><pre>'92341edf-23ec-4ec0-ab1d-99a4d28d68a7'</pre></td>
</tr>
<tr>
<td>CLEARBIT_API_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>CLIENTSUCCESS_PASSWORD</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>CLIENTSUCCESS_USER</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>CLOUDMAILIN_BASIC_AUTH_LOGIN</td>
<td class="code"><pre>'15five'</pre></td>
</tr>
<tr>
<td>CLOUDMAILIN_BASIC_AUTH_PASS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>COMMENT_DELETE_SECONDS</td>
<td class="code"><pre>604800</pre></td>
</tr>
<tr>
<td>COMMENT_REPLY_PREFIX_BY_VPC</td>
<td class="code"><pre>{'cloud100': 'comment',
'cloud101': 'comment-c6',
'cloud102': 'comment-c102',
'cloud5': 'comment',
'dev': 'comment'}</pre></td>
</tr>
<tr>
<td>COMPANY_TEMPLATES</td>
<td class="code"><pre>{'admin-enterprise': 'squads_sandbox.squad_admin.templates.enterprise_company.ResetForm',
'bsr-enterprise': 'squads_sandbox.squad_bsr.performance.enterprise_company.ResetForm',
'freemium': 'ff.mods.freemium.company_templates.basic.BasicFreemiumResetForm',
'simple-demo': 'ff.mods.dev_company.tests.test_basic.SimpleDemoResetForm',
'simple-dev': 'ff.mods.dev_company.tests.test_basic.SimpleDevResetForm',
'v1': 'ff.mods.dev_company.demo_v1.ResetForm',
'v1-full': 'ff.mods.dev_company.demo_v1.ResetFullForm',
'v1-more-objs': 'ff.mods.dev_company.demo_v1.ResetMoreObjectivesForm',
'v2': 'ff.mods.dev_company.demo_v2.ResetForm',
'v2-example': 'ff.mods.dev_company.demo_v2.ExampleResetForm'}</pre></td>
</tr>
<tr>
<td>COMPRESSORS</td>
<td class="code"><pre>{'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}</pre></td>
</tr>
<tr>
<td>COMPRESS_BABEL_TRANSPILE</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>COMPRESS_CACHEABLE_PRECOMPILERS</td>
<td class="code"><pre>('text/babel',)</pre></td>
</tr>
<tr>
<td>COMPRESS_CACHE_BACKEND</td>
<td class="code"><pre>'default'</pre></td>
</tr>
<tr>
<td>COMPRESS_CACHE_KEY_FUNCTION</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>COMPRESS_CLEAN_CSS_ARGUMENTS</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>COMPRESS_CLEAN_CSS_BINARY</td>
<td class="code"><pre>'cleancss'</pre></td>
</tr>
<tr>
<td>COMPRESS_CLOSURE_COMPILER_ARGUMENTS</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>COMPRESS_CLOSURE_COMPILER_BINARY</td>
<td class="code"><pre>'java -jar compiler.jar'</pre></td>
</tr>
<tr>
<td>COMPRESS_CSS_HASHING_METHOD</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>COMPRESS_DATA_URI_MAX_SIZE</td>
<td class="code"><pre>1024</pre></td>
</tr>
<tr>
<td>COMPRESS_DEBUG_TOGGLE</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>COMPRESS_ENABLED</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>COMPRESS_FILTERS</td>
<td class="code"><pre>{'css': ['compressor.filters.css_default.CssAbsoluteFilter'],
'js': ['compressor.filters.jsmin.JSMinFilter']}</pre></td>
</tr>
<tr>
<td>COMPRESS_JINJA2_GET_ENVIRONMENT</td>
<td class="code"><pre><function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7fe7feef3310></pre></td>
</tr>
<tr>
<td>COMPRESS_MINT_DELAY</td>
<td class="code"><pre>30</pre></td>
</tr>
<tr>
<td>COMPRESS_MTIME_DELAY</td>
<td class="code"><pre>10</pre></td>
</tr>
<tr>
<td>COMPRESS_OFFLINE</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>COMPRESS_OFFLINE_CONTEXT</td>
<td class="code"><pre>{'STATIC_URL': '/static/'}</pre></td>
</tr>
<tr>
<td>COMPRESS_OFFLINE_MANIFEST</td>
<td class="code"><pre>'manifest-da2043.json'</pre></td>
</tr>
<tr>
<td>COMPRESS_OFFLINE_TIMEOUT</td>
<td class="code"><pre>31536000</pre></td>
</tr>
<tr>
<td>COMPRESS_OUTPUT_DIR</td>
<td class="code"><pre>'CACHE'</pre></td>
</tr>
<tr>
<td>COMPRESS_PARSER</td>
<td class="code"><pre>'compressor.parser.AutoSelectParser'</pre></td>
</tr>
<tr>
<td>COMPRESS_PRECOMPILERS</td>
<td class="code"><pre>(('text/babel', 'ff.core.compressor_precompilers.BabelCompilerFilter'),)</pre></td>
</tr>
<tr>
<td>COMPRESS_REBUILD_TIMEOUT</td>
<td class="code"><pre>2592000</pre></td>
</tr>
<tr>
<td>COMPRESS_ROOT</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/collected-static'</pre></td>
</tr>
<tr>
<td>COMPRESS_STORAGE</td>
<td class="code"><pre>'compressor.storage.CompressorFileStorage'</pre></td>
</tr>
<tr>
<td>COMPRESS_TEMPLATE_FILTER_CONTEXT</td>
<td class="code"><pre>{'STATIC_URL': '/static/'}</pre></td>
</tr>
<tr>
<td>COMPRESS_URL</td>
<td class="code"><pre>'/static/'</pre></td>
</tr>
<tr>
<td>COMPRESS_URL_PLACEHOLDER</td>
<td class="code"><pre>'/__compressor_url_placeholder__/'</pre></td>
</tr>
<tr>
<td>COMPRESS_VERBOSE</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>COMPRESS_YUGLIFY_BINARY</td>
<td class="code"><pre>'yuglify'</pre></td>
</tr>
<tr>
<td>COMPRESS_YUGLIFY_CSS_ARGUMENTS</td>
<td class="code"><pre>'--terminal'</pre></td>
</tr>
<tr>
<td>COMPRESS_YUGLIFY_JS_ARGUMENTS</td>
<td class="code"><pre>'--terminal'</pre></td>
</tr>
<tr>
<td>COMPRESS_YUI_BINARY</td>
<td class="code"><pre>'java -jar yuicompressor.jar'</pre></td>
</tr>
<tr>
<td>COMPRESS_YUI_CSS_ARGUMENTS</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>COMPRESS_YUI_JS_ARGUMENTS</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>CONN_MAX_AGE</td>
<td class="code"><pre>600</pre></td>
</tr>
<tr>
<td>CREATE_SELF_SERVICE_TRIALS_FROM_SALESFORCE</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>CRISPY_TEMPLATE_PACK</td>
<td class="code"><pre>'bootstrap4'</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>'.15five.localhost'</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>'ff_csrf_token'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_PATH</td>
<td class="code"><pre>'/'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_SAMESITE</td>
<td class="code"><pre>'Lax'</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>'ff.core.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>['.15five.localhost']</pre></td>
</tr>
<tr>
<td>CSRF_USE_SESSIONS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>CURRENT_COMMIT_SHA</td>
<td class="code"><pre>'da2043028f0678289e757f980265e6007139b144'</pre></td>
</tr>
<tr>
<td>CUSTOMER_FACING_SALESFORCE_OAUTH_CLIENT_ID</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>CUSTOMER_FACING_SALESFORCE_OAUTH_CLIENT_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>CUSTOMER_FACING_SALESFORCE_USE_SANDBOX</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>CUSTOM_REPORT_RECORD_DETAILS</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>DASHBOARD_REPORT_PLACEHOLDERS_RELEASE_DATE</td>
<td class="code"><pre>datetime.date(2015, 10, 1)</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_psycopg2',
'HOST': '127.0.0.1',
'NAME': 'fifteen5',
'OPTIONS': {},
'PASSWORD': '********************',
'PORT': '5432',
'TEST': {'CHARSET': None,
'COLLATION': None,
'MIRROR': None,
'NAME': None},
'TIME_ZONE': None,
'USER': 'fifteen5'}}</pre></td>
</tr>
<tr>
<td>DATABASE_ROUTERS</td>
<td class="code"><pre>['ff.core.db.MasterMirrorRouter']</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>DAYS_TO_RETAIN_HRIS_IMPORT_DETAILS</td>
<td class="code"><pre>30</pre></td>
</tr>
<tr>
<td>DB_ALIAS_MASTER</td>
<td class="code"><pre>'default'</pre></td>
</tr>
<tr>
<td>DB_ALIAS_MIRROR</td>
<td class="code"><pre>'default'</pre></td>
</tr>
<tr>
<td>DB_ALIAS_MIRRORS</td>
<td class="code"><pre>['default']</pre></td>
</tr>
<tr>
<td>DB_ALIAS_MIRROR_ASYNC</td>
<td class="code"><pre>'default'</pre></td>
</tr>
<tr>
<td>DEBUG</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>DEBUG_PROPAGATE_EXCEPTIONS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>DEBUG_TOOLBAR_CONFIG</td>
<td class="code"><pre>{'DISABLE_PANELS': {'debug_toolbar.panels.redirects.RedirectsPanel'},
'ENABLE_STACKTRACES': True,
'SHOW_TOOLBAR_CALLBACK': 'ff.core.debug_toolbar.show_debug_toolbar'}</pre></td>
</tr>
<tr>
<td>DEBUG_TOOLBAR_PANELS</td>
<td class="code"><pre>('debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
'debug_toolbar.panels.profiling.ProfilingPanel')</pre></td>
</tr>
<tr>
<td>DEBUG_TOOLBAR_PATCH_SETTINGS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>DECIMAL_SEPARATOR</td>
<td class="code"><pre>'.'</pre></td>
</tr>
<tr>
<td>DEFAULT_APP_SUBDOMAIN</td>
<td class="code"><pre>'my'</pre></td>
</tr>
<tr>
<td>DEFAULT_CHARSET</td>
<td class="code"><pre>'utf-8'</pre></td>
</tr>
<tr>
<td>DEFAULT_COMMENT_REPLY_PREFIX</td>
<td class="code"><pre>'comment'</pre></td>
</tr>
<tr>
<td>DEFAULT_CONTENT_TYPE</td>
<td class="code"><pre>'text/html'</pre></td>
</tr>
<tr>
<td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
<td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td>
</tr>
<tr>
<td>DEFAULT_FILE_STORAGE</td>
<td class="code"><pre>'django.core.files.storage.FileSystemStorage'</pre></td>
</tr>
<tr>
<td>DEFAULT_FROM_EMAIL</td>
<td class="code"><pre>'webmaster@localhost'</pre></td>
</tr>
<tr>
<td>DEFAULT_INDEX_TABLESPACE</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>DEFAULT_SENDER_ADDRESS_AND_NAME</td>
<td class="code"><pre>'notifications@15five.com'</pre></td>
</tr>
<tr>
<td>DEFAULT_SENDER_EMAIL_ADDRESS</td>
<td class="code"><pre>'notifications@15five.com'</pre></td>
</tr>
<tr>
<td>DEFAULT_SENDER_NAME</td>
<td class="code"><pre>'15Five'</pre></td>
</tr>
<tr>
<td>DEFAULT_TABLESPACE</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>DEFAULT_TIMEZONE</td>
<td class="code"><pre>'America/Los_Angeles'</pre></td>
</tr>
<tr>
<td>DEFAULT_TRIAL_LENGTH_DAYS</td>
<td class="code"><pre>14</pre></td>
</tr>
<tr>
<td>DEMO_REQUEST_EMAIL_ADDRESS</td>
<td class="code"><pre>'colin.powell@15five.com'</pre></td>
</tr>
<tr>
<td>DEV_ENV</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>DEV_SUPPRESS_EMAIL</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>DISALLOWED_USER_AGENTS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>DISTRIBUTEDLOCK_CLIENT</td>
<td class="code"><pre>'database'</pre></td>
</tr>
<tr>
<td>DISTRIBUTEDLOCK_TIMEOUT</td>
<td class="code"><pre>300</pre></td>
</tr>
<tr>
<td>DO_NOT_EMAIL_PREF_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>ELASTICSEARCH_HOST</td>
<td class="code"><pre>'elasticsearch1.cloud0'</pre></td>
</tr>
<tr>
<td>ELASTICSEARCH_PORT</td>
<td class="code"><pre>9200</pre></td>
</tr>
<tr>
<td>EMAIL_BACKEND</td>
<td class="code"><pre>'django.core.mail.backends.smtp.EmailBackend'</pre></td>
</tr>
<tr>
<td>EMAIL_HOST</td>
<td class="code"><pre>'mailhog.local'</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>None</pre></td>
</tr>
<tr>
<td>EMAIL_LINK_SUBDOMAIN</td>
<td class="code"><pre>'email'</pre></td>
</tr>
<tr>
<td>EMAIL_PORT</td>
<td class="code"><pre>'1025'</pre></td>
</tr>
<tr>
<td>EMAIL_REPLY_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>EMAIL_REPLY_TO_DOMAIN</td>
<td class="code"><pre>'reply.15five.com'</pre></td>
</tr>
<tr>
<td>EMAIL_SSL_CERTFILE</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>EMAIL_SSL_KEYFILE</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>EMAIL_SUBJECT_PREFIX</td>
<td class="code"><pre>'[Django] '</pre></td>
</tr>
<tr>
<td>EMAIL_TIMEOUT</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>EMAIL_USE_LOCALTIME</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>EMAIL_USE_SSL</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>EMAIL_USE_TLS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>ENABLE_DRIFT_ONBOARDING_FLOW</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>ENABLE_HTML_REPL</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>ENABLE_SALESFORCE_WEBHOOKS</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>ENCRYPT_CUSTOMER_DATA</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>ENVIRONMENT_SUPPORTS_SSL</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>ENV_NAME</td>
<td class="code"><pre>'local-env'</pre></td>
</tr>
<tr>
<td>ES_DOMAIN</td>
<td class="code"><pre>'cloud0'</pre></td>
</tr>
<tr>
<td>FCM_DJANGO_SETTINGS</td>
<td class="code"><pre>{'DELETE_INACTIVE_DEVICES': False,
'ERRORS': {'invalid_package_name': 'InvalidPackageName',
'invalid_registration': 'InvalidRegistration',
'missing_registration': 'MissingRegistration',
'not_registered': 'NotRegistered'},
'FCM_SERVER': 'https://fcm.googleapis.com/fcm/send',
'FCM_SERVER_KEY': '********************',
'ONE_DEVICE_PER_USER': False,
'USER_MODEL': 'ff.User'}</pre></td>
</tr>
<tr>
<td>FF_DATA_ENCRYPTION_MASTER_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>FIELDS_STORED_IN_SESSION</td>
<td class="code"><pre>['action']</pre></td>
</tr>
<tr>
<td>FIFTEEN5_EMAIL_DOMAIN</td>
<td class="code"><pre>'@15five.localhost'</pre></td>
</tr>
<tr>
<td>FILESTACK_API_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>FILESTACK_APP_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>FILE_CHARSET</td>
<td class="code"><pre>'utf-8'</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_HANDLERS</td>
<td class="code"><pre>['django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
<td class="code"><pre>2621440</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_PERMISSIONS</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_TEMP_DIR</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>FIRST_DAY_OF_WEEK</td>
<td class="code"><pre>0</pre></td>
</tr>
<tr>
<td>FIXTURE_DIRS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>FORCE_SCRIPT_NAME</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>FORMAT_MODULE_PATH</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>FORM_RENDERER</td>
<td class="code"><pre>'django.forms.renderers.DjangoTemplates'</pre></td>
</tr>
<tr>
<td>GLOBAL_CACHE_BUNDLES</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>GOOGLE_ANALYTICS_APP_TRACKING_CODE</td>
<td class="code"><pre>'UA-PLACEHLDR-2'</pre></td>
</tr>
<tr>
<td>GOOGLE_ANALYTICS_FRONT_TRACKING_CODE</td>
<td class="code"><pre>'UA-PLACEHLDR-1'</pre></td>
</tr>
<tr>
<td>GOOGLE_DISPLAY_NAME</td>
<td class="code"><pre>'15Five'</pre></td>
</tr>
<tr>
<td>HTTP_PROTOCOL_STR</td>
<td class="code"><pre>'https://'</pre></td>
</tr>
<tr>
<td>IGNORABLE_404_URLS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>INCLUDE_EXTERNAL_SERVICES</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>INSTALLED_APPS</td>
<td class="code"><pre>['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.humanize',
'django.contrib.postgres',
'django.forms',
'ajax_select',
'ff',
'ff.mods.admin',
'ff.mods.answer',
'ff.mods.account',
'ff.mods.api',
'ff.mods.attachments',
'ff.mods.attributes',
'ff.mods.avatars',
'ff.mods.best_self_academy_sso',
'ff.mods.best_self_kickoff',
'ff.mods.billing',
'ff.mods.bulkimport',
'ff.mods.bundles',
'ff.mods.calendar',
'ff.mods.comments',
'ff.mods.company',
'ff.mods.contentdisplay',
'ff.mods.customer',
'ff.mods.custom_report',
'ff.mods.dashboard',
'ff.mods.dev_company',
'ff.mods.devops',
'ff.mods.digest',
'ff.mods.email',
'ff.mods.engagement',
'ff.mods.expansion',
'ff.mods.external_services.churnzero',
'ff.mods.external_services.intercom',
'ff.mods.external_services.qualtrics',
'ff.mods.external_services.salesforce',
'ff.mods.features',
'ff.mods.followers',
'ff.mods.followups',
'ff.mods.freemium',
'ff.mods.goals',
'ff.mods.group',
'ff.mods.healthcheck',
'ff.mods.high_fives',
'ff.mods.hris.bamboo_hr',
'ff.mods.hris.namely',
'ff.mods.hris.workday',
'ff.mods.jira',
'ff.mods.maintenance',
'ff.mods.mentions',
'ff.mods.metrics',
'ff.mods.msteams',
'ff.mods.newsfeed',
'ff.mods.notifications',
'ff.mods.objectives',
'ff.mods.okr',
'ff.mods.old_stats',
'ff.mods.one_offs',
'ff.mods.onboarding',
'ff.mods.one_on_one',
'ff.mods.people_segments',
'ff.mods.profile',
'ff.mods.property_store',
'ff.mods.question',
'ff.mods.reactions',
'ff.mods.realtime_feedback',
'ff.mods.report',
'ff.mods.reporting.feedback',
'ff.mods.reporting.one_on_one_reports',
'ff.mods.reporting.sentiment_analysis',
'ff.mods.reviews',
'ff.mods.saml2',
'ff.mods.salesforce',
'ff.mods.scim',
'ff.mods.sftp',
'ff.mods.security_audit',
'ff.mods.sentiment',
'ff.mods.slack',
'ff.mods.splittesting',
'ff.mods.sql_reports',
'ff.mods.stats',
'ff.mods.survey',
'ff.mods.tags',
'ff.mods.question_bank',
'ff.mods.url_shortener',
'ff.mods.vacations',
'ff.mods.wins',
'ff.mods.zapier',
'simple_history',
'social_django',
'crispy_forms',
'django_extensions',
'compressor',
'django_js_reverse',
'import_export',
'distributedlock',
'macros',
'recurly',
'django_otp',
'django_otp.plugins.otp_static',
'django_otp.plugins.otp_totp',
'two_factor',
'push_notifications',
'fcm_django',
'app_overrides',
'webpack_loader',
'widget_tweaks',
'rest_framework',
'graphene_django',
'oauth2_provider',
'django_filters',
'channels',
'snowplow_tracker',
'djangoql',
'django_ltree',
'waffle',
'debug_toolbar',
'sandbox.common',
'ff.mods.internal_tools',
'sandbox.piotr_dev',
'sandbox.paul_dev.oauth']</pre></td>
</tr>
<tr>
<td>INTERCOM_DELETE_INACTIVE_USERS_DELAY_IN_DAYS</td>
<td class="code"><pre>14</pre></td>
</tr>
<tr>
<td>INTERCOM_IO_APP_ID</td>
<td class="code"><pre>'i57gzr9'</pre></td>
</tr>
<tr>
<td>INTERCOM_IO_PERSONAL_ACCESS_TOKEN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>INTERCOM_IO_SECRET_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>INTERNAL_IPS</td>
<td class="code"><pre>('127.0.0.1',)</pre></td>
</tr>
<tr>
<td>INTERNAL_NOTIFICATION_ADDRESSES</td>
<td class="code"><pre>(('colin.powell@15fiveit.com', 'Colin Powell'),)</pre></td>
</tr>
<tr>
<td>INTERNAL_NOTIFICATION_ADDRESSES_DEVS</td>
<td class="code"><pre>(('devs@15five.com', ''),)</pre></td>
</tr>
<tr>
<td>JIRA_OAUTH_CLIENT_ID</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>JIRA_OAUTH_CLIENT_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>JS_REVERSE_EXCLUDE_NAMESPACES</td>
<td class="code"><pre>['admin']</pre></td>
</tr>
<tr>
<td>JS_REVERSE_JS_MINIFY</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>JS_REVERSE_OUTPUT_PATH</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/ff/static/js'</pre></td>
</tr>
<tr>
<td>JS_REVERSE_WRITE_ON_EACH_REQUEST</td>
<td class="code"><pre>True</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'),
('hy', 'Armenian'),
('ia', 'Interlingua'),
('id', 'Indonesian'),
('io', 'Ido'),
('is', 'Icelandic'),
('it', 'Italian'),
('ja', 'Japanese'),
('ka', 'Georgian'),
('kab', 'Kabyle'),
('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>('/home/powellc/src/github.com/15five/fifteen5/ff/locale',)</pre></td>
</tr>
<tr>
<td>LOCAL_LOGGER</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>LOCAL_SCRIPTS_TO_RUN</td>
<td class="code"><pre>('squads_sandbox.squad_company.enterprise_local_dev',
'squads_sandbox.squad_company.bamboohr_local_dev',
'squads_sandbox.squad_company.saml_okta_local_dev',
'squads_sandbox.squad_company.scim_okta_local_dev',
'squads_sandbox.squad_company.sftp_workday_local_dev')</pre></td>
</tr>
<tr>
<td>LOGGING</td>
<td class="code"><pre>{'disable_existing_loggers': True,
'filters': {'grumpy': {'()': <class 'ff.settings.dev.colin.GrumpyColinFilter'>,
'skip': (('ff.mods.report.models',
'Incorrect editing/submitting state for '
'15five'),
('ff.mods.external_services.churnzero.tasks',
'ChurnZero is not configured. Skipping '
'send_churnzero_event.'),
('ff.mods.external_services.churnzero.decorators',
'ChurnZero is not configured. Skipping '
'operation.'),
('ff.mods.reporting.feedback.handlers',
'create_or_update_intermediate_model'),
('ff.core.access', 'get_struct_user_by_id'),
('ff.core.access',
'load_reviewer_structure_from_db'),
('ff.core.access',
'load_group_structure_from_db'),
('ff.signals',
'reviewer_pre_delete_rep_rev_flags'),
())}},
'formatters': {'color': {'()': 'colorlog.ColoredFormatter',
'format': '{log_color}{levelname:8s}{reset} '
'{thin_white}{message}',
'style': '{'},
'color-verbose': {'()': 'colorlog.ColoredFormatter',
'format': '\r'
'{log_color}{levelname:8s}{reset} '
'{bold_cyan}{name}{reset}:{fg_bold_red}{lineno}{reset} '
'{thin_yellow}{funcName} '
'{thin_white}{message}{reset}',
'style': '{'},
'sqlformatter': {'()': 'sqlformatter.SqlFormatter',
'format': '%(levelname)s %(message)s'}},
'handlers': {'color': {'class': 'logging.StreamHandler',
'filters': ['grumpy'],
'formatter': 'color'},
'color-verbose': {'class': 'logging.StreamHandler',
'filters': ['grumpy'],
'formatter': 'color-verbose'},
'elasticsearch': {'auth_type': <AuthType.NO_AUTH: 0>,
'class': 'cmreslogging.handlers.CMRESHandler',
'es_additional_fields': {'App': 'Test',
'Environment': 'Dev'},
'es_index_name': 'fifteen5',
'hosts': [{'host': 'logging.local',
'port': 9200}],
'level': 'DEBUG',
'use_ssl': False},
'no-color': {'class': 'logging.StreamHandler',
'filters': ['grumpy']},
'sqlhandler': {'class': 'logging.StreamHandler',
'formatter': 'sqlformatter',
'level': 'DEBUG'}},
'loggers': {'django.db.backends': {'handlers': ['elasticsearch'],
'level': 'DEBUG',
'propagate': True},
'ff': {'handlers': ['color-verbose', 'elasticsearch'],
'level': 'DEBUG',
'propagate': True}},
'root': {'handlers': [], 'level': 'ERROR'},
'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>''</pre></td>
</tr>
<tr>
<td>LOGIN_URL</td>
<td class="code"><pre>'/'</pre></td>
</tr>
<tr>
<td>LOGOUT_REDIRECT_URL</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>LOG_LEVEL</td>
<td class="code"><pre>'DEBUG'</pre></td>
</tr>
<tr>
<td>LOG_TO_FLUENTD</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>MAIN_DOMAIN</td>
<td class="code"><pre>'15five.localhost'</pre></td>
</tr>
<tr>
<td>MAIN_DOMAINS_OF_ALL_CLOUDS</td>
<td class="code"><pre>('15five.localhost',)</pre></td>
</tr>
<tr>
<td>MAIN_ONBOARDING_TRACK_MANAGER</td>
<td class="code"><pre>'ff.mods.onboarding.pumpkin_spice.managers.PumpkinSpiceOnboardingTrackManager'</pre></td>
</tr>
<tr>
<td>MANAGEMENT_COMMAND_LOCK_GRACE_PERIOD</td>
<td class="code"><pre>60</pre></td>
</tr>
<tr>
<td>MANAGERS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>MEDIA_ROOT</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/media'</pre></td>
</tr>
<tr>
<td>MEDIA_URL</td>
<td class="code"><pre>'/media/'</pre></td>
</tr>
<tr>
<td>MESSAGE_STORAGE</td>
<td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>
</tr>
<tr>
<td>METABASE_SECRET_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>METABASE_SITE_URL</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>METRICS_DISPLAY_PAST_REPORTS</td>
<td class="code"><pre>4</pre></td>
</tr>
<tr>
<td>MFA_ISSUER</td>
<td class="code"><pre>'15Five'</pre></td>
</tr>
<tr>
<td>MICROSOFT_TEAMS_ACCESS_TOKEN_EXPIRE_SECONDS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>MICROSOFT_TEAMS_TOKEN_REFRESH_IF_EXPIRES_WITHIN_DAYS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>MIDDLEWARE</td>
<td class="code"><pre>('debug_toolbar.middleware.DebugToolbarMiddleware',
'ff.core.middleware.append_slash_middleware',
'ff.core.middleware.FifteenFiveEarlyMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'ff.mods.msteams.middleware.msteams_auth_middleware',
'oauth2_provider.middleware.OAuth2TokenMiddleware',
'ff.mods.scim.middleware.CustomSCIMAuthCheckMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_otp.middleware.OTPMiddleware',
'ff.core.middleware.FifteenFiveCentralMiddleware',
'social_django.middleware.SocialAuthExceptionMiddleware',
'waffle.middleware.WaffleMiddleware',
'ff.core.middleware.FifteenFiveLateMiddleware',
'ff.core.middleware.PerformanceAlertingMiddleware')</pre></td>
</tr>
<tr>
<td>MIGRATION_MODULES</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>MOBILE_API_SECRET_KEY</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>MY_EMAIL_PREFIX</td>
<td class="code"><pre>'colin.powell'</pre></td>
</tr>
<tr>
<td>MY_FULL_NAME</td>
<td class="code"><pre>'Colin Powell'</pre></td>
</tr>
<tr>
<td>NAMELY_OAUTH_CLIENT_ID</td>
<td class="code"><pre>'mymsv4hhYE6HPeGvYRQHTsUAH2z7vwZOccELbwVUukde4JHepVQKZdfoVTIEaGFK'</pre></td>
</tr>
<tr>
<td>NAMELY_OAUTH_CLIENT_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>NODE_IP</td>
<td class="code"><pre>'127.0.0.1'</pre></td>
</tr>
<tr>
<td>NO_REPLY_EMAIL_ADDRESS</td>
<td class="code"><pre>'do_not_reply@15five.com'</pre></td>
</tr>
<tr>
<td>NO_REPLY_NAME</td>
<td class="code"><pre>'15Five'</pre></td>
</tr>
<tr>
<td>NUMBER_GROUPING</td>
<td class="code"><pre>0</pre></td>
</tr>
<tr>
<td>OAUTH2_PROVIDER</td>
<td class="code"><pre>{'ACCESS_TOKEN_EXPIRE_SECONDS': '********************',
'REFRESH_TOKEN_EXPIRE_SECONDS': '********************'}</pre></td>
</tr>
<tr>
<td>OKTA_LOCAL_DEV_APP_NAME</td>
<td class="code"><pre>'unblinkdev331277_testingapp_1'</pre></td>
</tr>
<tr>
<td>OKTA_LOCAL_DEV_CERT</td>
<td class="code"><pre>('MIIDpDCCAoygAwIBAgIGAXPivQR7MA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEG\n'
'A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\n'
'MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0zMzEyNzcxHDAaBgkqhkiG9w0BCQEW\n'
'DWluZm9Ab2t0YS5jb20wHhcNMjAwODEyMTI1NDA1WhcNMzAwODEyMTI1NTA1WjCBkjELMAkGA1UE\n'
'BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\n'
'BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMzMxMjc3MRwwGgYJ\n'
'KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n'
'sQuky38M5jWLslvAKLKPmobADjkpnLhZD5aIwqTkTXFlRcVnJZ84K4PVtx1k1qstRbhPEcvEYX1y\n'
'7SSqwS7SatSAEdAbyKaflfXi1tkAAMYh/Me5/3w/gDbAVNXRlVcRBpZhNvtfRHLiiRzINZrMoRk+\n'
'xzhCLc19r/UvybybVA4KnYGr6lHwHhhZfXCyVGKVtz1lNyHMfmQ+oMwt5RzC6QgDplkCbYRz7Etb\n'
'm9dDs/hx92lRCNO8zate/Z3D2uqKnMzd4akt6gvzF6k7pMIeS1rUavh2C7YVl4XT7OF8Pkotr6t0\n'
'D2+hpTGZcIAC+caeoxr0ZPDv8YbwudeXyxbWvwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCbumGj\n'
'dZbJmvUtpzTkUM3n33LclyrwLx34vQyzELr+PSzt0KPxODY5Lp+QiQSoTbrExmbekCi6Q2j0fL63\n'
'rVWZV4x9MsuaclcKN4eUvgWPQV1d2/kCMuNdwd+boKyqzlAeY6hTvJWK/zB7SD3gDvhPL9p0ffep\n'
'+8dUKjj6iI+/TGRrDpld8AiHlCNJPXaB3c6FHzLj69PKj24pD5lpRkM6NMg8KPD5rJbKXuGp217D\n'
'riOyZ0uXNEjxwaDq85TvM1h+aMj1FTXJ+lAKK/AJZ52U4RJP8TsErMb/JY9ZZCo+tA0ctWUsE0pK\n'
'USgZPYkwqvLOM/QAwvpZjyVQrqDi+zmI')</pre></td>
</tr>
<tr>
<td>OKTA_LOCAL_DEV_ID</td>
<td class="code"><pre>'exkptbzr9Qvau1gtg4x6'</pre></td>
</tr>
<tr>
<td>OKTA_LOCAL_DEV_SUBDOMAIN</td>
<td class="code"><pre>'dev-331277'</pre></td>
</tr>
<tr>
<td>ONBOARDING_TRACK_MANAGERS</td>
<td class="code"><pre>('ff.mods.onboarding.pumpkin_spice.managers.PumpkinSpiceOnboardingTrackManager',
'ff.mods.onboarding.mobile_api_1.managers.MobileApiOneOnboardingTrackManager',
'ff.mods.onboarding.watermelon_blue.managers.WatermelonBlueOnboardingTrackManager')</pre></td>
</tr>
<tr>
<td>ONE_OFFS_DB_LOG_FREQUENCY</td>
<td class="code"><pre>5</pre></td>
</tr>
<tr>
<td>PARDOT_PROSPECT_FORM_HANDLER_URL</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>PASSWORD_HASHERS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>PASSWORD_MIN_LENGTH</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>PASSWORD_RESET_TIMEOUT_DAYS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>PATHS_THAT_SKIP_SUBDOMAIN_REDIRECT</td>
<td class="code"><pre>('/scim/v2/',)</pre></td>
</tr>
<tr>
<td>PERFORMANCE_ALERTING</td>
<td class="code"><pre>{'disabled_paths': ['/__silk__/'],
'max_queries_threshold': 50,
'max_queries_threshold_for_tests': 175,
'max_queries_time_threshold': 3,
'max_time_threshold': 5}</pre></td>
</tr>
<tr>
<td>PERFORMANCE_TESTING</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>PERFORMANCE_TIME_ALERT_SILENTLY</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>PREPEND_WWW</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>PROJECT_ROOT</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/ff/settings/../..'</pre></td>
</tr>
<tr>
<td>PUSH_NOTIFICATIONS_SETTINGS</td>
<td class="code"><pre>{'APNS_CERTIFICATE': '/home/powellc/src/github.com/15five/fifteen5/ff/settings/apn/apn_production.pem',
'APNS_TOPIC': 'com.15five.15Five',
'APNS_USE_ALTERNATIVE_PORT': False,
'APNS_USE_SANDBOX': True,
'CONFIG': 'push_notifications.conf.LegacyConfig',
'FCM_ERROR_TIMEOUT': None,
'FCM_MAX_RECIPIENTS': 1000,
'FCM_POST_URL': 'https://fcm.googleapis.com/fcm/send',
'GCM_ERROR_TIMEOUT': None,
'GCM_MAX_RECIPIENTS': 1000,
'GCM_POST_URL': 'https://android.googleapis.com/gcm/send',
'UPDATE_ON_DUPLICATE_REG_ID': False,
'USER_MODEL': 'ff.User',
'WNS_ACCESS_URL': 'https://login.live.com/accesstoken.srf',
'WNS_PACKAGE_SECURITY_ID': None,
'WNS_SECRET_KEY': '********************',
'WP_CLAIMS': None,
'WP_ERROR_TIMEOUT': None,
'WP_POST_URL': {'CHROME': 'https://fcm.googleapis.com/fcm/send',
'FIREFOX': 'https://updates.push.services.mozilla.com/wpush/v2',
'OPERA': 'https://fcm.googleapis.com/fcm/send'},
'WP_PRIVATE_KEY': '********************'}</pre></td>
</tr>
<tr>
<td>QUALTRICS_15FIVE_TOKEN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>QUALTRICS_API_TOKEN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>QUALTRICS_DIRECTORY_ID</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>QUALTRICS_ID</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>QUERYCOUNT</td>
<td class="code"><pre>{'DISPLAY_DUPLICATES': None,
'IGNORE_REQUEST_PATTERNS': [],
'IGNORE_SQL_PATTERNS': [],
'THRESHOLDS': {'HIGH': 200,
'MEDIUM': 50,
'MIN_QUERY_COUNT_TO_LOG': 0,
'MIN_TIME_TO_LOG': 0}}</pre></td>
</tr>
<tr>
<td>RECAPTCHA_SECRET_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>RECAPTCHA_SITE_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>RECURLY_API_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>RECURLY_DEFAULT_CURRENCY</td>
<td class="code"><pre>'USD'</pre></td>
</tr>
<tr>
<td>RECURLY_PRIVATE_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>RECURLY_PUBLIC_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>RECURLY_SUBDOMAIN</td>
<td class="code"><pre>'15five-test'</pre></td>
</tr>
<tr>
<td>REDIS_LOCATION</td>
<td class="code"><pre>'redis://127.0.0.1:6379/'</pre></td>
</tr>
<tr>
<td>RESET_DB</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>REST_FRAMEWORK</td>
<td class="code"><pre>{'DEFAULT_RENDERER_CLASSES': ('rest_framework.renderers.JSONRenderer',
'ff.core.restframework.FFCSVRenderer',
'ff.core.restframework.FFXLSXRenderer'),
'DEFAULT_THROTTLE_CLASSES': ('rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'),
'DEFAULT_THROTTLE_RATES': {'anon': '15/second', 'user': '15/second'},
'HTML_SELECT_CUTOFF': 10,
'ORDERING_PARAM': 'order_by'}</pre></td>
</tr>
<tr>
<td>ROOT_URLCONF</td>
<td class="code"><pre>'ff.urls'</pre></td>
</tr>
<tr>
<td>SALESFORCE_BASIC_AUTH_LOGIN</td>
<td class="code"><pre>'15five'</pre></td>
</tr>
<tr>
<td>SALESFORCE_BASIC_AUTH_PASS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SALESFORCE_COMPOUND_PASSWORD</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SALESFORCE_CONSUMER_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SALESFORCE_CONSUMER_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SALESFORCE_ENABLED</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SALESFORCE_HOST</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>SALESFORCE_OWNER_ID</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>SALESFORCE_PASSWORD</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SALESFORCE_SECURITY_TOKEN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SALESFORCE_SYNC_ADMINS_TO_CONTACTS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SALESFORCE_SYNC_COMPANIES_TO_ACCOUNTS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SALESFORCE_SYNC_COMPANIES_TO_OPPORTUNITIES_V2</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SALESFORCE_SYNC_USERS_TO_CONTACTS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SALESFORCE_USER</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>SAML_BASEDIR</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/ff/settings/saml'</pre></td>
</tr>
<tr>
<td>SAML_CERT_NAME</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/ff/settings/saml/ff-saml-cert.crt'</pre></td>
</tr>
<tr>
<td>SAML_KEY_NAME</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SCIM_SERVICE_PROVIDER</td>
<td class="code"><pre>{'AUTHENTICATION_SCHEMES': [{'description': 'Oauth 2 implemented with bearer '
'token',
'documentationUri': '',
'name': 'OAuth 2',
'specUri': '',
'type': 'oauth2'}],
'BASE_LOCATION_GETTER': 'ff.core.http.get_full_domain_from_request',
'GET_EXTRA_MODEL_EXCLUDE_KWARGS_GETTER': 'ff.mods.scim.utils.get_extra_model_exclude_kwargs_getter',
'GET_EXTRA_MODEL_FILTER_KWARGS_GETTER': 'ff.mods.scim.utils.get_extra_model_filter_kwargs_getter',
'GET_OBJECT_POST_PROCESSOR_GETTER': 'ff.mods.scim.utils.get_object_post_processor_getter',
'GROUP_ADAPTER': 'ff.mods.scim.adapters.FFSCIMGroup',
'GROUP_FILTER_PARSER': 'ff.mods.scim.filters.GroupFilterQuery',
'GROUP_MODEL': 'ff.mods.group.models.CompanyGroup',
'NETLOC': 'localhost',
'SCHEMAS_GETTER': 'ff.mods.scim.schemas.schemas_getter',
'USER_ADAPTER': 'ff.mods.scim.adapters.FFSCIMUser',
'USER_FILTER_PARSER': 'ff.mods.scim.filters.UserFilterQuery',
'WWW_AUTHENTICATE_HEADER': 'Basic realm="15FiveSCIM2.0"'}</pre></td>
</tr>
<tr>
<td>SECONDS_IN_DAY</td>
<td class="code"><pre>86400</pre></td>
</tr>
<tr>
<td>SECRET_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SECURE_BROWSER_XSS_FILTER</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECURE_CONTENT_TYPE_NOSNIFF</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECURE_HSTS_PRELOAD</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECURE_HSTS_SECONDS</td>
<td class="code"><pre>0</pre></td>
</tr>
<tr>
<td>SECURE_PROXY_SSL_HEADER</td>
<td class="code"><pre>('HTTP_X_FORWARDED_PROTO', 'https')</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>SENDGRID_API_KEY</td>
<td class="code"><pre>'********************'</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>2448000</pre></td>
</tr>
<tr>
<td>SESSION_COOKIE_DOMAIN</td>
<td class="code"><pre>'15five.localhost'</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_RENEW_IF_EXPIRES_WITHIN_DAYS</td>
<td class="code"><pre>14</pre></td>
</tr>
<tr>
<td>SESSION_COOKIE_SAMESITE</td>
<td class="code"><pre>None</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>'ff.sessions'</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>'ff.CustomSessionJSONSerializer'</pre></td>
</tr>
<tr>
<td>SETTINGS_MODULE</td>
<td class="code"><pre>'ff.settings.dev.colin'</pre></td>
</tr>
<tr>
<td>SFTP_FORWARDER_SECRET</td>
<td class="code"><pre>'********************'</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>SHOW_DEBUG_TOOLBAR</td>
<td class="code"><pre>False</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>SLACK_15FIVE_DISPLAY_NAME</td>
<td class="code"><pre>'15Five'</pre></td>
</tr>
<tr>
<td>SLACK_15FIVE_ICON_URL</td>
<td class="code"><pre>'https://my.15five.com/static/images/slack-15five-logo.png'</pre></td>
</tr>
<tr>
<td>SLACK_OAUTH_CLIENT_ID</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>SLACK_OAUTH_CLIENT_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SLACK_SIGNATURE_MAX_DRIFT</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SLACK_SIGNATURE_VERSION</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SLACK_SIGNING_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SLACK_SIGNUPS_CHANNEL</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>SLACK_VERIFICATION_TOKEN</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SNOWPLOW</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_DISCONNECT_REDIRECT_URL</td>
<td class="code"><pre>'/account/authentication/done/'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_GOOGLE_OAUTH2_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_LOGIN_ERROR_URL</td>
<td class="code"><pre>'/account/login/error/'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_LOGIN_REDIRECT_URL</td>
<td class="code"><pre>'/account/google-auth-login/'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL</td>
<td class="code"><pre>'/account/authentication/done/'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_PIPELINE</td>
<td class="code"><pre>('social_core.pipeline.social_auth.social_details',
'social_core.pipeline.social_auth.social_uid',
'social_core.pipeline.social_auth.auth_allowed',
'social_core.pipeline.social_auth.social_user',
'ff.mods.account.social.social_auth.associate_by_email',
'ff.mods.account.social.social_auth.associate_by_email',
'ff.mods.account.social.social_auth.redirect_users_with_saml',
'ff.mods.account.social.social_auth.social_signup',
'social_core.pipeline.social_auth.associate_user',
'ff.mods.account.social.social_auth.log_social_auth')</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_STORAGE</td>
<td class="code"><pre>'social_django.models.DjangoStorage'</pre></td>
</tr>
<tr>
<td>SOCIAL_AUTH_STRATEGY</td>
<td class="code"><pre>'social_django.strategy.DjangoStrategy'</pre></td>
</tr>
<tr>
<td>STATICFILES_DIRS</td>
<td class="code"><pre>(('node_modules', '/home/powellc/src/github.com/15five/fifteen5/node_modules'),)</pre></td>
</tr>
<tr>
<td>STATICFILES_FINDERS</td>
<td class="code"><pre>('django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
'django.contrib.staticfiles.finders.FileSystemFinder')</pre></td>
</tr>
<tr>
<td>STATICFILES_STORAGE</td>
<td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>
</tr>
<tr>
<td>STATIC_ROOT</td>
<td class="code"><pre>'/home/powellc/src/github.com/15five/fifteen5/collected-static'</pre></td>
</tr>
<tr>
<td>STATIC_URL</td>
<td class="code"><pre>'/static/'</pre></td>
</tr>
<tr>
<td>SUPER_ADMIN_PASSWORD</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SUPPORT_EMAIL</td>
<td class="code"><pre>'colin.powell@15five.com'</pre></td>
</tr>
<tr>
<td>TAGGIT_CASE_INSENSITIVE</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>TEMPLATES</td>
<td class="code"><pre>[{'APP_DIRS': False,
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['/home/powellc/src/github.com/15five/fifteen5/ff/templates'],
'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.request',
'django.contrib.messages.context_processors.messages',
'ff.core.templates.fifteen5_context_processor'],
'debug': False,
'loaders': ['django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader'],
'string_if_invalid': '### TEMPLATE ERROR %s ###'}}]</pre></td>
</tr>
<tr>
<td>TEST</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>TESTING</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>TESTING_NETWORK_CALL_TIMEOUT</td>
<td class="code"><pre>10</pre></td>
</tr>
<tr>
<td>TEST_COMPANY_NAME_MARKER</td>
<td class="code"><pre>'fftest'</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_OF_DAY_TASK_TOLERANCE_MINUTES</td>
<td class="code"><pre>60</pre></td>
</tr>
<tr>
<td>TIME_ZONE</td>
<td class="code"><pre>'America/New_York'</pre></td>
</tr>
<tr>
<td>TOKEN_ACCESS_DAYS_VALID</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>TOKEN_ACCESS_SECRET_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>URL_SHORTENER_URL_PREFIX</td>
<td class="code"><pre>'https://s.15five.com/s'</pre></td>
</tr>
<tr>
<td>USER_LOGIN_DETAIL_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>USE_AWS_S3</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>USE_I18N</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>USE_L10N</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>USE_PERFORMANCE_ALERTING</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>USE_THOUSAND_SEPARATOR</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>USE_TZ</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>USE_X_FORWARDED_HOST</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>USE_X_FORWARDED_PORT</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>VPC_NAME</td>
<td class="code"><pre>'dev'</pre></td>
</tr>
<tr>
<td>WAFFLE_CREATE_MISSING_FLAGS</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>WAFFLE_CREATE_MISSING_SAMPLES</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>WAFFLE_CREATE_MISSING_SWITCHES</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>WAFFLE_FLAG_MODEL</td>
<td class="code"><pre>'features.Flag'</pre></td>
</tr>
<tr>
<td>WEBPACK_LOADER</td>
<td class="code"><pre>{'DEFAULT': {'BUNDLE_DIR_NAME': 'dist/js/',
'STATS_FILE': '/home/powellc/src/github.com/15five/fifteen5/ff/static/webpack-stats.json'}}</pre></td>
</tr>
<tr>
<td>WSGI_APPLICATION</td>
<td class="code"><pre>'ff.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>
<!-- POST https://15five.localhost/sftp/receiver/ -->
<!-- HTTP/1.1 500 Internal Server Error -->
<!-- Server: nginx/1.18.0 (Ubuntu) -->
<!-- Date: Tue, 13 Oct 2020 18:18:07 GMT -->
<!-- Content-Type: text/html -->
<!-- Content-Length: 164661 -->
<!-- Connection: keep-alive -->
<!-- X-Frame-Options: SAMEORIGIN -->
<!-- Vary: Authorization, Cookie -->
<!-- Request duration: 0.519823s -->
,#+END_SRC
#+end_example