Skip to content

Commit 62f8467

Browse files
committed
[REF] start to clean up snippet, start to replace some function fields on new api, add support for compute fields, still work in progress
1 parent 34fcd8e commit 62f8467

File tree

2 files changed

+81
-143
lines changed

2 files changed

+81
-143
lines changed

UltiSnips/python.snippets

Lines changed: 80 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
snippet imodel
2-
from openerp.osv import fields, orm
2+
from openerp import models
33
${1}
44
endsnippet
55

@@ -8,7 +8,7 @@ from . import ${1}
88
endsnippet
99

1010
snippet ifield
11-
from openerp.osv import fields, orm
11+
from openerp import api, fields, models
1212
${1}
1313
endsnippet
1414

@@ -26,7 +26,7 @@ endsnippet
2626

2727
snippet start
2828
# -*- coding: utf-8 -*-
29-
# Copyright 2016 Akretion (http://www.akretion.com).
29+
# Copyright 2017 Akretion (http://www.akretion.com).
3030
# @author Sébastien BEAU <sebastien.beau@akretion.com>
3131
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3232
${1}
@@ -59,126 +59,140 @@ snippet openerp
5959
#
6060
endsnippet
6161

62+
global !p
63+
def format_description(name):
64+
return name.replace('.', ' ').title()
65+
66+
def format_class(name):
67+
return format_description(name).replace(' ', '')
68+
endglobal
69+
6270
snippet oo "Odoo Model"
63-
class ${1:ClassName}(orm.Model):
64-
_name = '${2:ObjectName}'
65-
_description = '${3}'
71+
class `!p snip.rv=format_class(t[1])`(models.Model):
72+
_name = '${1:ObjectName}'
73+
_description = '`!p snip.rv=format_description(t[1])`'
6674

67-
_columns = {
68-
${4}
69-
}
75+
${2}
7076

7177
endsnippet
7278

7379
snippet ooi "Odoo Model Inherit"
74-
class ${1:ClassName}(orm.Model):
75-
_inherit = '${2:ObjectName}'
80+
class `!p snip.rv=format_class(t[1])`(models.Model):
81+
_inherit = '${1:ObjectName}'
7682

77-
_columns = {
78-
${3}
79-
}
83+
${2}
8084

8185
endsnippet
8286

83-
snippet oom "Odoo Wizard"
84-
class ${1:ClassName}(osv.osv_memory):
85-
_name = '${2:ObjectName}'
86-
_description = '${3:Description}'
87-
88-
_columns = {
89-
${4}
90-
}
91-
92-
$1()
87+
snippet oow "Odoo Wizard"
88+
class `!p snip.rv=format_class(t[1])`(models.TransientModel):
89+
_name = '${1:ObjectName}'
90+
_description = '`!p snip.rv=format_description(t[1])`'
9391

92+
${2}
9493
endsnippet
9594

96-
snippet oomi "Odoo Wizard Inherit"
97-
class ${1:ClassName}(osv.osv_memory):
98-
_inherit = '${2:ObjectName}'
99-
100-
_columns = {
101-
${3}
102-
}
103-
104-
$1()
95+
snippet oowi "Odoo Wizard Inherit"
96+
class `!p snip.rv=format_class(t[1])`(models.TransientModel):
97+
_inherit = '${1:ObjectName}'
10598

106-
#
107-
# Define type of fields
108-
#
99+
${2}
109100
endsnippet
110101

111-
snippet fields "fields.char"
112-
'${1:fieldname}': fields.char('${2:Label}', size=${3:64}, ${5}help='${4:Help note}'),${6}
102+
snippet fch "char"
103+
${1:fieldname} = fields.Char(${2})
104+
${3}
113105
endsnippet
114106

115-
snippet fields "fields.integer"
107+
snippet fint "integer"
116108
'${1:fieldname}': fields.integer('${2:Label}', ${4}help='${3:Help note}'),${5}
117109
endsnippet
118110

119-
snippet fields "fields.float"
111+
snippet ffl "float"
120112
'${1:fieldname}': fields.float('${2:Label}', digits_compute=dp.get_precision('${3:PrecisionName}'), ${5}help='${4:Help note}'),${6}
121113
endsnippet
122114

