Merge lp:~unifield-team/unifield-web/UF_536 into lp:unifield-web

Proposed by jftempo
Status: Merged
Merged at revision: 4599
Proposed branch: lp:~unifield-team/unifield-web/UF_536
Merge into: lp:unifield-web
Diff against target: 204 lines (+71/-7)
6 files modified
addons/openerp/controllers/tree.py (+20/-3)
addons/openerp/static/javascript/treegrid.js (+2/-2)
addons/openerp/validators.py (+14/-0)
addons/openerp/widgets/form/_form.py (+13/-0)
addons/openerp/widgets/listgrid.py (+13/-0)
addons/openerp/widgets/tree_view.py (+9/-2)
To merge this branch: bzr merge lp:~unifield-team/unifield-web/UF_536
Reviewer Review Type Date Requested Status
UniField Dev Team Pending
Review via email: mp+88218@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'addons/openerp/controllers/tree.py'
--- addons/openerp/controllers/tree.py 2011-05-10 07:16:46 +0000
+++ addons/openerp/controllers/tree.py 2012-01-11 14:32:41 +0000
@@ -33,11 +33,13 @@
33from openobject.tools import url, expose33from openobject.tools import url, expose
3434
35from openerp.controllers import SecuredController35from openerp.controllers import SecuredController
36from openerp.utils import rpc, cache, icons, common, TinyDict36from openerp.utils import rpc, cache, icons, common, TinyDict, expr_eval
37from openerp.widgets import tree_view37from openerp.widgets import tree_view
38from babel import numbers
3839
39FORMATTERS = {40FORMATTERS = {
40 'integer': lambda value, _i: str(value),41 'integer': lambda value, _i: '%s' % int(value),
42 'integer_finance': lambda value, _i: numbers.format_number(int(value), locale='en_US'),
41 'float': lambda value, _i: '%.02f' % (value),43 'float': lambda value, _i: '%.02f' % (value),
42 'date': lambda value, _i: time.strftime('%x', time.strptime(value, DT_SERVER_FORMATS['date'])),44 'date': lambda value, _i: time.strftime('%x', time.strptime(value, DT_SERVER_FORMATS['date'])),
43 'datetime': lambda value, _i: time.strftime('%x', time.strptime(value, DT_SERVER_FORMATS['datetime'])),45 'datetime': lambda value, _i: time.strftime('%x', time.strptime(value, DT_SERVER_FORMATS['datetime'])),
@@ -131,7 +133,7 @@
131133
132 @expose('json')134 @expose('json')
133 def data(self, ids, model, fields, field_parent=None, icon_name=None,135 def data(self, ids, model, fields, field_parent=None, icon_name=None,
134 domain=[], context={}, sort_by=None, sort_order="asc", fields_info=None):136 domain=[], context={}, sort_by=None, sort_order="asc", fields_info=None, colors={}):
135 137
136 if ids == 'None' or ids == '':138 if ids == 'None' or ids == '':
137 ids = []139 ids = []
@@ -150,6 +152,9 @@
150 if isinstance(context, basestring):152 if isinstance(context, basestring):
151 context = eval(context)153 context = eval(context)
152 154
155 if isinstance(colors, basestring):
156 colors = eval(colors)
157
153 if isinstance(fields_info, basestring):158 if isinstance(fields_info, basestring):
154 fields_info = simplejson.loads(fields_info)159 fields_info = simplejson.loads(fields_info)
155160
@@ -173,9 +178,21 @@
173 fields_info_type = simplejson.loads(fields_info[sort_by])178 fields_info_type = simplejson.loads(fields_info[sort_by])
174 result.sort(lambda a,b: self.sort_callback(a, b, sort_by, sort_order, type=fields_info_type['type']))179 result.sort(lambda a,b: self.sort_callback(a, b, sort_by, sort_order, type=fields_info_type['type']))
175180
181 for item in result:
182 if colors:
183 for color, expr in colors.items():
184 try:
185 if expr_eval(expr,item or False):
186 item['color'] = color
187 break
188 except:
189 pass
190
176 # format the data191 # format the data
177 for field in fields:192 for field in fields:
178 field_info = simplejson.loads(fields_info[field])193 field_info = simplejson.loads(fields_info[field])
194 if field_info.get('widget',''):
195 field_info['type'] = field_info['widget']
179 formatter = FORMATTERS.get(field_info['type'])196 formatter = FORMATTERS.get(field_info['type'])
180 for x in result:197 for x in result:
181 if x[field] and formatter:198 if x[field] and formatter:
182199
=== modified file 'addons/openerp/static/javascript/treegrid.js'
--- addons/openerp/static/javascript/treegrid.js 2011-03-14 10:25:57 +0000
+++ addons/openerp/static/javascript/treegrid.js 2012-01-11 14:32:41 +0000
@@ -326,7 +326,7 @@
326 var key = header.name;326 var key = header.name;
327 var value = this.record.items[key];327 var value = this.record.items[key];
328328
329 var td = MochiKit.DOM.TD({'class': header.type || null, 'width' : header.width || null});329 var td = MochiKit.DOM.TD({'class': header.type || null, 'width' : header.width || null, 'style':{'color':this.record.items['color']}});
330 if (i == 0) { // first column330 if (i == 0) { // first column
331331
332 var row = [];332 var row = [];
@@ -344,7 +344,7 @@
344344
345 row.push(arrow);345 row.push(arrow);
346346
347 value = MochiKit.DOM.createDOM('A', {'href': '#'}, value);347 value = MochiKit.DOM.createDOM('A', {'href': '#','style':{'color':this.record.items['color']}}, value);
348 this.element_a = value;348 this.element_a = value;
349349
350 this.eventOnKeyDown = MochiKit.Signal.connect(value, 'onkeydown', this, this.onKeyDown);350 this.eventOnKeyDown = MochiKit.Signal.connect(value, 'onkeydown', this, this.onKeyDown);
351351
=== modified file 'addons/openerp/validators.py'
--- addons/openerp/validators.py 2011-12-29 10:44:43 +0000
+++ addons/openerp/validators.py 2012-01-11 14:32:41 +0000
@@ -30,6 +30,7 @@
3030
31from openobject.validators import BaseValidator31from openobject.validators import BaseValidator
32from openobject.i18n import format32from openobject.i18n import format
33from babel import numbers
3334
34class String(BaseValidator):35class String(BaseValidator):
35 if_empty = False36 if_empty = False
@@ -60,6 +61,19 @@
6061
61class Int(formencode.validators.Int):62class Int(formencode.validators.Int):
62 if_empty = False63 if_empty = False
64
65class IntFinance(formencode.validators.Int):
66 if_empty = False
67
68 def _from_python(self, value, state):
69 return numbers.format_number(int(value) or 0, locale='en_US')
70
71 def _to_python(self, value, state):
72 try:
73 value = numbers.parse_number(value, locale='en_US')
74 except ValueError:
75 raise formencode.api.Invalid(_('Invalid literal for int'), value, state)
76 return value
6377
64class Float(formencode.validators.Number):78class Float(formencode.validators.Number):
65 if_empty = False79 if_empty = False
6680
=== modified file 'addons/openerp/widgets/form/_form.py'
--- addons/openerp/widgets/form/_form.py 2011-12-29 10:44:43 +0000
+++ addons/openerp/widgets/form/_form.py 2012-01-11 14:32:41 +0000
@@ -407,6 +407,19 @@
407407
408register_widget(Integer, ["integer"])408register_widget(Integer, ["integer"])
409409
410class IntegerFinance(Integer):
411 template = "/openerp/widgets/form/templates/integer.mako"
412
413 def __init__(self, **attrs):
414 super(IntegerFinance, self).__init__(**attrs)
415 self.validator = validators.IntFinance()
416
417 def set_value(self, value):
418 self.default = value or 0
419
420register_widget(IntegerFinance, ["integer_finance"])
421
422
410class BooleanLabel(InputWidgetLabel):423class BooleanLabel(InputWidgetLabel):
411 template = "/openerp/widgets/form/templates/boolean_label.mako"424 template = "/openerp/widgets/form/templates/boolean_label.mako"
412class Boolean(TinyInputWidget):425class Boolean(TinyInputWidget):
413426
=== modified file 'addons/openerp/widgets/listgrid.py'
--- addons/openerp/widgets/listgrid.py 2012-01-06 10:47:56 +0000
+++ addons/openerp/widgets/listgrid.py 2012-01-11 14:32:41 +0000
@@ -24,6 +24,7 @@
24import re24import re
25from openerp import utils25from openerp import utils
26from itertools import chain, count26from itertools import chain, count
27from babel import numbers
2728
28import cherrypy29import cherrypy
29from openerp.utils import rpc, icons, common, expr_eval, node_attributes30from openerp.utils import rpc, icons, common, expr_eval, node_attributes
@@ -619,6 +620,17 @@
619 return int(self.value)620 return int(self.value)
620621
621 return 0622 return 0
623
624class IntFinance(Char):
625
626 def get_text(self):
627 value = 0
628 if self.value:
629 if isinstance(self.value, (unicode, str)):
630 value = eval(value)
631 else:
632 value = self.value
633 return numbers.format_number(value or 0, locale='en_US')
622634
623class ProgressBar(Char):635class ProgressBar(Char):
624 template = "/openerp/widgets/templates/listgrid/progressbar.mako"636 template = "/openerp/widgets/templates/listgrid/progressbar.mako"
@@ -754,6 +766,7 @@
754 'float':Float,766 'float':Float,
755 'float_time':FloatTime,767 'float_time':FloatTime,
756 'integer':Int,768 'integer':Int,
769 'integer_finance':IntFinance,
757 'boolean' : Boolean,770 'boolean' : Boolean,
758 'progressbar' : ProgressBar771 'progressbar' : ProgressBar
759}772}
760773
=== modified file 'addons/openerp/widgets/tree_view.py'
--- addons/openerp/widgets/tree_view.py 2011-04-14 09:43:11 +0000
+++ addons/openerp/widgets/tree_view.py 2012-01-11 14:32:41 +0000
@@ -72,7 +72,13 @@
7272
73 ids = []73 ids = []
74 id = res_id74 id = res_id
7575
76 colors = {}
77 for color_spec in attrs.get('colors', '').split(';'):
78 if color_spec:
79 colour, test = color_spec.split(':')
80 colors[colour] = test
81
76 if self.toolbar:82 if self.toolbar:
77 ids = proxy.search(self.domain2, 0, 0, 0, ctx)83 ids = proxy.search(self.domain2, 0, 0, 0, ctx)
78 self.toolbar = proxy.read(ids, ['name', 'icon'], ctx)84 self.toolbar = proxy.read(ids, ['name', 'icon'], ctx)
@@ -97,7 +103,8 @@
97 context=self.context,103 context=self.context,
98 field_parent=self.field_parent,104 field_parent=self.field_parent,
99 onselection="onSelection",105 onselection="onSelection",
100 fields_info=fields_info)106 fields_info=fields_info,
107 colors=colors)
101 self.id = id108 self.id = id
102 self.ids = ids109 self.ids = ids
103110

Subscribers

People subscribed via source and target branches

to all changes: