-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Adeel Ahmad Khan
committed
Jul 26, 2011
1 parent
b175bfb
commit 1671f0a
Showing
21 changed files
with
1,529 additions
and
106 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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">"flash"</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">"session"</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"flash"</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">"session"</span><span class="p">][</span><span class="s">"flash"</span><span class="p">]</span> <span class="o">=</span> <span class="n">request</span><span class="p">[</span><span class="s">"flash"</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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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">"template_dir"</span><span class="p">:</span> <span class="s">"./"</span><span class="p">,</span> <span class="s">"config"</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">"template_dir"</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">"Directory does not exist: </span><span class="si">%s</span><span class="s">"</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">"body"</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">"body"</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">"picasso.middleware.jinja expected response to be a 2-element tuple,"</span> | ||
<span class="s">" but got:</span><span class="se">\n</span><span class="s"> </span><span class="si">%s</span><span class="s">"</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">"body"</span><span class="p">]))</span> | ||
|
||
<span class="n">response</span><span class="p">[</span><span class="s">"body"</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">"template_dir"</span><span class="p">],</span> | ||
<span class="o">*</span><span class="n">response</span><span class="p">[</span><span class="s">"body"</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">"session"</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">"flash"</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">"config"</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">"session"</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">"flash"</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">'.html'</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">'utf-8'</span><span class="p">)</span> | ||
|
||
</pre></div></pre></div> | ||
</td> | ||
</tr> | ||
</table> | ||
</div> | ||
</body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
Oops, something went wrong.