123-
snippet fields "fields.boolean"
115+
snippet fbo "boolean"
124116
'${1:fieldname}': fields.boolean('${2:Label}', ${4}help='${3:Help note}'),${5}
125117
endsnippet
126118

127-
snippet fields "fields.date"
119+
snippet fdt "date"
128120
'${1:fieldname}': fields.date('${2:Label}', ${4}help='${3:Help note}'),${5}
129121
endsnippet
130122

131-
snippet fields "fields.datetime"
132-
'${1:fieldname}': fields.datetime('${2:Label}', ${4}help='${3:Help note}'),${5}
123+
snippet fdti "datetime"
124+
'${1:fieldname}': fields.datetime('${2:Label}', ${3}),${4}
133125
endsnippet
134126

135-
snippet fields "fields.selection"
136-
'${1:fieldname}': fields.selection(${2:[('', '')]}, '${3:Label}', ${5}help='${4:Help note}'),${6}
127+
snippet fsl "selection"
128+
${1:fieldname} = fields.Selection([
129+
${2:('', '')}
130+
],
131+
${3})
132+
${4}
133+
`!p snip._parent.globals['last_field'] = t[1]`
134+
endsnippet
135+
136+
snippet st "selection tuple"
137+
('${1:fieldname}', '`!p snip.rv=t[1].replace('_', ' ').title()`'),${2}
137138
endsnippet
138139

139-
snippet fields "fields.many2one"
140+
snippet fm2o "many2one"
140141
'${1:fieldname}_id': fields.many2one('${2:ObjectName}', '${3:Label}', ${5}help='${4:Help note}'),${6}
141142
endsnippet
142143

143-
snippet fields "fields.many2many"
144+
snippet fm2m "many2many"
144145
'${1:fieldname}_ids': fields.many2many('${2:ObjectName}', '${3:TableRel}', '${4:src_id}', '${5:dst_id}', '${6:Label}', ${8}help='${7:Help note}'),${9}
145146
endsnippet
146147

147-
snippet fields "fields.one2many"
148+
snippet fo2m "one2many"
148149
'${1:fieldname}_ids': fields.one2many('${2:ObjectName}', '${3:fieldname}_id', '${4:Label}', ${6}help='${5:Help note}'),${7}
149150
endsnippet
150151

151-
snippet fields "fields.function"
152-
'${1:fieldname}': fields.function(${2:FunctionName},
153-
string='${4:label}',
154-
type='${5:float}',
155-
store=${6:False},${8}
156-
help='${7:Help note}'),${9}
157-
endsnippet
158-
159-
snippet fields "fields.related"
160-
'${1:fieldname}': fields.related('${2:field in}', '${3:field rel}', type='${4:many2one}', ${5:relation='res.partner'},
161-
string='${6:Label}', ${8}help='${7:Help note}'),${9}
162-
endsnippet
163-
164-
snippet fields "fields.property"
152+
snippet fpr "property"
165153
'${1:fieldname}': fields.property('${2:object}', method=${3:True},
166154
string='${4:label}', type='${5:many2one}', ${7}help='${6:Help note}'),${8}
167155
endsnippet
168156

169-
snippet fields "fields.text"
157+
snippet ftx "text"
170158
'${1:fieldname}': fields.text('${2:Label}', ${4}help='${3:Help note}'),${5}
171159
endsnippet
172160

173-
snippet fields "fields.binary"
161+
snippet fbin "binary"
174162
'${1:fieldname}': fields.binary('${2:Label}', ${4}help='${3:Help note}'),${5}
175163
endsnippet
176164

177-
snippet fields "fields.reference"
165+
snippet fref "reference"
178166
'${1:fieldname}': fields.reference('${2:Label}', selection=${3:[('', '')]}, size=128, ${5}help='${4:Help note}'),${6}
179167
# Attribute for fields
180168
endsnippet
181169

