twisted.web.woven.model.Model.html [plain text]
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>twisted.web.woven.model.Model</title>
<link rel="stylesheet" href="epydoc.css" type="text/css"></link>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
<tr valign="center">
<th class="navbar"> <a class="navbar" href="twisted.html">Home</a> </th>
<th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
<th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
<th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center">
<p class="nomargin">
<a class="navbar" target="_top" href="http://twistedmatrix.com/">Twisted 1.3.0rc1</a>
</p></th></tr></table>
</th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<font size="-1"><b class="breadcrumbs">
<a href="twisted.html">Package twisted</a> ::
<a href="twisted.web.html">Package web</a> ::
<a href="twisted.web.woven.html">Package woven</a> ::
<a href="twisted.web.woven.model.html">Module model</a> ::
Class Model
</b></font></br>
</td>
<td><table cellpadding="0" cellspacing="0">
<tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="twisted.web.woven.model.Model.html" target="_top">no frames</a>]</font></td></tr>
</table></td>
</tr></table>
<!-- =========== START OF CLASS DESCRIPTION =========== -->
<h2 class="class">Class Model</h2>
<dl><dt><b>Known Subclasses:</b></dt>
<dd>
<a href="twisted.web.woven.model.AttributeModel.html"><code>AttributeModel</code></a>,
<a href="twisted.web.woven.model.MethodModel.html"><code>MethodModel</code></a>,
<a href="twisted.web.woven.model.Wrapper.html"><code>Wrapper</code></a></dd></dl>
<hr/>
A Model which keeps track of views which are looking at it in order to
notify them when the model changes.
<hr/>
<!-- =========== START OF METHOD SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
<th colspan="2">Method Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
<span class="summary-sig-vararg">*args</span>,
<span class="summary-sig-kwarg">**kwargs</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="__getstate__"></a><span class="summary-sig"><span class="summary-sig-name">__getstate__</span>(<span class=summary-sig-arg>self</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="addSubview"></a><span class="summary-sig"><span class="summary-sig-name">addSubview</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>name</span>,
<span class=summary-sig-arg>subview</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#addView" class="summary-sig-name"><code>addView</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>view</span>)</span></code>
<br />
Add a view for the model to keep track of.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="dataWillChange"></a><span class="summary-sig"><span class="summary-sig-name">dataWillChange</span>(<span class=summary-sig-arg>self</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="getData"></a><span class="summary-sig"><span class="summary-sig-name">getData</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#getSubmodel" class="summary-sig-name"><code>getSubmodel</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>,
<span class=summary-sig-arg>name</span>)</span></code>
<br />
Get the submodel `name' of this model.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#initialize" class="summary-sig-name"><code>initialize</code></a>(<span class=summary-sig-arg>self</span>,
<span class="summary-sig-vararg">*args</span>,
<span class="summary-sig-kwarg">**kwargs</span>)</span></code>
<br />
Hook for subclasses to initialize themselves without having to mess
with the __init__ chain.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#invalidateCache" class="summary-sig-name"><code>invalidateCache</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
<br />
Invalidate the cache for this object, so the next time getData is
called, it's getter method is called again.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#lookupSubmodel" class="summary-sig-name"><code>lookupSubmodel</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>,
<span class=summary-sig-arg>submodelName</span>)</span></code>
<br />
Look up a full submodel name.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#notify" class="summary-sig-name"><code>notify</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>changed</span>)</span></code>
<br />
Notify all views that something was changed on me.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#removeView" class="summary-sig-name"><code>removeView</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>view</span>)</span></code>
<br />
Remove a view that the model no longer should keep track of.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="setData"></a><span class="summary-sig"><span class="summary-sig-name">setData</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>,
<span class=summary-sig-arg>data</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="setGetter"></a><span class="summary-sig"><span class="summary-sig-name">setGetter</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>getter</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="setSetter"></a><span class="summary-sig"><span class="summary-sig-name">setSetter</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>setter</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#setSubmodel" class="summary-sig-name"><code>setSubmodel</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>,
<span class=summary-sig-arg>name</span>,
<span class=summary-sig-arg>value</span>)</span></code>
<br />
Set a submodel on this model.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><span class="summary-sig"><a href="twisted.web.woven.model.Model.html#submodelCheck" class="summary-sig-name"><code>submodelCheck</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>,
<span class=summary-sig-arg>name</span>)</span></code>
<br />
Check if a submodel name is allowed.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
<td><code><a name="submodelFactory"></a><span class="summary-sig"><span class="summary-sig-name">submodelFactory</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>request</span>,
<span class=summary-sig-arg>name</span>)</span></code>
</td></tr>
</table><br />
<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
<th colspan="2">Class Variable Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>class</code></font></td>
<td><a name="__implements__"></a><b><code>__implements__</code></b> = <a href="twisted.web.woven.interfaces.IModel.html"><code>twisted.web.woven.interfaces.IModel</code></a></td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
<td><b><a href="twisted.web.woven.model.Model.html#allowed_names"><code>allowed_names</code></a></b> = <span title="[]"><code>[] </code>
</span></td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
<td><b><a href="twisted.web.woven.model.Model.html#protected_names"><code>protected_names</code></a></b> = <span title="['initialize', 'addView', 'addSubview', 'removeView', 'notify', 'getSubmodel', 'setSubmodel', 'getData', 'setData']"><code>['initialize', 'addView', 'addSubview'<span class="variable-ellipsis">...</span></code>
</span></td></tr>
</table><br />
<!-- =========== START OF METHOD DETAILS =========== -->
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="details">
<th colspan="2">Method Details</th></tr>
</table>
<a name="addView"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">addView</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>view</span>)</span>
</h3>
Add a view for the model to keep track of.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="getSubmodel"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">getSubmodel</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>request</span>,
<span class=sig-arg>name</span>)</span>
</h3>
Get the submodel `name' of this model. If I ever return a Deferred,
then I ought to check for cached values (created by <a
href="twisted.web.woven.model.Model.html#setSubmodel"
class="link"><code>setSubmodel</code></a>) before doing a regular
Deferred lookup.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="initialize"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">initialize</span>(<span class=sig-arg>self</span>,
<span class="sig-vararg">*args</span>,
<span class="sig-kwarg">**kwargs</span>)</span>
</h3>
Hook for subclasses to initialize themselves without having to mess
with the __init__ chain.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="invalidateCache"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">invalidateCache</span>(<span class=sig-arg>self</span>)</span>
</h3>
Invalidate the cache for this object, so the next time getData is
called, it's getter method is called again.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="lookupSubmodel"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">lookupSubmodel</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>request</span>,
<span class=sig-arg>submodelName</span>)</span>
</h3>
<p>Look up a full submodel name. I will split on `/' and call <a
href="twisted.web.woven.model.Model.html#getSubmodel"
class="link"><code>getSubmodel</code></a> on each element in the
'path'.</p>
<p>Override me if you don't want 'traversing'-style lookup, but would
rather like to look up a model based on the entire model name
specified.</p>
<p>If you override me to return Deferreds, make sure I look up values
in a cache (created by <a
href="twisted.web.woven.model.Model.html#setSubmodel"
class="link"><code>setSubmodel</code></a>) before doing a regular
Deferred lookup.</p>
XXX: Move bits of this docstring to interfaces.py
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="notify"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">notify</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>changed</span>=<span class=sig-default>None</span>)</span>
</h3>
Notify all views that something was changed on me. Passing a
dictionary of {'attribute': 'new value'} in changed will pass this
dictionary to the view for increased performance. If you don't want to
do this, don't, and just use the traditional MVC paradigm of querying
the model for things you're interested in.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="removeView"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">removeView</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>view</span>)</span>
</h3>
Remove a view that the model no longer should keep track of.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="setSubmodel"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">setSubmodel</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>request</span>=<span class=sig-default>None</span>,
<span class=sig-arg>name</span>=<span class=sig-default>None</span>,
<span class=sig-arg>value</span>=<span class=sig-default>None</span>)</span>
</h3>
Set a submodel on this model. If getSubmodel or lookupSubmodel ever
return a Deferred, I ought to set this in a place that
lookupSubmodel/getSubmodel know about, so they can use it as a
cache.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="submodelCheck"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">submodelCheck</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>request</span>,
<span class=sig-arg>name</span>)</span>
</h3>
Check if a submodel name is allowed. Subclass me to implement a name
security policy.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<br />
<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="details">
<th colspan="2">Class Variable Details</th></tr>
</table>
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
<a name="allowed_names"></a>
<h3>allowed_names</h3>
<dl>
<dt></dt>
<dd>
<dl>
<dt><b>Type:</b></dt>
<dd>
<code>list</code>
</dd>
<span title="[]"> <dt><b>Value:</b></dt>
<dd><table><tr><td>
<pre class="variable">
[] </pre>
</td></tr></table></dd>
</span> </dl>
</dd>
</dl></td></tr></table>
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
<a name="protected_names"></a>
<h3>protected_names</h3>
<dl>
<dt></dt>
<dd>
<dl>
<dt><b>Type:</b></dt>
<dd>
<code>list</code>
</dd>
<span title="['initialize', 'addView', 'addSubview', 'removeView', 'notify', 'getSubmodel', 'setSubmodel', 'getData', 'setData']"> <dt><b>Value:</b></dt>
<dd><table><tr><td>
<pre class="variable">
['initialize',
'addView',
'addSubview',
'removeView',
'notify',
'getSubmodel',
'setSubmodel',
'getData',
<span class="variable-ellipsis">...</span> </pre>
</td></tr></table></dd>
</span> </dl>
</dd>
</dl></td></tr></table>
<br />
<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
<tr valign="center">
<th class="navbar"> <a class="navbar" href="twisted.html">Home</a> </th>
<th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
<th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
<th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center">
<p class="nomargin">
<a class="navbar" target="_top" href="http://twistedmatrix.com/">Twisted 1.3.0rc1</a>
</p></th></tr></table>
</th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left"><font size="-2">Generated by Epydoc 2.0 on Sat May 15 20:07:50 2004</font></td>
<td align="right"><a href="http://epydoc.sourceforge.net"
><font size="-2">http://epydoc.sf.net</font></a></td>
</tr>
</table>
</body>
</html>