~openerp-vietnam/openobject-doc/technical-tutorial

« back to all changes in this revision

Viewing changes to build/html/part_4/methods.html

  • Committer: Najlaâ EL KHAYAT
  • Date: 2009-04-07 12:47:35 UTC
  • Revision ID: nel@tinyerp.com-20090407124735-fvnl6acj42fhff34
doc

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
2
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
3
 
 
4
<html xmlns="http://www.w3.org/1999/xhtml">
 
5
  <head>
 
6
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
7
    
 
8
    <title>ORM methods &mdash; openerp v1 documentation</title>
 
9
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
10
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
11
    <script type="text/javascript">
 
12
      var DOCUMENTATION_OPTIONS = {
 
13
        URL_ROOT:    '../',
 
14
        VERSION:     '1',
 
15
        COLLAPSE_MODINDEX: false,
 
16
        FILE_SUFFIX: '.html',
 
17
        HAS_SOURCE:  true
 
18
      };
 
19
    </script>
 
20
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
21
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
22
    <link rel="top" title="openerp v1 documentation" href="../index.html" />
 
23
    <link rel="up" title="Objects, Fields and Methods" href="index.html" />
 
24
    <link rel="next" title="Workflows" href="../part_5/index.html" />
 
25
    <link rel="prev" title="Type of Fields" href="field_type.html" /> 
 
26
  </head>
 
27
  <body>
 
28
    <div class="related">
 
29
      <h3>Navigation</h3>
 
30
      <ul>
 
31
        <li class="right" style="margin-right: 10px">
 
32
          <a href="../genindex.html" title="General Index"
 
33
             accesskey="I">index</a></li>
 
34
        <li class="right" >
 
35
          <a href="../part_5/index.html" title="Workflows"
 
36
             accesskey="N">next</a> |</li>
 
37
        <li class="right" >
 
38
          <a href="field_type.html" title="Type of Fields"
 
39
             accesskey="P">previous</a> |</li>
 
40
        <li><a href="../index.html">openerp v1 documentation</a> &raquo;</li>
 
41
          <li><a href="index.html" accesskey="U">Objects, Fields and Methods</a> &raquo;</li> 
 
42
      </ul>
 
43
    </div>  
 
44
 
 
45
    <div class="document">
 
46
      <div class="documentwrapper">
 
47
        <div class="bodywrapper">
 
48
          <div class="body">
 
49
            
 
50
  <div class="section" id="orm-methods">
 
51
<h1>ORM methods<a class="headerlink" href="#orm-methods" title="Permalink to this headline">¶</a></h1>
 
52
<dl class="describe">
 
53
<dt>
 
54
<tt class="descname">create</tt></dt>
 
55
<dd></dd></dl>
 
56
 
 
57
<table class="docutils field-list" frame="void" rules="none">
 
58
<col class="field-name" />
 
59
<col class="field-body" />
 
60
<tbody valign="top">
 
61
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
62
</tr>
 
63
</tbody>
 
64
</table>
 
65
<p>Create a new resource</p>
 
66
<p><strong>Signature:</strong> def create(cr, uid, vals, context={})</p>
 
67
<p><strong>Parameters:</strong></p>
 
68
<blockquote>
 
69
<ul class="simple">
 