170+
snippet cpt "compute"
171+
compute='_compute_`!p snip.rv=snip._parent.globals['last_field']`',
172+
endsnippet
173+
174+
snippet fcpt " function compute"
175+
def _compute_`!p snip.rv=snip._parent.globals['last_field']`'(self):
176+
for record in self:
177+
endsnippet
178+
179+
snippet cpti "compute inverse"
180+
inverse='_inverse_`!p snip.rv=snip._parent.globals['last_field']`',
181+
endsnippet
182+
183+
snippet fcpti "function compute inverse"
184+
def _inverse_`!p snip.rv=snip._parent.globals['last_field']`(self):
185+
for record in self:
186+
endsnippet
187+
188+
snippet cpts "compute search"
189+
search='_search_`!p snip.rv=snip._parent.globals['last_field']`',
190+
endsnippet
191+
192+
snippet fcpts "function compute search"
193+
def _search_`!p snip.rv=snip._parent.globals['last_field']`(self):
194+
endsnippet
195+
182196
snippet domain
183197
domain=[('${1:state}', '${2:=}', '${3:done}')]
184198
endsnippet
@@ -405,61 +419,6 @@ def name_search(self, cr, uid, name, args=None, operator='ilike', context=None,
405419
${2}
406420
endsnippet
407421

408-
snippet func "on_change"
409-
def onchange_${1:fields}(self, cr, uid, ids, $1, context=None):
410-
"""
411-
#TODO make doc string
412-
${2:Comment this/compute new values from the db/system}
413-
"""
414-
#TODO : compute new values from the db/system
415-
if context is None:
416-
context = {}
417-
${3}
418-
return {
419-
'value':{
420-
'field_1': res1
421-
'field_2': res2
422-
}
423-
}
424-
endsnippet
425-
426-
snippet func "fields.function"
427-
def _get_${1:field_name}(self, cr, uid, ids, field_name, args, context=None):
428-
result = {}
429-
for ${2:name} in self.browse(cr, uid, ids, context=context):
430-
result[$2.id] = ${3:value}
431-
432-
return result
433-
endsnippet
434-
435-
snippet func "fields.function multi"
436-
def _get_${1:function_name}(self, cr, uid, ids, field_name, args, context=None):
437-
result = {}
438-
for ${2:name} in self.browse(cr, uid, ids, context=context):
439-
result[$2.id] = {
440-
${4:field_name}: ${3:value},
441-
}
442-
443-
return result
444-
endsnippet
445-
446-
snippet func "fields_view_get v 5.0"
447-
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False):
448-
"""
449-
Comment here
450-
"""
451-
# use lxml to compose the arch XML
452-
arch = ${1:XML HERE}
453-
fields = ${2:FIELDS HERE}
454-
tb = {'print': [], 'action': [], 'relate': []}
455-
result = {
456-
'arch': arch,
457-
'fields': fields,
458-
'toolbar': tb,
459-
}
460-
return result
461-
endsnippet
462-
463422
snippet func "fields_view_get v 6.0"
464423
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
465424
"""
@@ -519,13 +478,6 @@ snippet _ "_auto"
519478
_auto = False
520479
endsnippet
521480

522-
snippet _ "_columns"
523-
_columns = {
524-
${1:# ... code}
525-
}
526-
${2}
527-
endsnippet
528-
529481
snippet _ "_constraints"
530482
def ${1:_check_method}(self, cr, uid, ids, context=None):
531483
#TODO : check condition and return boolean accordingly
@@ -669,20 +621,6 @@ snippet pool
669621
pool.get('${1:res.partner}')${2}
670622
endsnippet
671623

672-
snippet !context
673-
if context is None:
674-
context = {}
675-
#
676-
# Usefull endsnippet
677-
678-
snippet
679-
#
680-
endsnippet
681-
682-
snippet active
683-
'active': fields.boolean('${1:Active}', help='if check, ${2:this object is always available}'),${3}
684-
endsnippet
685-
686624
snippet sequence
687625
'sequence': fields.integer('${1:Sequence}'),${2}
688626
endsnippet

UltiSnips/xml.snippets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ snippet start
33
<openerp>
44
<data>
55

6-
${1}
6+
${1}
77

88
</data>
99
</openerp>

0 commit comments

Comments
 (0)