Skip to content

Commit

Permalink
add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
Adeel Ahmad Khan committed Jul 26, 2011
1 parent b175bfb commit 1671f0a
Show file tree
Hide file tree
Showing 21 changed files with 1,529 additions and 106 deletions.
Empty file added docs/.html
Empty file.
52 changes: 52 additions & 0 deletions docs/__init__.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>__init__.py</title>
<link rel="stylesheet" href="pycco.css">
</head>
<body>
<div id='container'>
<div id="background"></div>

<table cellspacing=0 cellpadding=0>
<thead>
<tr>
<th class=docs><h1>__init__.py</h1></th>
<th class=code></th>
</tr>
</thead>
<tbody>
<tr id='section-0'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-0">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="kn">import</span> <span class="nn">pack</span>

<span class="kn">from</span> <span class="nn">setup</span> <span class="kn">import</span> <span class="n">setup_api</span><span class="p">,</span> <span class="n">setup_app</span>
<span class="kn">from</span> <span class="nn">routing</span> <span class="kn">import</span> <span class="n">GET</span><span class="p">,</span> <span class="n">POST</span><span class="p">,</span> <span class="n">PUT</span><span class="p">,</span> <span class="n">DELETE</span><span class="p">,</span> <span class="n">HEAD</span><span class="p">,</span> <span class="n">ANY</span>

<span class="kn">from</span> <span class="nn">pack.util.response</span> <span class="kn">import</span> <span class="n">redirect</span><span class="p">,</span> <span class="n">file_response</span></pre></div></pre></div>
</td>
</tr><tr id='section-1'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-1">#</a>
</div>
<p>Create a Pack app from a list of compiled routes (see
routing._compile_route).</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="k">def</span> <span class="nf">setup_routes</span><span class="p">(</span><span class="o">*</span><span class="n">routes</span><span class="p">):</span>
<span class="k">return</span> <span class="k">lambda</span> <span class="n">req</span><span class="p">:</span> <span class="n">routing</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="o">*</span><span class="n">routes</span><span class="p">)</span>

</pre></div></pre></div>
</td>
</tr>
</table>
</div>
</body>
111 changes: 111 additions & 0 deletions docs/flash.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>flash.py</title>
<link rel="stylesheet" href="pycco.css">
</head>
<body>
<div id='container'>
<div id="background"></div>

