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">&nbsp;&nbsp;&nbsp;<a class="navbar" href="twisted.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</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&nbsp;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&nbsp;twisted</a> ::
        <a href="twisted.web.html">Package&nbsp;web</a> ::
        <a href="twisted.web.woven.html">Package&nbsp;woven</a> ::
        <a href="twisted.web.woven.model.html">Module&nbsp;model</a> ::
        Class&nbsp;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>&nbsp;|&nbsp;<a href="twisted.web.woven.model.Model.html" target="_top">no&nbsp;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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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',&nbsp;'addView',&nbsp;'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">&nbsp;&nbsp;&nbsp;<a class="navbar" href="twisted.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</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&nbsp;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>