seitime-frappe/docs/_build/html/_modules/webnotes/model/code.html
2011-06-29 14:41:49 +05:30

321 lines
No EOL
33 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>webnotes.model.code &mdash; WNFramework v1.8 documentation</title>
<link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '1.8',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<link rel="top" title="WNFramework v1.8 documentation" href="../../../index.html" />
<link rel="up" title="webnotes.model" href="../model.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../../index.html">WNFramework v1.8 documentation</a> &raquo;</li>
<li><a href="../../index.html" >Module code</a> &raquo;</li>
<li><a href="../../webnotes.html" >webnotes</a> &raquo;</li>
<li><a href="../model.html" accesskey="U">webnotes.model</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for webnotes.model.code</h1><div class="highlight"><pre>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">This is where all the plug-in code is executed. The standard method for DocTypes is declaration of a </span>
<span class="sd">standardized `DocType` class that has the methods of any DocType. When an object is instantiated using the</span>
<span class="sd">`get_obj` method, it creates an instance of the `DocType` class of that particular DocType and sets the </span>
<span class="sd">`doc` and `doclist` attributes that represent the fields (properties) of that record.</span>
<span class="sd">methods in following modules are imported for backward compatibility</span>
<span class="sd"> * webnotes.*</span>
<span class="sd"> * webnotes.utils.*</span>
<span class="sd"> * webnotes.model.doc.*</span>
<span class="sd"> * webnotes.model.doclist.*</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">custom_class</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span>
<span class="s"># Please edit this list and import only required elements</span>
<span class="s">import webnotes</span>
<span class="s">from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add</span>
<span class="s">from webnotes.model import db_exists</span>
<span class="s">from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType</span>
<span class="s">from webnotes.model.doclist import getlist, copy_doclist</span>
<span class="s">from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax</span>
<span class="s">from webnotes import session, form, is_testing, msgprint, errprint</span>
<span class="s">set = webnotes.conn.set</span>
<span class="s">sql = webnotes.conn.sql</span>
<span class="s">get_value = webnotes.conn.get_value</span>
<span class="s">in_transaction = webnotes.conn.in_transaction</span>
<span class="s">convert_to_lists = webnotes.conn.convert_to_lists</span>
<span class="s"># -----------------------------------------------------------------------------------------</span>
<span class="s">class CustomDocType(DocType):</span>
<span class="s"> def __init__(self, doc, doclist):</span>
<span class="s"> DocType.__init__(self, doc, doclist)</span>
<span class="s">&#39;&#39;&#39;</span>
<span class="c">#=================================================================================</span>
<span class="c"># execute a script with a lot of globals - deprecated</span>
<span class="c">#=================================================================================</span>
<div class="viewcode-block" id="execute"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.execute">[docs]</a><span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">doclist</span><span class="o">=</span><span class="p">[]):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Execute the code, if doc is given, then return the instance of the `DocType` class created</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c"># functions used in server script of DocTypes</span>
<span class="c"># -------------------------------------------------- </span>
<span class="kn">from</span> <span class="nn">webnotes.utils</span> <span class="kn">import</span> <span class="n">add_days</span><span class="p">,</span> <span class="n">add_months</span><span class="p">,</span> <span class="n">add_years</span><span class="p">,</span> <span class="n">cint</span><span class="p">,</span> <span class="n">cstr</span><span class="p">,</span> <span class="n">date_diff</span><span class="p">,</span> <span class="n">default_fields</span><span class="p">,</span> <span class="n">flt</span><span class="p">,</span> <span class="n">fmt_money</span><span class="p">,</span> <span class="n">formatdate</span><span class="p">,</span> <span class="n">generate_hash</span><span class="p">,</span> <span class="n">getTraceback</span><span class="p">,</span> <span class="n">get_defaults</span><span class="p">,</span> <span class="n">get_first_day</span><span class="p">,</span> <span class="n">get_last_day</span><span class="p">,</span> <span class="n">getdate</span><span class="p">,</span> <span class="n">has_common</span><span class="p">,</span> <span class="n">month_name</span><span class="p">,</span> <span class="n">now</span><span class="p">,</span> <span class="n">nowdate</span><span class="p">,</span> <span class="n">replace_newlines</span><span class="p">,</span> <span class="n">sendmail</span><span class="p">,</span> <span class="n">set_default</span><span class="p">,</span> <span class="n">str_esc_quote</span><span class="p">,</span> <span class="n">user_format</span><span class="p">,</span> <span class="n">validate_email_add</span>
<span class="kn">from</span> <span class="nn">webnotes.model</span> <span class="kn">import</span> <span class="n">db_exists</span>
<span class="kn">from</span> <span class="nn">webnotes.model.doc</span> <span class="kn">import</span> <span class="n">Document</span><span class="p">,</span> <span class="n">addchild</span><span class="p">,</span> <span class="n">removechild</span><span class="p">,</span> <span class="n">getchildren</span><span class="p">,</span> <span class="n">make_autoname</span><span class="p">,</span> <span class="n">SuperDocType</span>
<span class="kn">from</span> <span class="nn">webnotes.model.doclist</span> <span class="kn">import</span> <span class="n">getlist</span><span class="p">,</span> <span class="n">copy_doclist</span>
<span class="kn">from</span> <span class="nn">webnotes</span> <span class="kn">import</span> <span class="n">session</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">is_testing</span><span class="p">,</span> <span class="n">msgprint</span><span class="p">,</span> <span class="n">errprint</span>
<span class="kn">import</span> <span class="nn">webnotes</span>
<span class="nb">set</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">set</span>
<span class="n">sql</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">sql</span>
<span class="n">get_value</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">get_value</span>
<span class="n">in_transaction</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">in_transaction</span>
<span class="n">convert_to_lists</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">convert_to_lists</span>
<span class="k">if</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">user</span><span class="p">:</span>
<span class="n">get_roles</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">get_roles</span>
<span class="nb">locals</span><span class="p">()</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;get_obj&#39;</span><span class="p">:</span><span class="n">get_obj</span><span class="p">,</span> <span class="s">&#39;get_server_obj&#39;</span><span class="p">:</span><span class="n">get_server_obj</span><span class="p">,</span> <span class="s">&#39;run_server_obj&#39;</span><span class="p">:</span><span class="n">run_server_obj</span><span class="p">,</span> <span class="s">&#39;updatedb&#39;</span><span class="p">:</span><span class="n">updatedb</span><span class="p">,</span> <span class="s">&#39;check_syntax&#39;</span><span class="p">:</span><span class="n">check_syntax</span><span class="p">})</span>
<span class="n">version</span> <span class="o">=</span> <span class="s">&#39;v170&#39;</span>
<span class="n">NEWLINE</span> <span class="o">=</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
<span class="n">BACKSLASH</span> <span class="o">=</span> <span class="s">&#39;</span><span class="se">\\</span><span class="s">&#39;</span>
<span class="c"># execute it</span>
<span class="c"># -----------------</span>
<span class="k">exec</span> <span class="n">code</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">()</span>
<span class="c"># if doc</span>
<span class="c"># -----------------</span>
<span class="k">if</span> <span class="n">doc</span><span class="p">:</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">DocType</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">doclist</span><span class="p">)</span>
<span class="k">return</span> <span class="n">d</span>
<span class="k">if</span> <span class="nb">locals</span><span class="p">()</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;page_html&#39;</span><span class="p">):</span>
<span class="k">return</span> <span class="n">page_html</span>
<span class="k">if</span> <span class="nb">locals</span><span class="p">()</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;out&#39;</span><span class="p">):</span>
<span class="k">return</span> <span class="n">out</span>
<span class="c">#=================================================================================</span>
<span class="c"># load the DocType class from module &amp; return an instance</span>
<span class="c">#=================================================================================</span>
</div>
<div class="viewcode-block" id="get_custom_script"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.get_custom_script">[docs]</a><span class="k">def</span> <span class="nf">get_custom_script</span><span class="p">(</span><span class="n">doctype</span><span class="p">,</span> <span class="n">script_type</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns custom script if set in doctype `Custom Script`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">webnotes</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">custom_script</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s">&quot;select script from `tabCustom Script` where dt=</span><span class="si">%s</span><span class="s"> and script_type=</span><span class="si">%s</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="n">doctype</span><span class="p">,</span> <span class="n">script_type</span><span class="p">))</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">==</span><span class="mi">1146</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">None</span>
<span class="k">else</span><span class="p">:</span> <span class="k">raise</span> <span class="n">e</span>
<span class="k">if</span> <span class="n">custom_script</span> <span class="ow">and</span> <span class="n">custom_script</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span>
<span class="k">return</span> <span class="n">custom_script</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</div>
<div class="viewcode-block" id="get_server_obj"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.get_server_obj">[docs]</a><span class="k">def</span> <span class="nf">get_server_obj</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">doclist</span> <span class="o">=</span> <span class="p">[],</span> <span class="n">basedoctype</span> <span class="o">=</span> <span class="s">&#39;&#39;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the instantiated `DocType` object. Will also manage caching &amp; compiling</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c"># for test</span>
<span class="kn">import</span> <span class="nn">webnotes</span>
<span class="c"># get doctype details</span>
<span class="n">module</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">get_value</span><span class="p">(</span><span class="s">&#39;DocType&#39;</span><span class="p">,</span> <span class="n">doc</span><span class="o">.</span><span class="n">doctype</span><span class="p">,</span> <span class="s">&#39;module&#39;</span><span class="p">)</span>
<span class="c"># no module specified (must be really old), can&#39;t get code so quit</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">module</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">module</span> <span class="o">=</span> <span class="n">module</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span><span class="s">&#39;_&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="n">dt</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">doctype</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span><span class="s">&#39;_&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="c"># import</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">exec</span> <span class="s">&#39;from </span><span class="si">%s</span><span class="s">.doctype.</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s"> import DocType&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">dt</span><span class="p">,</span> <span class="n">dt</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
<span class="c"># declare it here</span>
<span class="k">class</span> <span class="nc">DocType</span><span class="p">:</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">dl</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">doc</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">doclist</span> <span class="o">=</span> <span class="n">d</span><span class="p">,</span> <span class="n">dl</span>
<span class="c"># custom?</span>
<span class="n">custom_script</span> <span class="o">=</span> <span class="n">get_custom_script</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">doctype</span><span class="p">,</span> <span class="s">&#39;Server&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">custom_script</span><span class="p">:</span>
<span class="k">global</span> <span class="n">custom_class</span>
<span class="k">exec</span> <span class="n">custom_class</span> <span class="o">+</span> <span class="n">custom_script</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\t</span><span class="s">&#39;</span><span class="p">,</span><span class="s">&#39; &#39;</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">()</span>
<span class="k">return</span> <span class="n">CustomDocType</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">doclist</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">DocType</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">doclist</span><span class="p">)</span>
<span class="c">#=================================================================================</span>
<span class="c"># get object (from dt and/or dn or doclist)</span>
<span class="c">#=================================================================================</span>
</div>
<div class="viewcode-block" id="get_obj"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.get_obj">[docs]</a><span class="k">def</span> <span class="nf">get_obj</span><span class="p">(</span><span class="n">dt</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> <span class="n">dn</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">doclist</span><span class="o">=</span><span class="p">[],</span> <span class="n">with_children</span> <span class="o">=</span> <span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the instantiated `DocType` object. Here you can pass the DocType and name (ID) to get the object.</span>
<span class="sd"> If with_children is true, then all child records will be laoded and added in the doclist.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">dt</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">webnotes.model.doc</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">dn</span><span class="p">:</span>
<span class="n">dn</span> <span class="o">=</span> <span class="n">dt</span>
<span class="k">if</span> <span class="n">with_children</span><span class="p">:</span>
<span class="n">doclist</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">doc</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dt</span><span class="p">,</span> <span class="n">dn</span><span class="p">,</span> <span class="n">from_get_obj</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">doclist</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">doc</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dt</span><span class="p">,</span> <span class="n">dn</span><span class="p">,</span> <span class="n">with_children</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">from_get_obj</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="n">get_server_obj</span><span class="p">(</span><span class="n">doclist</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">doclist</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">get_server_obj</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">doclist</span><span class="p">)</span>
<span class="c">#=================================================================================</span>
<span class="c"># get object and run method</span>
<span class="c">#=================================================================================</span>
</div>
<div class="viewcode-block" id="run_server_obj"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.run_server_obj">[docs]</a><span class="k">def</span> <span class="nf">run_server_obj</span><span class="p">(</span><span class="n">server_obj</span><span class="p">,</span> <span class="n">method_name</span><span class="p">,</span> <span class="n">arg</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Executes a method (`method_name`) from the given object (`server_obj`)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">server_obj</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">server_obj</span><span class="p">,</span> <span class="n">method_name</span><span class="p">):</span>
<span class="k">if</span> <span class="n">arg</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">server_obj</span><span class="p">,</span> <span class="n">method_name</span><span class="p">)(</span><span class="n">arg</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">server_obj</span><span class="p">,</span> <span class="n">method_name</span><span class="p">)()</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span> <span class="s">&#39;No method </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">method_name</span>
<span class="c">#=================================================================================</span>
<span class="c"># deprecated methods to keep v160 apps happy</span>
<span class="c">#=================================================================================</span>
</div>
<div class="viewcode-block" id="updatedb"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.updatedb">[docs]</a><span class="k">def</span> <span class="nf">updatedb</span><span class="p">(</span><span class="n">doctype</span><span class="p">,</span> <span class="n">userfields</span> <span class="o">=</span> <span class="p">[],</span> <span class="n">args</span> <span class="o">=</span> <span class="p">{}):</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="check_syntax"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.check_syntax">[docs]</a><span class="k">def</span> <span class="nf">check_syntax</span><span class="p">(</span><span class="n">code</span><span class="p">):</span>
<span class="k">return</span> <span class="s">&#39;&#39;</span>
<span class="c">#===================================================================================</span></div>
<div class="viewcode-block" id="get_code"><a class="viewcode-back" href="../../../webnotes.model.html#webnotes.model.code.get_code">[docs]</a><span class="k">def</span> <span class="nf">get_code</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">dt</span><span class="p">,</span> <span class="n">dn</span><span class="p">,</span> <span class="n">extn</span><span class="p">,</span> <span class="n">is_static</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">fieldname</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="kn">from</span> <span class="nn">webnotes.modules</span> <span class="kn">import</span> <span class="n">scrub</span><span class="p">,</span> <span class="n">get_module_path</span>
<span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">webnotes</span>
<span class="c"># get module (if required)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">module</span><span class="p">:</span>
<span class="n">module</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s">&quot;select module from `tab</span><span class="si">%s</span><span class="s">` where name=</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">dt</span><span class="p">,</span><span class="s">&#39;</span><span class="si">%s</span><span class="s">&#39;</span><span class="p">),</span><span class="n">dn</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c"># no module, quit</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">module</span><span class="p">:</span>
<span class="k">return</span> <span class="s">&#39;&#39;</span>
<span class="c"># file names</span>
<span class="k">if</span> <span class="n">scrub</span><span class="p">(</span><span class="n">dt</span><span class="p">)</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;page&#39;</span><span class="p">,</span><span class="s">&#39;doctype&#39;</span><span class="p">,</span><span class="s">&#39;search_criteria&#39;</span><span class="p">):</span>
<span class="n">dt</span><span class="p">,</span> <span class="n">dn</span> <span class="o">=</span> <span class="n">scrub</span><span class="p">(</span><span class="n">dt</span><span class="p">),</span> <span class="n">scrub</span><span class="p">(</span><span class="n">dn</span><span class="p">)</span>
<span class="c"># get file name</span>
<span class="n">fname</span> <span class="o">=</span> <span class="n">dn</span> <span class="o">+</span> <span class="s">&#39;.&#39;</span> <span class="o">+</span> <span class="n">extn</span>
<span class="k">if</span> <span class="n">is_static</span><span class="p">:</span>
<span class="n">fname</span> <span class="o">=</span> <span class="n">dn</span> <span class="o">+</span> <span class="s">&#39;_static.&#39;</span> <span class="o">+</span> <span class="n">extn</span>
<span class="c"># code</span>
<span class="n">code</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">get_module_path</span><span class="p">(</span><span class="n">scrub</span><span class="p">(</span><span class="n">module</span><span class="p">)),</span> <span class="n">dt</span><span class="p">,</span> <span class="n">dn</span><span class="p">,</span> <span class="n">fname</span><span class="p">),</span> <span class="s">&#39;r&#39;</span><span class="p">)</span>
<span class="n">code</span> <span class="o">=</span> <span class="nb">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="nb">file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">IOError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
<span class="c"># no file, try from db</span>
<span class="k">if</span> <span class="n">fieldname</span><span class="p">:</span>
<span class="n">code</span> <span class="o">=</span> <span class="n">webnotes</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">get_value</span><span class="p">(</span><span class="n">dt</span><span class="p">,</span> <span class="n">dn</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">)</span>
<span class="k">return</span> <span class="n">code</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../../index.html">
<img class="logo" src="../../../_static/wnflogo200.gif" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../../index.html">WNFramework v1.8 documentation</a> &raquo;</li>
<li><a href="../../index.html" >Module code</a> &raquo;</li>
<li><a href="../../webnotes.html" >webnotes</a> &raquo;</li>
<li><a href="../model.html" >webnotes.model</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2011, Rushabh Mehta, Web Notes Technologies.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div>
</body>
</html>