<table cellspacing=0 cellpadding=0>
<thead>
<tr>
<th class=docs><h1>flash.py</h1></th>
<th class=code></th>
</tr>
</thead>
<tbody>
<tr id='section-0'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-0">#</a>
</div>
<p>A middleware for adding flash message support via sessions.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre></pre></div></pre></div>
</td>
</tr><tr id='section-1'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-1">#</a>
</div>
<p>Adds a "flash" key to the request that contains the current flash dict, which
is stored in the session (request["session"]["flash"]). If it is modified by
the app, the session is updated accordingly.</p>
<p>Note that request["flash"] is actually a dict-like object whose values
disappear after the first access.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="k">def</span> <span class="nf">wrap_flash</span><span class="p">(</span><span class="n">app</span><span class="p">):</span></pre></div></pre></div>
</td>
</tr><tr id='section-2'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-2">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre> <span class="k">def</span> <span class="nf">wrapped</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
<span class="n">request</span><span class="p">[</span><span class="s">&quot;flash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">DisappearingDict</span><span class="p">(</span><span class="n">request</span><span class="p">[</span><span class="s">&quot;session&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;flash&quot;</span><span class="p">,</span> <span class="p">{}))</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">app</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
<span class="n">request</span><span class="p">[</span><span class="s">&quot;session&quot;</span><span class="p">][</span><span class="s">&quot;flash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">request</span><span class="p">[</span><span class="s">&quot;flash&quot;</span><span class="p">]</span>
<span class="k">return</span> <span class="n">response</span>
<span class="k">return</span> <span class="n">wrapped</span></pre></div></pre></div>
</td>
</tr><tr id='section-3'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-3">#</a>
</div>
<p>Like a dict, but values disappear after the first access.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="k">class</span> <span class="nc">DisappearingDict</span><span class="p">(</span><span class="nb">dict</span><span class="p">):</span></pre></div></pre></div>
</td>
</tr><tr id='section-4'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-4">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_and_delete</span><span class="p">(</span><span class="n">key</span><span class="p">)</span></pre></div></pre></div>
</td>
</tr><tr id='section-5'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-5">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_and_delete</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="k">return</span> <span class="n">d</span></pre></div></pre></div>
</td>
</tr><tr id='section-6'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-6">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre> <span class="k">def</span> <span class="nf">_get_and_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="n">val</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__delitem__</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="k">return</span> <span class="n">val</span>

</pre></div></pre></div>
</td>
</tr>
</table>
</div>
</body>
115 changes: 115 additions & 0 deletions docs/jinja.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>jinja.py</title>
<link rel="stylesheet" href="pycco.css">
</head>
<body>
<div id='container'>
<div id="background"></div>

<table cellspacing=0 cellpadding=0>
<thead>
<tr>
<th class=docs><h1>jinja.py</h1></th>
<th class=code></th>
</tr>
</thead>
<tbody>
<tr id='section-0'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-0">#</a>
</div>
<p>A middleware that uses the Jinja templating system to render responses.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="kn">import</span> <span class="nn">os</span>
<span class="kn">from</span> <span class="nn">jinja2</span> <span class="kn">import</span> <span class="n">Environment</span><span class="p">,</span> <span class="n">FileSystemLoader</span></pre></div></pre></div>
</td>
</tr><tr id='section-1'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-1">#</a>
</div>
<p>If the app response is a tuple, will use Jinja2 to render the response. The
first element of the tuple is parsed as the template name, and the second
should be a dictionary of data to be passed to the template.</p>
<p>def view_product(req, id):
# product = ...
return "products/view", {"product": product}</p>
<p>If sessions are enabled, a "session" key will be added to the data and sent
to the template.</p>
<p>Takes a template_dir option, which should be the path to your templates, and
a config option, which can be a dict that will be passed to all your views.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="k">def</span> <span class="nf">wrap_jinja</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="p">{}):</span>
<span class="n">options</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">({</span><span class="s">&quot;template_dir&quot;</span><span class="p">:</span> <span class="s">&quot;./&quot;</span><span class="p">,</span> <span class="s">&quot;config&quot;</span><span class="p">:</span> <span class="p">{}},</span> <span class="o">**</span><span class="n">options</span><span class="p">)</span>

<span class="n">template_dir</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="s">&quot;template_dir&quot;</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">template_dir</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">&quot;Directory does not exist: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">template_dir</span><span class="p">)</span></pre></div></pre></div>
</td>
</tr><tr id='section-2'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-2">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre> <span class="k">def</span> <span class="nf">wrapped</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">app</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;body&quot;</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">response</span><span class="p">[</span><span class="s">&quot;body&quot;</span><span class="p">])</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span>
<span class="s">&quot;picasso.middleware.jinja expected response to be a 2-element tuple,&quot;</span>
<span class="s">&quot; but got:</span><span class="se">\n</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">response</span><span class="p">[</span><span class="s">&quot;body&quot;</span><span class="p">]))</span>

<span class="n">response</span><span class="p">[</span><span class="s">&quot;body&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">_render_with_jinja</span><span class="p">(</span><span class="n">options</span><span class="p">[</span><span class="s">&quot;template_dir&quot;</span><span class="p">],</span>
<span class="o">*</span><span class="n">response</span><span class="p">[</span><span class="s">&quot;body&quot;</span><span class="p">],</span> <span class="n">session</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;session&quot;</span><span class="p">),</span>
<span class="n">flash</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;flash&quot;</span><span class="p">),</span>
<span class="n">config</span><span class="o">=</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;config&quot;</span><span class="p">))</span>
<span class="k">return</span> <span class="n">response</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">response</span>
<span class="k">return</span> <span class="n">wrapped</span></pre></div></pre></div>
</td>
</tr><tr id='section-3'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-3">#</a>
</div>
<p>Looks for the template in template_dir, and passes data to it. Also adds a
session key to the data, if sessions are enabled, and a flash key if the
flash middleware is being used.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="k">def</span> <span class="nf">_render_with_jinja</span><span class="p">(</span><span class="n">template_dir</span><span class="p">,</span> <span class="n">template</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="p">{},</span> <span class="n">flash</span><span class="o">=</span><span class="p">{},</span>
<span class="n">config</span><span class="o">=</span><span class="p">{}):</span>
<span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">loader</span><span class="o">=</span><span class="n">FileSystemLoader</span><span class="p">(</span><span class="n">template_dir</span><span class="p">))</span>
<span class="n">data</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">**</span><span class="n">config</span><span class="p">)</span></pre></div></pre></div>
</td>
</tr><tr id='section-4'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-4">#</a>
</div>
<p>Add session key to data, if sessions are enabled.</p>
</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre> <span class="k">if</span> <span class="n">session</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">data</span><span class="p">[</span><span class="s">&quot;session&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">session</span>
<span class="k">if</span> <span class="n">flash</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">data</span><span class="p">[</span><span class="s">&quot;flash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">flash</span>

<span class="k">return</span> <span class="n">env</span><span class="o">.</span><span class="n">get_template</span><span class="p">(</span><span class="n">template</span> <span class="o">+</span> <span class="s">&#39;.html&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;utf-8&#39;</span><span class="p">)</span>

</pre></div></pre></div>
</td>
</tr>
</table>
</div>
</body>
35 changes: 35 additions & 0 deletions docs/middleware/__init__.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>__init__.py</title>
<link rel="stylesheet" href="pycco.css">
</head>
<body>
<div id='container'>
<div id="background"></div>

<table cellspacing=0 cellpadding=0>
<thead>
<tr>
<th class=docs><h1>__init__.py</h1></th>
<th class=code></th>
</tr>
</thead>
<tbody>
<tr id='section-0'>
<td class=docs>
<div class="octowrap">
<a class="octothorpe" href="#section-0">#</a>
</div>

</td>
<td class=code>
<div class='highlight'><pre><div class="highlight"><pre><span class="kn">import</span> <span class="nn">jinja</span>

</pre></div></pre></div>
</td>
</tr>
</table>
</div>
</body>
Loading

0 comments on commit 1671f0a

Please sign in to comment.