70
<li>vals: a dictionary of values for every field. This dictionary must use this form: <strong>{&#8216;name_of_the_field&#8217;: value, ...}</strong></li>
 
71
<li>context (optional): the actual context dictionary.</li>
 
72
</ul>
 
73
<p><strong>Returns:</strong> the id of the newly created resource.</p>
 
74
</blockquote>
 
75
<p>Example:</p>
 
76
<div class="highlight-python"><div class="highlight"><pre><span class="nb">id</span> <span class="o">=</span> <span class="n">pooler</span><span class="o">.</span><span class="n">get_pool</span><span class="p">(</span><span class="n">cr</span><span class="o">.</span><span class="n">dbname</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;res.partner.event&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span>
 
77
        <span class="p">{</span><span class="s">&#39;name&#39;</span><span class="p">:</span> <span class="s">&#39;Email sent through mass mailing&#39;</span><span class="p">,</span>
 
78
         <span class="s">&#39;partner_id&#39;</span><span class="p">:</span> <span class="n">partner</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
 
79
         <span class="s">&#39;description&#39;</span><span class="p">:</span> <span class="s">&#39;The Description for Partner Event&#39;</span><span class="p">})</span>
 
80
</pre></div>
 
81
</div>
 
82
<dl class="describe">
 
83
<dt>
 
84
<tt class="descname">search</tt></dt>
 
85
<dd></dd></dl>
 
86
 
 
87
<table class="docutils field-list" frame="void" rules="none">
 
88
<col class="field-name" />
 
89
<col class="field-body" />
 
90
<tbody valign="top">
 
91
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
92
</tr>
 
93
</tbody>
 
94
</table>
 
95
<p>Search all the resources which satisfy certain criteria</p>
 
96
<p><strong>Signature</strong>: def search(self, cr, uid, args, offset=0, limit=2000,order=None,context=None, count=False)</p>
 
97
<p><strong>Parameters</strong></p>
 
98
<blockquote>
 
99
<ul>
 
100
<li><dl class="first docutils">
 
101
<dt>args: a list of tuples containing the search criteria. This list must be of the form: [(&#8216;name_of_the_field&#8217;, &#8216;operator&#8217;, value), ...]. The available operators are:</dt>
 
102
<dd><ul class="first last simple">
 
103
<li>=, &gt;, &lt;, &lt;=, &gt;=</li>
 
104
<li>IN (sql)</li>
 
105
<li>LIKE, ILIKE (sql)</li>
 
106
<li>child_of</li>
 
107
</ul>
 
108
</dd>
 
109
</dl>
 
110
</li>
 
111
<li><p class="first">offset (optional): do not return the &#8220;offset&#8221; first results.</p>
 
112
</li>
 
113
<li><p class="first">limit (optional): maximum number of results to return.</p>
 
114
</li>
 
115
</ul>
 
116
</blockquote>
 
117
<p><strong>Returns</strong>: the list of ids of matching resources.</p>
 
118
<p>Example:</p>
 
119
<div class="highlight-python"><div class="highlight"><pre><span class="n">ids</span> <span class="o">=</span> <span class="n">pooler</span><span class="o">.</span><span class="n">get_pool</span><span class="p">(</span><span class="n">cr</span><span class="o">.</span><span class="n">dbname</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;res.partner&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="p">[(</span><span class="s">&#39;category_id&#39;</span><span class="p">,</span> <span class="s">&#39;=&#39;</span><span class="p">,</span> <span class="s">&#39;Customer&#39;</span><span class="p">)])</span>
 
120
</pre></div>
 
121
</div>
 
122
<p>This example will return a list with all the partners that have the category &#8216;Customer&#8217;.</p>
 
123
<dl class="describe">
 
124
<dt>
 
125
<tt class="descname">read</tt></dt>
 
126
<dd></dd></dl>
 
127
 
 
128
<table class="docutils field-list" frame="void" rules="none">
 
129
<col class="field-name" />
 
130
<col class="field-body" />
 
131
<tbody valign="top">
 
132
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
133
</tr>
 
134
</tbody>
 
135
</table>
 
136
<p>List of fields resources values.</p>
 
137
<blockquote>
 
138
<p><strong>Signature</strong>: def read(self, cr, uid, ids, fields=None, context={})</p>
 
139
<p><strong>Parameters:</strong></p>
 
140
<blockquote>
 
141
<blockquote>
 
142
<ul class="simple">
 
143
<li>ids: list of the identifiers of the resources to read (list of integers).</li>
 
144
<li>fields (optional): the list of the interested fields. If a value is not provided for this parameter, the function will check all the fields.</li>
 
145
<li>context (optional): the actual context dictionary.</li>
 
146
</ul>
 
147
</blockquote>
 
148
<p><strong>Returns</strong>: A list of dictionaries (a dictionary per resource asked) of the form [{&#8216;name_of_the_field&#8217;: value, ...}, ...]</p>
 
149
</blockquote>
 
150
</blockquote>
 
151
<p>Example:</p>
 
152
<div class="highlight-python"><pre>values = pooler.get_pool(cr.dbname).get('res.partner').
 
153
            read(cr, uid, ids, ['name','category_id'], context=context)</pre>
 
154
</div>
 
155
<dl class="describe">
 
156
<dt>
 
157
<tt class="descname">browse</tt></dt>
 
158
<dd></dd></dl>
 
159
 
 
160
<table class="docutils field-list" frame="void" rules="none">
 
161
<col class="field-name" />
 
162
<col class="field-body" />
 
163
<tbody valign="top">
 
164
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
165
</tr>
 
166
</tbody>
 
167
</table>
 
168
<p>Return one or several resources with the objects form. These object fields can be reached directly with the pointed notation (&#8220;object.name_of_the_field&#8221;). The &#8220;relations&#8221; fields are also automatically evaluated to allow you to recover the values in the &#8220;neighbors&#8221; objects.</p>
 
169
<blockquote>
 
170
<p><strong>Signature</strong>: def browse(self, cr, uid, select, offset=0, limit=2000)</p>
 
171
<p><strong>Parameters</strong></p>
 
172
<blockquote>
 
173
<ul>
 
174
<li><dl class="first docutils">
 
175
<dt>select: this parameter accept data of several types:</dt>
 
176
<dd><ul class="first last simple">
 
177
<li>an integer : identifier of a resource</li>
 
178
<li>a list of integers (list of identifiers)</li>
 
179
</ul>
 
180
</dd>
 
181
</dl>
 
182
</li>
 
183
<li><p class="first">offset (optional): the number of results to pass.</p>
 
184
</li>
 
185
<li><p class="first">limit (optional): the maximum number of results to return.</p>
 
186
</li>
 
187
</ul>
 
188
</blockquote>
 
189
<p><strong>Returns</strong>:</p>
 
190
<blockquote>
 
191
<ul class="simple">
 
192
<li>if an integer (identifier) has been passed as select parameter, return an object having the properties described here above.</li>
 
193
<li>if a list of integer (identifiers) has been passed, return the object list.</li>
 
194
</ul>
 
195
</blockquote>
 
196
</blockquote>
 
197
<table class="docutils field-list" frame="void" rules="none">
 
198
<col class="field-name" />
 
199
<col class="field-body" />
 
200
<tbody valign="top">
 
201
<tr class="field"><th class="field-name">Example:</th><td class="field-body"></td>
 
202
</tr>
 
203
</tbody>
 
204
</table>
 
205
<p>Let&#8217;s consider the case of a partner (object &#8216;res.partner&#8217;) and of a partner contact (object &#8216;res.partner.address&#8217;). Let&#8217;s suppose that we know the identifier of a partner contact (name contact_id) and we want to recover his name and the account number of the company he works for.</p>
 
206
<p>Knowing that the object res.partner contains the field:</p>
 
207
<div class="highlight-python"><pre>'bank':fields.char('Bank account',size=64),</pre>
 
208
</div>
 
209
<p>and the object res.partner.address contains the fields:</p>
 
210
<div class="highlight-python"><pre>'partner_id': fields.many2one('res.partner', 'Partner', required=True),
 
211
'name': fields.char('Contact Name', size=64),</pre>
 
212
</div>
 
213
<p>the most simple way to proceed is to use the browse method:</p>
 
214
<div class="highlight-python"><div class="highlight"><pre><span class="n">addr_obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pool</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;res.partner.address&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">browse</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="n">contact_id</span><span class="p">)</span>
 
215
</pre></div>
 
216
</div>
 
217
<p>so, to recover the two fields that interest us, you have to write:</p>
 
218
<div class="highlight-python"><div class="highlight"><pre><span class="n">name</span> <span class="o">=</span> <span class="n">addr_obj</span><span class="o">.</span><span class="n">name</span>
 
219
<span class="n">account_num</span> <span class="o">=</span> <span class="n">addr_obj</span><span class="o">.</span><span class="n">partner_id</span><span class="o">.</span><span class="n">bank</span>
 
220
</pre></div>
 
221
</div>
 
222
<div class="admonition note">
 
223
<p class="first admonition-title">Note</p>
 
224
<p class="last">This method is only useful locally (on the server itself) and not with the other interfaces !!</p>
 
225
</div>
 
226
<dl class="describe">
 
227
<dt>
 
228
<tt class="descname">write</tt></dt>
 
229
<dd></dd></dl>
 
230
 
 
231
<table class="docutils field-list" frame="void" rules="none">
 
232
<col class="field-name" />
 
233
<col class="field-body" />
 
234
<tbody valign="top">
 
235
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
236
</tr>
 
237
</tbody>
 
238
</table>
 
239
<p>Writes values in one or several fields of one or several resources</p>
 
240
<blockquote>
 
241
<p><strong>Signature:</strong> def write(self, cr, uid, ids, vals, context={})</p>
 
242
<p><strong>Parameters:</strong></p>
 
243
<blockquote>
 
244
<ul class="simple">
 
245
<li>ids: the resources identifiers list to modify.</li>
 
246
<li>vals: a dictionary with values to write. This dictionary must be with the form: {&#8216;name_of_the_field&#8217;: value, ...}.</li>
 
247
<li>context (optional): the actual context dictionary.</li>
 
248
</ul>
 
249
</blockquote>
 
250
<p><strong>Returns:</strong> True</p>
 
251
</blockquote>
 
252
<p>Example:</p>
 
253
<div class="highlight-python"><div class="highlight"><pre><span class="bp">self</span><span class="o">.</span><span class="n">pool</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;sale.order&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="p">{</span><span class="s">&#39;state&#39;</span><span class="p">:</span><span class="s">&#39;cancel&#39;</span><span class="p">})</span>
 
254
</pre></div>
 
255
</div>
 
256
<dl class="describe">
 
257
<dt>
 
258
<tt class="descname">unlink</tt></dt>
 
259
<dd></dd></dl>
 
260
 
 
261
<table class="docutils field-list" frame="void" rules="none">
 
262
<col class="field-name" />
 
263
<col class="field-body" />
 
264
<tbody valign="top">
 
265
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
266
</tr>
 
267
</tbody>
 
268
</table>
 
269
<p>Delete one or several resources</p>
 
270
<blockquote>
 
271
<p><strong>Signature:</strong> def unlink(self, cr, uid, ids)</p>
 
272
<p><strong>Parameters:</strong></p>
 
273
<blockquote>
 
274
<ul class="simple">
 
275
<li>ids: the identifiers resources list to delete.</li>
 
276
</ul>
 
277
</blockquote>
 
278
<p><strong>Returns:</strong> True</p>
 
279
</blockquote>
 
280
<p>Example:</p>
 
281
<div class="highlight-python"><div class="highlight"><pre><span class="bp">self</span><span class="o">.</span><span class="n">pool</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;sale.order&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">unlink</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span><span class="n">uid</span><span class="p">,</span> <span class="n">ids</span><span class="p">)</span>
 
282
</pre></div>
 
283
</div>
 
284
<div class="section" id="methods-to-manipulate-the-default-values">
 
285
<h2>Methods to manipulate the default values<a class="headerlink" href="#methods-to-manipulate-the-default-values" title="Permalink to this headline">¶</a></h2>
 
286
<dl class="describe">
 
287
<dt>
 
288
<tt class="descname">default_get</tt></dt>
 
289
<dd></dd></dl>
 
290
 
 
291
<table class="docutils field-list" frame="void" rules="none">
 
292
<col class="field-name" />
 
293
<col class="field-body" />
 
294
<tbody valign="top">
 
295
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
296
</tr>
 
297
</tbody>
 
298
</table>
 
299
<p>Get back the value by default for one or several fields.</p>
 
300
<blockquote>
 
301
<p><strong>Signature:</strong> def default_get(self, cr, uid, fields, form=None, reference=None)</p>
 
302
<p><strong>Parameters:</strong></p>
 
303
<blockquote>
 
304
<ul class="simple">
 
305
<li>fields: the fields list which we want to recover the value by default.</li>
 
306
<li>form (optional): TODO</li>
 
307
<li>reference (optional): TODO</li>
 
308
</ul>
 
309
</blockquote>
 
310
<p><strong>Returns:</strong> dictionary of the default values of the form {&#8216;field_name&#8217;: value, ... }</p>
 
311
</blockquote>
 
312
<p>Example:</p>
 
313
<div class="highlight-python"><div class="highlight"><pre><span class="bp">self</span><span class="o">.</span><span class="n">pool</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;hr.analytic.timesheet&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">default_get</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="p">[</span><span class="s">&#39;product_id&#39;</span><span class="p">,</span><span class="s">&#39;product_uom_id&#39;</span><span class="p">])</span>
 
314
</pre></div>
 
315
</div>
 
316
<dl class="describe">
 
317
<dt>
 
318
<tt class="descname">default_set</tt></dt>
 
319
<dd></dd></dl>
 
320
 
 
321
<table class="docutils field-list" frame="void" rules="none">
 
322
<col class="field-name" />
 
323
<col class="field-body" />
 
324
<tbody valign="top">
 
325
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
 
326
</tr>
 
327
</tbody>
 
328
</table>
 
329
<p>Change the default value for one or several fields.</p>
 
330
<blockquote>
 
331
<p><strong>Signature:</strong> def default_set(self, cr, uid, field, value, for_user=False)</p>
 
332
<p><strong>Parameters:</strong></p>
 
333
<blockquote>
 
334
<ul class="simple">
 
335
<li>field: the name of the field that we want to change the value by default.</li>
 
336
<li>value: the value by default.</li>
 
337
<li>for_user (optional): boolean that determines if the new default value must be available only for the current user or for all users.</li>
 
338
</ul>
 
339
</blockquote>
 
340
<p><strong>Returns:</strong> True</p>
 
341
</blockquote>
 
342
<p>Example:</p>
 
343
<div class="highlight-python"><div class="highlight"><pre><span class="n">TODO</span>
 
344
</pre></div>
 
345
</div>
 
346
</div>
 
347
<div class="section" id="methods-to-manipulate-the-permissions">
 
348
<h2>Methods to manipulate the permissions<a class="headerlink" href="#methods-to-manipulate-the-permissions" title="Permalink to this headline">¶</a></h2>
 
349
<dl class="describe">
 
350
<dt>
 
351
<tt class="descname">perm_read</tt></dt>
 
352
<dd></dd></dl>
 
353
 
 
354
<table class="docutils field-list" frame="void" rules="none">
 
355
<col class="field-name" />
 
356
<col class="field-body" />
 
357
<tbody valign="top">
 
358
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def perm_read(self, cr, uid, ids)</p>
 
359
<p><strong>Parameters:</strong></p>
 
360
<blockquote>
 
361
<ul class="simple">
 
362
<li>ids: an integer list</li>
 
363
</ul>
 
364
</blockquote>
 
365
<p><strong>Returns:</strong> a list of dictionaries with the following keys</p>
 
366
<blockquote class="last">
 
367
<ul class="simple">
 
368
<li>level : access level</li>
 
369
<li>uid : user id</li>
 
370
<li>gid : group id</li>
 
371
<li>create_uid: user who created the resource</li>
 
372
<li>create_date: date when the resource was created</li>
 
373
<li>write_uid: last user who changed the resource</li>
 
374
<li>write_date: date of the last change to the resource</li>
 
375
</ul>
 
376
</blockquote>
 
377
</td>
 
378
</tr>
 
379
</tbody>
 
380
</table>
 
381
<dl class="describe">
 
382
<dt>
 
383
<tt class="descname">perm_write</tt></dt>
 
384
<dd></dd></dl>
 
385
 
 
386
<table class="docutils field-list" frame="void" rules="none">
 
387
<col class="field-name" />
 
388
<col class="field-body" />
 
389
<tbody valign="top">
 
390
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def perm_write(self, cr, uid, ids, fields)</p>
 
391
<p><strong>Parameters:</strong></p>
 
392
<p class="last"><strong>Returns:</strong></p>
 
393
</td>
 
394
</tr>
 
395
</tbody>
 
396
</table>
 
397
<p>Example:</p>
 
398
<div class="highlight-python"><div class="highlight"><pre><span class="bp">self</span><span class="o">.</span><span class="n">pool</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;res.partner&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">perm_read</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
 
399
</pre></div>
 
400
</div>
 
401
</div>
 
402
<div class="section" id="methods-to-generate-the-fields-and-the-views">
 
403
<h2>Methods to generate the fields and the views<a class="headerlink" href="#methods-to-generate-the-fields-and-the-views" title="Permalink to this headline">¶</a></h2>
 
404
<dl class="describe">
 
405
<dt>
 
406
<tt class="descname">fields_get</tt></dt>
 
407
<dd></dd></dl>
 
408
 
 
409
<table class="docutils field-list" frame="void" rules="none">
 
410
<col class="field-name" />
 
411
<col class="field-body" />
 
412
<tbody valign="top">
 
413
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def fields_get(self, cr, uid, fields = None, context={})</p>
 
414
<p><strong>Parameters:</strong></p>
 
415
<blockquote>
 
416
<ul class="simple">
 
417
<li>fields: a list of fields that interest us, if None, all the fields</li>
 
418
<li>context: context[&#8216;lang&#8217;]</li>
 
419
</ul>
 
420
</blockquote>
 
421
<p class="last"><strong>Result:</strong></p>
 
422
</td>
 
423
</tr>
 
424
</tbody>
 
425
</table>
 
426
<p>Example:</p>
 
427
<p>In payment.line in account_payment module</p>
 
428
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">fields_get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
429
   <span class="n">res</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">payment_line</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">fields_get</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">uid</span><span class="p">,</span> <span class="n">fields</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
 
430
   <span class="k">if</span> <span class="s">&#39;communication2&#39;</span> <span class="ow">in</span> <span class="n">res</span><span class="p">:</span>
 
431
       <span class="n">res</span><span class="p">[</span><span class="s">&#39;communication2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s">&#39;states&#39;</span><span class="p">,</span> <span class="p">{})</span>
 
432
       <span class="n">res</span><span class="p">[</span><span class="s">&#39;communication2&#39;</span><span class="p">][</span><span class="s">&#39;states&#39;</span><span class="p">][</span><span class="s">&#39;structured&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[(</span><span class="s">&#39;readonly&#39;</span><span class="p">,</span> <span class="bp">True</span><span class="p">)]</span>
 
433
       <span class="n">res</span><span class="p">[</span><span class="s">&#39;communication2&#39;</span><span class="p">][</span><span class="s">&#39;states&#39;</span><span class="p">][</span><span class="s">&#39;normal&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[(</span><span class="s">&#39;readonly&#39;</span><span class="p">,</span> <span class="bp">False</span><span class="p">)]</span>
 
434
   <span class="k">return</span> <span class="n">res</span>
 
435
</pre></div>
 
436
</div>
 
437
<dl class="describe">
 
438
<dt>
 
439
<tt class="descname">fields_view_get</tt></dt>
 
440
<dd></dd></dl>
 
441
 
 
442
<table class="docutils field-list" frame="void" rules="none">
 
443
<col class="field-name" />
 
444
<col class="field-body" />
 
445
<tbody valign="top">
 
446
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def fields_view_get(self, cr, uid, view_id=None, view_type=&#8217;form&#8217;, context={}, toolbar=False)</p>
 
447
<p><strong>Parameters:</strong></p>
 
448
<p class="last"><strong>Result:</strong></p>
 
449
</td>
 
450
</tr>
 
451
</tbody>
 
452
</table>
 
453
<p>Example:</p>
 
454
<p>In membership module [product.product]:</p>
 
455
<div class="highlight-python"><pre>def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False):
 
456
    if ('product' in context) and (context['product']=='membership_product'):
 
457
        model_data_ids_form = self.pool.get('ir.model.data').search(cr,user,[('model','=','ir.ui.view'),('name','in',
 
458
                                                            ['membership_products_form','membership_products_tree'])])
 
459
        resource_id_form = self.pool.get('ir.model.data').
 
460
                            read(cr,user,model_data_ids_form,fields=['res_id','name'])
 
461
        dict_model={}
 
462
        for i in resource_id_form:
 
463
            dict_model[i['name']]=i['res_id']
 
464
        if view_type=='form':
 
465
            view_id = dict_model['membership_products_form']
 
466
        else:
 
467
            view_id = dict_model['membership_products_tree']
 
468
    return super(Product,self).fields_view_get(cr, user, view_id, view_type, context, toolbar)</pre>
 
469
</div>
 
470
<dl class="describe">
 
471
<dt>
 
472
<tt class="descname">distinct_field_get</tt></dt>
 
473
<dd></dd></dl>
 
474
 
 
475
<table class="docutils field-list" frame="void" rules="none">
 
476
<col class="field-name" />
 
477
<col class="field-body" />
 
478
<tbody valign="top">
 
479
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def distinct_field_get(self, cr, uid, field, value, args=[], offset=0, limit=2000)</p>
 
480
<p><strong>Parameters:</strong></p>
 
481
<p class="last"><strong>Result:</strong></p>
 
482
</td>
 
483
</tr>
 
484
</tbody>
 
485
</table>
 
486
<p>Example:</p>
 
487
<div class="highlight-python"><div class="highlight"><pre><span class="n">TODO</span>
 
488
</pre></div>
 
489
</div>
 
490
</div>
 
491
<div class="section" id="methods-concerning-the-name-of-the-resources">
 
492
<h2>Methods concerning the name of the resources<a class="headerlink" href="#methods-concerning-the-name-of-the-resources" title="Permalink to this headline">¶</a></h2>
 
493
<dl class="describe">
 
494
<dt>
 
495
<tt class="descname">name_get</tt></dt>
 
496
<dd></dd></dl>
 
497
 
 
498
<table class="docutils field-list" frame="void" rules="none">
 
499
<col class="field-name" />
 
500
<col class="field-body" />
 
501
<tbody valign="top">
 
502
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def name_get(self, cr, uid, ids, context={})</p>
 
503
<p><strong>Parameters:</strong></p>
 
504
<p class="last"><strong>Result:</strong> a list of tuples of the form [(id, name), ...]</p>
 
505
</td>
 
506
</tr>
 
507
</tbody>
 
508
</table>
 
509
<p>Example:</p>
 
510
<p>In res.partner.address:</p>
 
511
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">name_get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cr</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{}):</span>
 
512
    <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">ids</span><span class="p">):</span>
 
513
        <span class="k">return</span> <span class="p">[]</span>
 
514
    <span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
 
515
    <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="p">[</span><span class="s">&#39;name&#39;</span><span class="p">,</span><span class="s">&#39;zip&#39;</span><span class="p">,</span><span class="s">&#39;city&#39;</span><span class="p">]):</span>
 
516
        <span class="n">addr</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="s">&#39;name&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
 
517
        <span class="k">if</span> <span class="n">r</span><span class="p">[</span><span class="s">&#39;name&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="s">&#39;zip&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="n">r</span><span class="p">[</span><span class="s">&#39;city&#39;</span><span class="p">]):</span>
 
518
            <span class="n">addr</span> <span class="o">+=</span> <span class="s">&#39;, &#39;</span>
 
519
        <span class="n">addr</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="s">&#39;zip&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="s">&#39;&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39; &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="s">&#39;city&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
 
520
        <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">r</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">],</span> <span class="n">addr</span><span class="p">))</span>
 
521
    <span class="k">return</span> <span class="n">res</span>
 
522
</pre></div>
 
523
</div>
 
524
<dl class="describe">
 
525
<dt>
 
526
<tt class="descname">name_search</tt></dt>
 
527
<dd></dd></dl>
 
528
 
 
529
<table class="docutils field-list" frame="void" rules="none">
 
530
<col class="field-name" />
 
531
<col class="field-body" />
 
532
<tbody valign="top">
 
533
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first"><strong>Signature:</strong> def name_search(self, cr, uid, name=, args=[], operator=&#8217;ilike&#8217;, context={})</p>
 
534
<p><strong>&#8216;Parameters:</strong></p>
 
535
<p class="last"><strong>Result:</strong></p>
 
536
</td>
 
537
</tr>
 
538
</tbody>
 
539
</table>
 
540
<p>Example:</p>
 
541
<p>In res.country:</p>
 
542
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">name_search</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cr</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">&#39;ilike&#39;</span><span class="p">,</span>
 
543
      <span class="n">context</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mf">80</span><span class="p">):</span>
 
544
  <span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">:</span>
 
545
      <span class="n">args</span><span class="o">=</span><span class="p">[]</span>
 
546
  <span class="k">if</span> <span class="ow">not</span> <span class="n">context</span><span class="p">:</span>
 
547
      <span class="n">context</span><span class="o">=</span><span class="p">{}</span>
 
548
  <span class="n">ids</span> <span class="o">=</span> <span class="bp">False</span>
 
549
  <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="o">==</span> <span class="mf">2</span><span class="p">:</span>
 
550
      <span class="n">ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="p">[(</span><span class="s">&#39;code&#39;</span><span class="p">,</span> <span class="s">&#39;=&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">)]</span> <span class="o">+</span> <span class="n">args</span><span class="p">,</span>
 
551
                        <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
 
552
  <span class="k">if</span> <span class="ow">not</span> <span class="n">ids</span><span class="p">:</span>
 
553
      <span class="n">ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="p">[(</span><span class="s">&#39;name&#39;</span><span class="p">,</span> <span class="n">operator</span><span class="p">,</span> <span class="n">name</span><span class="p">)]</span> <span class="o">+</span> <span class="n">args</span><span class="p">,</span>
 
554
                        <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
 
555
  <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name_get</span><span class="p">(</span><span class="n">cr</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
 
556
</pre></div>
 
557
</div>
 
558
</div>
 
559
</div>
 
560
 
 
561
 
 
562
          </div>
 
563
        </div>
 
564
      </div>
 
565
      <div class="sphinxsidebar">
 
566
        <div class="sphinxsidebarwrapper">
 
567
            <h3><a href="../index.html">Table Of Contents</a></h3>
 
568
            <ul>
 
569
<li><a class="reference external" href="">ORM methods</a><ul>
 
570
<li><a class="reference external" href="#methods-to-manipulate-the-default-values">Methods to manipulate the default values</a></li>
 
571
<li><a class="reference external" href="#methods-to-manipulate-the-permissions">Methods to manipulate the permissions</a></li>
 
572
<li><a class="reference external" href="#methods-to-generate-the-fields-and-the-views">Methods to generate the fields and the views</a></li>
 
573
<li><a class="reference external" href="#methods-concerning-the-name-of-the-resources">Methods concerning the name of the resources</a></li>
 
574
</ul>
 
575
</li>
 
576
</ul>
 
577
 
 
578
            <h4>Previous topic</h4>
 
579
            <p class="topless"><a href="field_type.html"
 
580
                                  title="previous chapter">Type of Fields</a></p>
 
581
            <h4>Next topic</h4>
 
582
            <p class="topless"><a href="../part_5/index.html"
 
583
                                  title="next chapter">Workflows</a></p>
 
584
            <h3>This Page</h3>
 
585
            <ul class="this-page-menu">
 
586
              <li><a href="../_sources/part_4/methods.txt"
 
587
                     rel="nofollow">Show Source</a></li>
 
588
            </ul>
 
589
          <div id="searchbox" style="display: none">
 
590
            <h3>Quick search</h3>
 
591
              <form class="search" action="../search.html" method="get">
 
592
                <input type="text" name="q" size="18" />
 
593
                <input type="submit" value="Go" />
 
594
                <input type="hidden" name="check_keywords" value="yes" />
 
595
                <input type="hidden" name="area" value="default" />
 
596
              </form>
 
597
              <p class="searchtip" style="font-size: 90%">
 
598
              Enter search terms or a module, class or function name.
 
599
              </p>
 
600
          </div>
 
601
          <script type="text/javascript">$('#searchbox').show(0);</script>
 
602
        </div>
 
603
      </div>
 
604
      <div class="clearer"></div>
 
605
    </div>
 
606
    <div class="related">
 
607
      <h3>Navigation</h3>
 
608
      <ul>
 
609
        <li class="right" style="margin-right: 10px">
 
610
          <a href="../genindex.html" title="General Index"
 
611
             >index</a></li>
 
612
        <li class="right" >
 
613
          <a href="../part_5/index.html" title="Workflows"
 
614
             >next</a> |</li>
 
615
        <li class="right" >
 
616
          <a href="field_type.html" title="Type of Fields"
 
617
             >previous</a> |</li>
 
618
        <li><a href="../index.html">openerp v1 documentation</a> &raquo;</li>
 
619
          <li><a href="index.html" >Objects, Fields and Methods</a> &raquo;</li> 
 
620
      </ul>
 
621
    </div>
 
622
    <div class="footer">
 
623
      &copy; Copyright 2009, openerp.
 
624
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
 
625
    </div>
 
626
  </body>
 
627
</html>
 
 
b'\\ No newline at end of file'