Merge lp:~openerp-dev/openobject-client-web/6.0-opw-4009-al into lp:openobject-client-web

Proposed by Antony Lesuisse (OpenERP)
Status: Rejected
Rejected by: Xavier (Open ERP)
Proposed branch: lp:~openerp-dev/openobject-client-web/6.0-opw-4009-al
Merge into: lp:openobject-client-web
Diff against target: 175 lines (+26/-67)
4 files modified
addons/openerp/static/javascript/binary.js (+2/-22)
addons/openerp/widgets/form/_binary.py (+15/-12)
addons/openerp/widgets/form/_form.py (+5/-3)
addons/openerp/widgets/form/templates/binary.mako (+4/-30)
To merge this branch: bzr merge lp:~openerp-dev/openobject-client-web/6.0-opw-4009-al
Reviewer Review Type Date Requested Status
Xavier (Open ERP) (community) Needs Fixing
Review via email: mp+50846@code.launchpad.net

Description of the change

Fix for binary fields updates. OPW ticket 4009.

The filename change is implemented by an javascript onchange that takes the value of the filename from the input type file and sets an input type text. This is not fixed yet.

To post a comment you must log in.
Revision history for this message
Xavier (Open ERP) (xmo-deactivatedaccount) wrote :

> This is not fixed yet.

So no merge yet?

Revision history for this message
Xavier (Open ERP) (xmo-deactivatedaccount) wrote :

Does not seem to work correctly (onchanges don't seem to trigger for instance)

review: Needs Fixing

Unmerged revisions

4519. By Antony Lesuisse (OpenERP)

[FIX] opw 4009, binary field update, filename udpate is still buggy

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/openerp/static/javascript/binary.js'
2--- addons/openerp/static/javascript/binary.js 2011-01-17 11:57:11 +0000
3+++ addons/openerp/static/javascript/binary.js 2011-02-23 01:13:55 +0000
4@@ -18,28 +18,8 @@
5 // You can see the MPL licence at: http://www.mozilla.org/MPL/MPL-1.1.html
6 //
7 ////////////////////////////////////////////////////////////////////////////////
8-
9-function save_binary_data(src, filename) {
10-
11- var name = openobject.dom.get(src) ? openobject.dom.get(src).name : src;
12-
13- var prefix = name.split('/');
14- name = prefix.pop();
15- prefix = prefix.join('/');
16- prefix = prefix ? prefix + '/' : '';
17-
18- var fname = openobject.dom.get(prefix + filename) || openobject.dom.get(prefix + 'name');
19-
20- fname = fname ? fname.value || fname.innerHTML : null;
21-
22- var act = get_form_action('save_binary_data', undefined);
23- act = fname ? act + '/' + fname : act;
24-
25- submit_form(openobject.http.getURL(act, {
26- _terp_field: name,
27- _terp_model: openobject.dom.get(prefix + '_terp_model').value,
28- _terp_id: openobject.dom.get(prefix + '_terp_id').value
29- }), undefined, '_blank');
30+function save_binary_data(src) {
31+ submit_form(src, undefined, '_blank');
32 }
33
34 function clear_binary_data(src, filename) {
35
36=== modified file 'addons/openerp/widgets/form/_binary.py'
37--- addons/openerp/widgets/form/_binary.py 2011-01-20 19:05:31 +0000
38+++ addons/openerp/widgets/form/_binary.py 2011-02-23 01:13:55 +0000
39@@ -19,7 +19,7 @@
40 #
41 ###############################################################################
42
43-import random, time
44+import os, random
45
46 from openobject import tools
47 from openerp import utils
48@@ -37,32 +37,35 @@
49
50 __all__ = ["Binary", "Image"]
51
52-
53 class Binary(TinyInputWidget):
54 template = "/openerp/widgets/form/templates/binary.mako"
55- params = ["name", "text", "readonly", "filename", "bin_data", 'value_bin_size']
56+ params = ["name", "src", "text", "readonly", "filename", "filename_value", "model", "id", "field"]
57
58+ src = ""
59 text = None
60 file_upload = True
61
62 def __init__(self, **attrs):
63 super(Binary, self).__init__(**attrs)
64+ print dir(self)
65+ self.field = self.name.split('/')[-1]
66 self.validator = validators.Binary()
67+ self.bin_data = attrs.get('value')
68 self.onchange = "set_binary_filename(this, '%s');" % (self.filename or '')
69- self.bin_data = attrs.get('value')
70- # if bin_size was in context when reading the binary field, then the field's value is actually the binary
71- # field's content size
72+ self.filename_value = self.filename_value or 'file.dat'
73+ # if bin_size was in context when reading the binary field, then the field's value is actually the binary field's content size
74 self.value_bin_size = getattr(self, 'context', {}).get('bin_size', False)
75
76+ self.src = tools.url('/openerp/form/save_binary_data/%s'%os.path.basename(self.filename_value.replace('\\','/')), _terp_field=self.field, _terp_model=self.model, _terp_id=self.id)
77+
78 def set_value(self, value):
79- #XXX: server bug work-arround
80 if self.value_bin_size:
81 self.text = value
82- return
83- try:
84- self.text = utils.get_size(value)
85- except:
86- self.text = value or ''
87+ else:
88+ try:
89+ self.text = utils.get_size(value)
90+ except:
91+ self.text = ''
92
93 register_widget(Binary, ["binary"])
94
95
96=== modified file 'addons/openerp/widgets/form/_form.py'
97--- addons/openerp/widgets/form/_form.py 2011-01-28 15:21:15 +0000
98+++ addons/openerp/widgets/form/_form.py 2011-02-23 01:13:55 +0000
99@@ -905,7 +905,7 @@
100
101 self.view_fields.append(name)
102
103- field = self._make_field_widget(fields[name], values.get(name))
104+ field = self._make_field_widget(fields[name], values.get(name), values)
105 views.append(field)
106
107 elif node.localName=='hpaned':
108@@ -942,7 +942,7 @@
109
110 return views
111
112- def _make_field_widget(self, attrs, value=False):
113+ def _make_field_widget(self, attrs, value=False, values={}):
114
115 attrs['editable'] = self.editable
116 if not attrs['type'] == 'many2one':
117@@ -964,8 +964,10 @@
118 name = attrs['name']
119 kind = attrs.get('type', 'char')
120
121- if kind == 'image' or kind == 'picture':
122+ if kind == 'image' or kind == 'picture' or attrs['type'] == 'binary':
123 attrs['id'] = self.id
124+ if attrs.get('filename'):
125+ attrs['filename_value']=values.get(attrs['filename'])
126
127 # suppress by container's readonly property
128 if self.readonly:
129
130=== modified file 'addons/openerp/widgets/form/templates/binary.mako'
131--- addons/openerp/widgets/form/templates/binary.mako 2010-11-15 12:50:28 +0000
132+++ addons/openerp/widgets/form/templates/binary.mako 2011-02-23 01:13:55 +0000
133@@ -1,38 +1,12 @@
134 <div>
135- % if bin_data and not value_bin_size:
136- <input
137- type="hidden"
138- class="${css_class}"
139- kind="${kind}"
140- id="${name}"
141- name="${name}"
142- value="${bin_data}"/>
143- % endif
144 <div id="${name}_binary_add" style="display: none;">
145- % if editable and not readonly:
146- <input ${py.attrs(attrs)}
147- type="file"
148- class="${css_class}"
149- kind="${kind}"
150- disabled="disabled"
151- id="${name}"
152- name="${name}"/>
153- % endif
154+ <input type="file" disabled="disabled" id="${name}" name="${name}"/>
155 </div>
156 <div id="${name}_binary_buttons" class="binary_buttons">
157- <input type="text" value="${value or text or ''}" readonly="readonly"/>
158- %if value or text:
159- <input type="hidden" name="${name}" value="${value or text}"></input>
160- % endif
161- % if text:
162- <a class="button-a" href="javascript: void(0)" onclick="save_binary_data('${name}', '${filename}')">${_("Save As")}</a>
163- % endif
164+ <input type="text" value="${text}" readonly="readonly" disabled="disabled"/>
165+ <a class="button-a" href="javascript: void(0)" onclick="save_binary_data('${src}')">${_("Save As")}</a>
166 % if editable and not readonly:
167- <a class="button-a" href="javascript: void(0)" onclick="add_binary('${name}')">${_("add attachment")}</a>
168+ <a class="button-a" href="javascript: void(0)" onclick="add_binary('${name}')">${_("Set file")}</a>
169 % endif
170 </div>
171- % if editable and error:
172- <span class="fielderror">${error}</span>
173- % endif
174 </div>
175-