Merge lp:~openerp-community/geospatial-addons/7.0 into lp:~geospatial-addons-core-editors/geospatial-addons/7.0

Status: Merged
Merged at revision: 88
Proposed branch: lp:~openerp-community/geospatial-addons/7.0
Merge into: lp:~geospatial-addons-core-editors/geospatial-addons/7.0
Diff against target: 995 lines (+197/-258)
17 files modified
base_geoengine/__init__.py (+1/-1)
base_geoengine/geo_ir/ir_model_view.xml (+15/-14)
base_geoengine/geo_view/geo_raster_layer.py (+1/-3)
base_geoengine/geo_view/geo_raster_layer_view.xml (+6/-8)
base_geoengine/geo_view/geo_vector_layer_view.xml (+5/-7)
base_geoengine/geo_view/ir_view_view.xml (+1/-1)
base_geoengine/static/src/css/style.css (+2/-15)
base_geoengine/static/src/js/geoengine_view.js (+96/-36)
base_geoengine/static/src/xml/geoengine.xml (+5/-5)
base_geoengine_demo/__openerp__.py (+1/-1)
base_geoengine_demo/retail_machine_view.xml (+11/-13)
base_geoengine_demo/zip_view.xml (+7/-9)
geoengine_geoname_geocoder/geonames_coder.py (+8/-8)
geoengine_geoname_geocoder/wizard/bulk_encode.py (+2/-2)
geoengine_partner/geo_partner.py (+2/-32)
geoengine_partner/geo_partner_view.xml (+20/-89)
geoengine_sale/geo_sale_view.xml (+14/-14)
To merge this branch: bzr merge lp:~openerp-community/geospatial-addons/7.0
Reviewer Review Type Date Requested Status
Sandy Carter (http://www.savoirfairelinux.com) Approve
Nicolas Bessi - Camptocamp (community) Needs Information
Maxime Chambreuil (http://www.savoirfairelinux.com) code review Approve
Review via email: mp+186841@code.launchpad.net

This proposal supersedes a proposal from 2013-09-20.

Description of the change

Adapted addon to be installable in OpenERP 7.0

Set most of the addons to installable, and fixed some XML differences in the views.

Fixed some JS errors, mainly setting openerp.web.form.Field -> openerp.web.form.AbstractField and openerp.web.page.readonly -> openerp.web.form.widget.

Minor widget modifications. Changed map and map-hover icon to openerp 7.0 style font characters from Entypo.

To post a comment you must log in.
93. By Sandy Carter (http://www.savoirfairelinux.com)

Now displays map.
widget.element_id -> widget.id_for_label
$element -> $el

Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) :
review: Approve (code review)
94. By Sandy Carter (http://www.savoirfairelinux.com)

Display geometry and zoom

Revision history for this message
Nicolas Bessi - Camptocamp (nbessi-c2c-deactivatedaccount) wrote : Posted in a previous version of this proposal

Hello,

I will keep this branch on sight. If you do not mind I'm marking it as work in progess. I will integrate it in an other branch.

Regards

Nicolas

Revision history for this message
Nicolas Bessi - Camptocamp (nbessi-c2c-deactivatedaccount) wrote :

Hello,

thanks for the work.

I did not see the MP was superseeded.

I will take some time to review it soon and ensure all functionnalities are working

I should also transform the test function to a real unittest

Regards

Nicolas

Revision history for this message
Nicolas Bessi - Camptocamp (nbessi-c2c-deactivatedaccount) wrote :

It would also be nice to change branch owner to community in order to allow us to directly do some quick fixes.

Regards

Nicolas

95. By Sandy Carter (http://www.savoirfairelinux.com)

[FIX] Edit and create mode

96. By Sandy Carter (http://www.savoirfairelinux.com)

[FIX] Setting geometry values to database
set_value_from_ui -> on_ui_change

97. By Sandy Carter (http://www.savoirfairelinux.com)

[FIX] Made geo_partner installable

98. By Sandy Carter (http://www.savoirfairelinux.com)

[FIX] Demo Retail Machine
geoengine_raster_layer: mapbox_type -> mapbox_id
Merged some code from 6.1 branch

99. By Sandy Carter (http://www.savoirfairelinux.com)

[IMP] Colspans of Backend forms

100. By Sandy Carter (http://www.savoirfairelinux.com)

[IMP] Use widget name instead of id_for_label

101. By Sandy Carter (http://www.savoirfairelinux.com)

[IMP] Partner geo view simplified by removing depricated address layers and view
Google still doesn't work but using OpenStreetMaps, it works.

102. By Nicolas Bessi - Camptocamp

[FIX] geo_sale view in order to have installable addon

103. By Nicolas Bessi - Camptocamp

[FIX] Geoengine demo module name

104. By Nicolas Bessi - Camptocamp

[FIX] installable state of addons are set to False. They do not match actual requirement to be installable

105. By Nicolas Bessi - Camptocamp

[FIX] installable state of addons to be uninstallable. They do not match actual requirement to be installable

Revision history for this message
Nicolas Bessi - Camptocamp (nbessi-c2c-deactivatedaccount) wrote :

Hello,

Thanks for your MP. Fixing view can be quite a pain…

I have fixed some code in geo sale module to avoid installation error.

That said I have also set module to be uninstallable.

The map view (outside of form) is broken there is some oddities in edit mode.
There is no test at that time (All what is needed is available but not in the correct form) and other strange behavior to be fixed with attrs in layers view.

At that time addon does not reach community standard to be merges as is. So having addons uninstallable will allows me to merge you work as a progression in the port of the modules.

If you agree with that i will approve your MP.

I know it is quite a huge work to port this module. Thanks for the work done.

Regards

Nicolas

review: Needs Information
106. By Sandy Carter (http://www.savoirfairelinux.com)

[FIX] Geocoder
res.partner.address -> res.partner
ResPartnerAddress -> ResPartner

Revision history for this message
Sandy Carter (http://www.savoirfairelinux.com) (sandy-carter) wrote :

Hello,

I didn't know about having addons uninstallable when they don't meet community standards.
If they're written somewhere, could you point me towards them.

In addition to the map view not working, the google maps don't work.
I think it's just simply not properly loaded in the javascript.
There are a few issues with the draw layer not refreshing automatically.

I would be happy to see this merged.
Most of what we need from geocoder to work on geocoder_ca has been fixed.

Thank you for the help

Sandy

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'base_geoengine/__init__.py'
2--- base_geoengine/__init__.py 2012-10-01 10:21:33 +0000
3+++ base_geoengine/__init__.py 2013-09-27 14:57:39 +0000
4@@ -21,7 +21,7 @@
5 """The GeoEngine module"""
6 from __future__ import absolute_import
7 from . import geo_model
8-import wizard
9+from . import wizard
10 from . import geo_operators
11 from . import geo_view
12 from . import geo_helper
13
14=== modified file 'base_geoengine/geo_ir/ir_model_view.xml'
15--- base_geoengine/geo_ir/ir_model_view.xml 2011-09-08 12:32:55 +0000
16+++ base_geoengine/geo_ir/ir_model_view.xml 2013-09-27 14:57:39 +0000
17@@ -8,21 +8,22 @@
18 <!--parent python entity -->
19 <field name="inherit_id" ref="base.view_model_fields_form"/>
20 <!-- modulename.view -->
21- <field name="type">form</field>
22 <field name="arch" type="xml">
23- <notebook position="inside">
24- <page string="GeoEngine attributes">
25- <!-- nasty attrs but ilike operator does not work as expected -->
26- <field name="srid"
27- attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
28- <field name="geo_type"
29- attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
30- <field name="dim"
31- attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
32- <field name="gist_index"
33- attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
34- </page>
35- </notebook>
36+ <form string="Fields" version="7.0">
37+ <sheet>
38+ <group>
39+ <!-- nasty attrs but ilike operator does not work as expected -->
40+ <field name="srid"
41+ attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
42+ <field name="geo_type"
43+ attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
44+ <field name="dim"
45+ attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
46+ <field name="gist_index"
47+ attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/>
48+ </group>
49+ </sheet>
50+ </form>
51 </field>
52 </record>
53 </data>
54
55=== modified file 'base_geoengine/geo_view/geo_raster_layer.py'
56--- base_geoengine/geo_view/geo_raster_layer.py 2012-12-05 08:32:38 +0000
57+++ base_geoengine/geo_view/geo_raster_layer.py 2013-09-27 14:57:39 +0000
58@@ -41,9 +41,7 @@
59 ('G_HYBRID_MAP', 'Google Hybrid map'),
60 ('G_PHYSICAL_MAP', 'Google Physical map')],
61 string="Google raster layer type"),
62- 'mapbox_type': fields.selection([('mapbox.mapbox-streets', 'Streets'),
63- ('mapbox.mapbox-light', 'Light')],
64- string="Mapbox raster layer type"),
65+ 'mapbox_id': fields.char("Mapbox ID", size=256),
66 'swisstopo_type': fields.selection([('ch.swisstopo.pixelkarte-farbe', 'Color map'),
67 ('ch.swisstopo.swissimage', 'Aerial imagery')],
68 string="Swisstopo raster layer type"),
69
70=== modified file 'base_geoengine/geo_view/geo_raster_layer_view.xml'
71--- base_geoengine/geo_view/geo_raster_layer_view.xml 2012-12-05 08:32:38 +0000
72+++ base_geoengine/geo_view/geo_raster_layer_view.xml 2013-09-27 14:57:39 +0000
73@@ -4,16 +4,15 @@
74 <record model="ir.ui.view" id="geo_raster_view_form">
75 <field name="name">geoengine.raster.layer.form</field>
76 <field name="model">geoengine.raster.layer</field>
77- <field name="type">form</field>
78 <field name="arch" type="xml">
79- <form>
80- <group string="General">
81+ <form string="Raster Layer View">
82+ <group string="General" col="4">
83 <field name="name" colspan="4"/>
84 <field name="view_id"/>
85 <field name="raster_type"/>
86 <field name="sequence"/>
87 <field name="overlay"/>
88- <field name="use_to_edit"/>
89+ <field name="use_to_edit" colspan="4"/>
90 <field name="url" colspan="4" widget="url"
91 attrs="{'invisible': [('raster_type', '!=', 'd_wms')]}"/>
92 </group>
93@@ -25,11 +24,11 @@
94 <group string="MapBox layer data"
95 attrs="{'invisible': [('raster_type', '!=', 'mapbox')]}"
96 colspan="4">
97- <field name="mapbox_type" attrs="{'required': [('raster_type', '=', 'mapbox')]}"/>
98+ <field name="mapbox_id" attrs="{'required': [('raster_type', '=', 'mapbox')]}"/>
99 </group>
100 <group string="swisstopo layer data"
101 attrs="{'invisible': [('raster_type', '!=', 'swisstopo')]}"
102- colspan="4">
103+ colspan="4" col="4">
104 <field name="swisstopo_type" attrs="{'required': [('raster_type', '=', 'swisstopo')]}"/>
105 <field name="swisstopo_time" attrs="{'required': [('raster_type', '=', 'swisstopo')]}"/>
106 </group>
107@@ -45,9 +44,8 @@
108 <record model="ir.ui.view" id="geo_raster_view_tree">
109 <field name="name">geoengine.raster.layer.tree</field>
110 <field name="model">geoengine.raster.layer</field>
111- <field name="type">tree</field>
112 <field name="arch" type="xml">
113- <tree>
114+ <tree string="Raster">
115 <field name="name" select="1"/>
116 <field name="raster_type" select="1"/>
117 <field name="sequence"/>
118
119=== modified file 'base_geoengine/geo_view/geo_vector_layer_view.xml'
120--- base_geoengine/geo_view/geo_vector_layer_view.xml 2012-02-16 13:14:44 +0000
121+++ base_geoengine/geo_view/geo_vector_layer_view.xml 2013-09-27 14:57:39 +0000
122@@ -4,10 +4,9 @@
123 <record model="ir.ui.view" id="geo_vector_view_form">
124 <field name="name">geoengine.vector.layer.form</field>
125 <field name="model">geoengine.vector.layer</field>
126- <field name="type">form</field>
127 <field name="arch" type="xml">
128- <form>
129- <group string="General">
130+ <form string="Vector">
131+ <group string="General" col="4">
132 <field name="name" colspan="4"/>
133 <field name="view_id"/>
134 <field name="geo_field_id"/>
135@@ -15,7 +14,7 @@
136 <field name="sequence"/>
137 <field name="readonly"/>
138 </group>
139- <group string="Representation" colspan="4">
140+ <group string="Representation" col="4" colspan="4">
141 <field name="geo_repr"/>
142 <field name="symbol_url" widget="url"
143 attrs="{'invisible': [('geo_repr', '!=', 'basic')]}"/>
144@@ -28,7 +27,7 @@
145 attrs="{'invisible': [('geo_repr', '=', 'basic')], 'required': [('geo_repr', 'in', ['choropleth', 'proportion', 'colored'])]}"
146 />
147 </group>
148- <group string="Colors" colspan="4">
149+ <group string="Colors" col="4" colspan="4">
150 <field name="begin_color"/>
151 <group colspan="4" attrs="{'invisible': [('geo_repr', 'in', ['basic', 'proportion'])]}">
152 <field name="end_color"
153@@ -45,9 +44,8 @@
154 <record model="ir.ui.view" id="geo_vector_view_tree">
155 <field name="name">geoengine.vector.layer.tree</field>
156 <field name="model">geoengine.vector.layer</field>
157- <field name="type">tree</field>
158 <field name="arch" type="xml">
159- <tree>
160+ <tree string="Vector">
161 <field name="name" select="1"/>
162 <field name="geo_repr" select="1"/>
163 <field name="classification" select="1"/>
164
165=== modified file 'base_geoengine/geo_view/ir_view_view.xml'
166--- base_geoengine/geo_view/ir_view_view.xml 2012-02-16 13:14:44 +0000
167+++ base_geoengine/geo_view/ir_view_view.xml 2013-09-27 14:57:39 +0000
168@@ -8,7 +8,7 @@
169 <field name="type">form</field>
170 <field name="arch" type="xml">
171 <notebook position="inside">
172- <page string="GeoEngine Data"
173+ <page string="GeoEngine Data" col="4"
174 attrs="{'invisible': [('type', '!=', 'geoengine')]}">
175 <field name="default_extent" colspan="4"/>
176 <separator string="Vector (Active layers)" colspan="4"/>
177
178=== removed directory 'base_geoengine/images'
179=== removed file 'base_geoengine/images/map-hover.png'
180Binary files base_geoengine/images/map-hover.png 2012-12-07 17:21:33 +0000 and base_geoengine/images/map-hover.png 1970-01-01 00:00:00 +0000 differ
181=== removed file 'base_geoengine/images/map.png'
182Binary files base_geoengine/images/map.png 2012-12-07 17:21:33 +0000 and base_geoengine/images/map.png 1970-01-01 00:00:00 +0000 differ
183=== removed directory 'base_geoengine/static/lib'
184=== modified file 'base_geoengine/static/src/css/style.css'
185--- base_geoengine/static/src/css/style.css 2012-11-29 11:39:14 +0000
186+++ base_geoengine/static/src/css/style.css 2013-09-27 14:57:39 +0000
187@@ -195,21 +195,8 @@
188 }
189
190 /* Button style */
191-.oe_vm_switch_geoengine{
192- background: url("/base_geoengine/static/src/images/geoengine_switch.png");
193- overflow: hidden;
194- width: 22px;
195- height: 21px;
196- border: medium none;
197- color: transparent;
198- padding-bottom: 6px;
199-}
200-.oe_vm_switch_geoengine[disabled="disabled"] {
201- background-position: 0px -21px;
202-}
203-
204-.oe_vm_switch_geoengine {
205- background-position: 0px -0px;
206+.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_geoengine:after {
207+ content: "2";
208 }
209
210 /* Edit Widget */
211
212=== removed file 'base_geoengine/static/src/images/geoengine_switch.png'
213Binary files base_geoengine/static/src/images/geoengine_switch.png 2012-02-17 17:59:09 +0000 and base_geoengine/static/src/images/geoengine_switch.png 1970-01-01 00:00:00 +0000 differ
214=== modified file 'base_geoengine/static/src/js/geoengine_view.js'
215--- base_geoengine/static/src/js/geoengine_view.js 2012-12-21 08:38:57 +0000
216+++ base_geoengine/static/src/js/geoengine_view.js 2013-09-27 14:57:39 +0000
217@@ -88,10 +88,10 @@
218 case "mapbox":
219 out.push(
220 new OpenLayers.Layer.XYZ(l.name, [
221- "http://a.tiles.mapbox.com/v3/" + l.mapbox_type + "/${z}/${x}/${y}.png",
222- "http://b.tiles.mapbox.com/v3/" + l.mapbox_type + "/${z}/${x}/${y}.png",
223- "http://c.tiles.mapbox.com/v3/" + l.mapbox_type + "/${z}/${x}/${y}.png",
224- "http://d.tiles.mapbox.com/v3/" + l.mapbox_type + "/${z}/${x}/${y}.png"
225+ "http://a.tiles.mapbox.com/v3/" + l.mapbox_id + "/${z}/${x}/${y}.png",
226+ "http://b.tiles.mapbox.com/v3/" + l.mapbox_id + "/${z}/${x}/${y}.png",
227+ "http://c.tiles.mapbox.com/v3/" + l.mapbox_id + "/${z}/${x}/${y}.png",
228+ "http://d.tiles.mapbox.com/v3/" + l.mapbox_id + "/${z}/${x}/${y}.png"
229 ], {
230 sphericalMercator: true,
231 wrapDateLine: true,
232@@ -102,6 +102,10 @@
233 );
234 break;
235 case "swisstopo":
236+ var resolutions = [4000, 3750, 3500, 3250, 3000, 2750, 2500, 2250, 2000, 1750, 1500, 1250, 1000, 750, 650, 500, 250, 100, 50, 20, 10, 5, 2.5];
237+ if (l.swisstopo_type == 'ch.swisstopo.swissimage') {
238+ resolutions.push(2, 1.5, 1, 0.5);
239+ }
240 out.push(
241 new OpenLayers.Layer.WMTS({
242 name: l.name,
243@@ -110,7 +114,7 @@
244 url: ['https://wmts0.geo.admin.ch/', 'https://wmts1.geo.admin.ch/', 'https://wmts2.geo.admin.ch/'],
245 projection: 'EPSG:21781',
246 units: 'm',
247- resolutions: [4000, 3750, 3500, 3250, 3000, 2750, 2500, 2250, 2000, 1750, 1500, 1250, 1000, 750, 650, 500, 250, 100, 50, 20, 10, 5 ,2.5, 2, 1.5, 1, 0.5],
248+ resolutions: resolutions,
249 maxExtent: [420000, 30000, 900000, 350000],
250 requestEncoding: 'REST',
251 matrixSet: '21781',
252@@ -182,7 +186,7 @@
253 },
254
255 do_hide: function() {
256- this.$element.hide();
257+ this.$el.hide();
258 },
259
260 do_show: function() {
261@@ -190,7 +194,7 @@
262 var self = this;
263 self.dataset.read_slice(_.keys(self.fields_view.fields), {'domain':self.domains, 'limit':self.limit(), 'offset':self.offset}).then(self.do_load_vector_data);
264 }
265- this.$element.show();
266+ this.$el.show();
267 },
268
269 do_search: function(domains, contexts, groupbys) {
270@@ -412,7 +416,7 @@
271 _.each(data.geoengine_layers.actives, function(item) {
272 self.geometry_columns[item.geo_field_id[1]] = true;
273 });
274- this.$element.html(QWeb.render("GeoengineView", {"fields_view": this.fields_view, 'elem_id': this.elem_id}));
275+ this.$el.html(QWeb.render("GeoengineView", {"fields_view": this.fields_view, 'elem_id': this.elem_id}));
276
277 var google = false;
278 var backgrounds = data.geoengine_layers.backgrounds;
279@@ -559,7 +563,7 @@
280
281 //------------ EDIT WIDGET ----------------------------------------------
282
283- openerp.base_geoengine.FieldGeoEngineEditMap = openerp.web.form.Field.extend({
284+ openerp.base_geoengine.FieldGeoEngineEditMap = openerp.web.form.AbstractField.extend({
285 template: 'FieldGeoEngineEditMap',
286
287 geo_type: null,
288@@ -572,6 +576,24 @@
289
290 create_edit_layers: function(self, field_infos) {
291 var vl = new OpenLayers.Layer.Vector(self.name, {
292+ styleMap: new OpenLayers.StyleMap({
293+ 'default': new OpenLayers.Style({
294+ fillColor: '#ee9900',
295+ fillOpacity: 0.7,
296+ strokeColor: '#ee9900',
297+ strokeOpacity: 1,
298+ strokeWidth: 3,
299+ pointRadius: 6
300+ }),
301+ 'select': new OpenLayers.Style({
302+ fillColor: 'red',
303+ strokeColor: 'red'
304+ }),
305+ 'temporary': new OpenLayers.Style({
306+ fillColor: 'blue',
307+ strokeColor: 'blue'
308+ })
309+ }),
310 eventListeners : {
311 featuremodified: function(event) {
312 this._geometry = event.feature.geometry;
313@@ -594,12 +616,50 @@
314 return [rl, vl];
315 },
316
317+ find_parent_tabs: function() {
318+ var obj_id = this.element_id;
319+ var current_obj = $('#' + obj_id);
320+ var results = new Array();
321+ while (current_obj.length != 0) {
322+ class_name = current_obj.attr('class');
323+ if (class_name && class_name.match(/ui-tabs-panel/) !== null) {
324+ results.push(current_obj);
325+ }
326+ current_obj = current_obj.parent();
327+ }
328+ return results;
329+ },
330+
331+ add_tab_listener: function() {
332+
333+ var self = this;
334+ var parent_tabs = this.find_parent_tabs();
335+ self.parent_tabs = parent_tabs;
336+ for (var i = 0; i < parent_tabs.length; i++) {
337+ tab = parent_tabs[i];
338+ tab.parent().bind('tabsshow', function(event, ui) {
339+ var ui_id = ui.tab.href.match(/notebook-.*/)[0];
340+ // update the render only if the ui_id match with one of the parent_tab id
341+ for (var i = 0; i < self.parent_tabs.length; i++) {
342+ tab_id = self.parent_tabs[i][0].id;
343+ if (ui_id == tab_id){
344+ self.render_map(self);
345+ return;
346+ }
347+ }
348+ });
349+ }
350+ },
351+
352 start: function() {
353 this._super.apply(this, arguments);
354 if (this.map) {
355 return;
356 }
357+ this.view.on("change:actual_mode", this, this.on_mode_change);
358 var self = this;
359+ // add a listener on parent tab if it exists in order to refresh geoengine view
360+ self.add_tab_listener();
361 // We blacklist all other fields in order to avoid calling get_value inside the build_context on field widget which aren't started yet
362 var blacklist = this.view.fields_order.slice();
363 delete blacklist[this.name];
364@@ -637,14 +697,15 @@
365 internalProjection: self.map.getProjection(),
366 externalProjection: 'EPSG:' + result.srid
367 });
368+ self.on_mode_change();
369 self.set_value(self.value);
370- self.update_dom();
371 });
372 },
373
374 set_value: function(value) {
375 this._super.apply(this, arguments);
376- if (this.map) {
377+ this.value = value;
378+ if (this.map && this.view.get("actual_mode") !== "edit") {
379 var vl = this.map.getLayersByName(this.name)[0];
380 vl.destroyFeatures();
381 if (this.value) {
382@@ -657,27 +718,29 @@
383 }
384 },
385
386- set_value_from_ui: function() {
387- this.value = this.format.write(this._geometry);
388- this._super();
389+ on_ui_change: function() {
390+ this.set_value(this.format.write(this._geometry));
391 },
392
393 validate: function() {
394 this.invalid = false;
395 },
396
397- update_dom: function() {
398- this._super.apply(this, arguments);
399+ on_mode_change: function() {
400 if (this.map) {
401- this.map.render(this.element_id);
402- if (this.readonly || this.force_readonly) {
403+ this.map.render(this.name);
404+ var actual_mode = this.view.get("actual_mode");
405+ if (actual_mode == "view") {
406 this.modify_control.deactivate();
407- } else {
408- this.modify_control.activate();
409- this.value === false ? this.draw_control.activate() : this.draw_control.deactivate();
410+ } else if(actual_mode == "create" || !this.value) {
411+ this.modify_control.activate();
412+ this.draw_control.activate();
413+ } else if(actual_mode == "edit") {
414+ this.modify_control.activate();
415+ this.draw_control.deactivate();
416 }
417 }
418- this.$element.toggle(!this.invisible);
419+ this.$el.toggle(!this.invisible);
420 }
421 });
422 openerp.web.form.widgets.add('geo_edit_map', 'openerp.base_geoengine.FieldGeoEngineEditMap');
423@@ -688,15 +751,15 @@
424 this.force_readonly = true;
425 }
426 });
427- openerp.web.page.readonly.add('geo_edit_map', 'openerp.base_geoengine.FieldGeoEngineEditMapReadonly');
428+ openerp.web.form.widgets.add('geo_edit_map', 'openerp.base_geoengine.FieldGeoEngineEditMapReadonly');
429
430 //-----------------------------------------------------------------------
431- openerp.base_geoengine.FieldGeoPointXY = openerp.web.form.Field.extend({
432+ openerp.base_geoengine.FieldGeoPointXY = openerp.web.form.AbstractField.extend({
433 template: 'FieldGeoPointXY',
434
435 start: function() {
436 this._super.apply(this, arguments);
437- this.$input = this.$element.find('input');
438+ this.$input = this.$el.find('input');
439 this.$input.change(this.on_ui_change);
440 this.setupFocus(this.$input);
441 },
442@@ -723,7 +786,7 @@
443 this.$input.val('');
444 }
445 },
446- set_value_from_ui: function() {
447+ on_ui_change: function() {
448 var coords = this.get_coords();
449 if (coords[0] && coords[1]) {
450 var json = this.make_GeoJSON(coords);
451@@ -732,7 +795,6 @@
452 this.value = false;
453 }
454
455- this._super();
456 },
457 validate: function() {
458 this.invalid = false;
459@@ -769,21 +831,21 @@
460 var geo_obj = JSON.parse(value);
461 show_value = "(" + geo_obj.coordinates[0] + ", " + geo_obj.coordinates[1] + ")";
462 }
463- this.$element.find('div').text(show_value);
464+ this.$el.find('div').text(show_value);
465 return show_value;
466 },
467 validate: function() {
468 this.invalid = false;
469 }
470 });
471- openerp.web.page.readonly.add('geo_point_xy', 'openerp.base_geoengine.FieldGeoPointXYReadonly');
472+ openerp.web.form.widgets.add('geo_point_xy', 'openerp.base_geoengine.FieldGeoPointXYReadonly');
473
474- openerp.base_geoengine.FieldGeoRect = openerp.web.form.Field.extend({
475+ openerp.base_geoengine.FieldGeoRect = openerp.web.form.AbstractField.extend({
476 template: 'FieldGeoRect',
477
478 start: function() {
479 this._super.apply(this, arguments);
480- this.$input = this.$element.find('input');
481+ this.$input = this.$el.find('input');
482 this.$input.change(this.on_ui_change);
483 this.setupFocus(this.$input);
484 },
485@@ -840,7 +902,7 @@
486
487 return [[minx, miny], [maxx, maxy]];
488 },
489- set_value_from_ui: function() {
490+ on_ui_change: function() {
491 var coords = this.get_coords();
492 if (this.all_are_set(coords)) {
493
494@@ -851,8 +913,6 @@
495 } else {
496 this.value = false;
497 }
498-
499- this._super();
500 },
501 all_are_set: function(coords) {
502 return (coords[0][0] !== false && coords[0][1] !== false &&
503@@ -898,14 +958,14 @@
504 show_value = "(" + geo_obj.coordinates[0][0][0] + ", " + geo_obj.coordinates[0][0][1] + "), " +
505 "(" + geo_obj.coordinates[0][2][0] + ", " + geo_obj.coordinates[0][2][1] + ")";
506 }
507- this.$element.find('div').text(show_value);
508+ this.$el.find('div').text(show_value);
509 return show_value;
510 },
511 validate: function() {
512 this.invalid = false;
513 }
514 });
515- openerp.web.page.readonly.add('geo_rect', 'openerp.base_geoengine.FieldGeoRectReadonly');
516+ openerp.web.form.widgets.add('geo_rect', 'openerp.base_geoengine.FieldGeoRectReadonly');
517
518
519 //-------------------------------------------------------------------------
520
521=== modified file 'base_geoengine/static/src/xml/geoengine.xml'
522--- base_geoengine/static/src/xml/geoengine.xml 2012-12-05 10:31:47 +0000
523+++ base_geoengine/static/src/xml/geoengine.xml 2013-09-27 14:57:39 +0000
524@@ -35,8 +35,8 @@
525
526 <t t-name="FieldGeoPointXY.readonly">
527 <div
528- t-att-id="widget.element_id"
529- t-attf-class="field_#{widget.type} #{_(['geo_point_xy']).contains(widget.type) ? 'oe-number' : ''}">
530+ t-att-id="widget.name"
531+ t-attf-class="field_#{widget.widget} #{_(['geo_point_xy']).contains(widget.widget) ? 'oe-number' : ''}">
532 </div>
533 </t>
534
535@@ -84,14 +84,14 @@
536 </t>
537 <t t-name="FieldGeoRect.readonly">
538 <div
539- t-att-id="widget.element_id"
540- t-attf-class="field_#{widget.type} #{_(['geo_point_xy']).contains(widget.type) ? 'oe-number' : ''}">
541+ t-att-id="widget.name"
542+ t-attf-class="field_#{widget.widget} #{_(['geo_point_xy']).contains(widget.widget) ? 'oe-number' : ''}">
543 </div>
544 </t>
545
546
547 <t t-name="FieldGeoEngineEditMap">
548- <div t-att-id="widget.element_id" t-attf-class="field_#{widget.type}" border="1"/>
549+ <div t-att-id="widget.name" t-attf-class="field_#{widget.widget}" border="1"/>
550 </t>
551
552 </template>
553
554=== modified file 'base_geoengine_demo/__openerp__.py'
555--- base_geoengine_demo/__openerp__.py 2012-12-28 09:54:56 +0000
556+++ base_geoengine_demo/__openerp__.py 2013-09-27 14:57:39 +0000
557@@ -18,7 +18,7 @@
558 # along with this program. If not, see <http://www.gnu.org/licenses/>.
559 #
560 ##############################################################################
561-{'name': 'Geo spatial support for OpenERP',
562+{'name': 'Geo spatial support Demo',
563 'version': '0.1',
564 'category': 'GeoBI',
565 'description': """
566
567=== modified file 'base_geoengine_demo/retail_machine_view.xml'
568--- base_geoengine_demo/retail_machine_view.xml 2012-12-05 08:33:10 +0000
569+++ base_geoengine_demo/retail_machine_view.xml 2013-09-27 14:57:39 +0000
570@@ -4,9 +4,8 @@
571 <record model="ir.ui.view" id="geo_retail_machine_view_form">
572 <field name="name">geoengine.demo.retail.machine.form</field>
573 <field name="model">geoengine.demo.automatic.retailing.machine</field>
574- <field name="type">form</field>
575 <field name="arch" type="xml">
576- <form>
577+ <form string="Retail Machine">
578 <field name="name" colspan="4"/>
579 <notebook colspan="4">
580 <page string="Geometry">
581@@ -26,9 +25,8 @@
582 <record model="ir.ui.view" id="geo_retail_machine_view_tree">
583 <field name="name">geoengine.demo.retail.machine.form</field>
584 <field name="model">geoengine.demo.automatic.retailing.machine</field>
585- <field name="type">tree</field>
586 <field name="arch" type="xml">
587- <tree>
588+ <tree string="Retail Machine">
589 <field name="name" select="1"/>
590 <field name="total_sales" select="1"/>
591 <field name="money_level" select="1"/>
592@@ -72,15 +70,15 @@
593 <!-- GeoEngine views -->
594 <record id="ir_ui_view_retailmachineview0" model="ir.ui.view">
595 <field name="name">Retail machine view</field>
596- <field name="arch"><![CDATA[
597-<form>
598- <field name="name" select="1"/>
599- <field name="total_sales" select="1"/>
600- <field name="money_level" />
601- <field name="state"/>
602-</form>]]></field>
603+ <field name="arch" type="xml">
604+ <geoengine version="7.0">
605+ <field name="name" select="1"/>
606+ <field name="total_sales" select="1"/>
607+ <field name="money_level" />
608+ <field name="state"/>
609+ </geoengine>
610+ </field>
611 <field eval="16" name="priority"/>
612- <field name="type">geoengine</field>
613 <field name="model">geoengine.demo.automatic.retailing.machine</field>
614 </record>
615 <record id="geoengine_vector_layer_retailmachinebasicpoint0" model="geoengine.vector.layer">
616@@ -167,7 +165,7 @@
617 </record>
618 <record id="geoengine_raster_layer_retailmachinemapbox" model="geoengine.raster.layer">
619 <field name="raster_type">mapbox</field>
620- <field name="mapbox_type">mapbox.mapbox-streets</field>
621+ <field name="mapbox_id">camptocamp.map-ok288g0c</field>
622 <field name="name">Retail Machine Mapbox</field>
623 <field name="view_id" ref="ir_ui_view_retailmachineview0"/>
624 <field eval="0" name="overlay"/>
625
626=== modified file 'base_geoengine_demo/zip_view.xml'
627--- base_geoengine_demo/zip_view.xml 2012-12-05 08:33:10 +0000
628+++ base_geoengine_demo/zip_view.xml 2013-09-27 14:57:39 +0000
629@@ -4,9 +4,8 @@
630 <record model="ir.ui.view" id="dummy_zip_form">
631 <field name="name">dummy.zip.form</field>
632 <field name="model">dummy.zip</field>
633- <field name="type">form</field>
634 <field name="arch" type="xml">
635- <form>
636+ <form string="Dummy">
637 <field name="name" select="1"/>
638 <field name="city" select="1"/>
639 <field name="priority" />
640@@ -22,9 +21,8 @@
641 <record model="ir.ui.view" id="dummy_zip_tree">
642 <field name="name">dummy.zip.form</field>
643 <field name="model">dummy.zip</field>
644- <field name="type">tree</field>
645 <field name="arch" type="xml">
646- <tree>
647+ <tree string="Dummy">
648 <field name="name" select="1"/>
649 <field name="city" select="1"/>
650 <field name="priority" />
651@@ -43,14 +41,14 @@
652 <!-- GeoEngine views -->
653 <record id="ir_ui_view_resbetterzipgeoview0" model="ir.ui.view">
654 <field name="name">dummy.zip.geo_view</field>
655- <field name="arch"><![CDATA[
656- <form >
657+ <field name="arch" type="xml">
658+ <geoengine version="7.0">
659 <field name="name"/>
660 <field name="city"/>
661 <field name="total_sales"/>
662- </form>]]></field>
663+ </geoengine>
664+ </field>
665 <field eval="16" name="priority"/>
666- <field name="type">geoengine</field>
667 <field name="model">dummy.zip</field>
668 </record>
669 <record id="geoengine_vector_layer_basictest0" model="geoengine.vector.layer">
670@@ -92,7 +90,7 @@
671 </record>
672 <record id="geoengine_raster_layer_mapbox0" model="geoengine.raster.layer">
673 <field name="raster_type">mapbox</field>
674- <field name="mapbox_type">mapbox.mapbox-light</field>
675+ <field name="mapbox_id">camptocamp.map-qrf4x</field>
676 <field name="name">ZIP Mapbox Light</field>
677 <field name="view_id" ref="ir_ui_view_resbetterzipgeoview0"/>
678 <field eval="1" name="overlay"/>
679
680=== modified file 'geoengine_geoname_geocoder/geonames_coder.py'
681--- geoengine_geoname_geocoder/geonames_coder.py 2012-10-01 10:26:49 +0000
682+++ geoengine_geoname_geocoder/geonames_coder.py 2013-09-27 14:57:39 +0000
683@@ -33,10 +33,10 @@
684
685 logger = logging.getLogger('GeoNames address encoding')
686
687-class ResPartnerAddress(osv.osv):
688- """Auto gheo coding of addresses"""
689- _name = "res.partner.address"
690- _inherit = "res.partner.address"
691+class ResPartner(osv.osv):
692+ """Auto geo coding of addresses"""
693+ _name = "res.partner"
694+ _inherit = "res.partner"
695
696
697 def _can_geocode(self, cursor, uid, context):
698@@ -97,7 +97,7 @@
699 data = {'geo_point': self._get_point_from_reply(answer)}
700 add.write(data)
701 # We use postgres to do projection in order not to install GDAL dependences
702- sql = ("UPDATE res_partner_address"
703+ sql = ("UPDATE res_partner"
704 " SET geo_point = ST_Transform(st_SetSRID(geo_point, 4326), %s)"
705 " WHERE id = %s")
706 cursor.execute(sql, (srid, add.id))
707@@ -108,17 +108,17 @@
708 return ids
709
710 def write(self, cursor, uid, ids, vals, context=None):
711- res = super(ResPartnerAddress, self).write(cursor, uid, ids, vals, context=None)
712+ res = super(ResPartner, self).write(cursor, uid, ids, vals, context=None)
713 do_geocode = self._can_geocode(cursor, uid, context)
714 if do_geocode and "country_id" in vals or 'city' in vals or 'zip' in vals:
715 self.geocode_from_geonames(cursor, uid, ids, context=context)
716 return res
717
718 def create(self, cursor, uid, vals, context=None):
719- res = super(ResPartnerAddress, self).create(cursor, uid, vals, context=None)
720+ res = super(ResPartner, self).create(cursor, uid, vals, context=None)
721 do_geocode = self._can_geocode(cursor, uid, context=context)
722 if do_geocode:
723 self.geocode_from_geonames(cursor, uid, res, context=context)
724 return res
725
726-ResPartnerAddress()
727+ResPartner()
728
729=== modified file 'geoengine_geoname_geocoder/wizard/bulk_encode.py'
730--- geoengine_geoname_geocoder/wizard/bulk_encode.py 2012-10-01 10:26:49 +0000
731+++ geoengine_geoname_geocoder/wizard/bulk_encode.py 2013-09-27 14:57:39 +0000
732@@ -24,12 +24,12 @@
733 class BlukGeoNameEncoder(osv.osv_memory):
734 _name = "geoengine.geoname.encoder"
735
736- _columns = {'add_to_encode': fields.many2many('res.partner.address',
737+ _columns = {'add_to_encode': fields.many2many('res.partner',
738 string='Addresses to encode'),
739 'encode_all': fields.boolean('Encode all addresses')}
740
741 def encode(self, cursor, uid, wiz_id, context=None):
742- add_obj = self.pool.get('res.partner.address')
743+ add_obj = self.pool.get('res.partner')
744 context = context or {}
745 if isinstance(wiz_id, list):
746 wiz_id = wiz_id[0]
747
748=== modified file 'geoengine_partner/geo_partner.py'
749--- geoengine_partner/geo_partner.py 2012-10-01 10:27:35 +0000
750+++ geoengine_partner/geo_partner.py 2013-09-27 14:57:39 +0000
751@@ -19,41 +19,11 @@
752 #
753 ##############################################################################
754
755-from osv import fields, osv
756-
757+from osv import fields
758 from base_geoengine import geo_model
759
760-class ResPartnerAddress(geo_model.GeoModel):
761- """Add geo_point to addresses"""
762- _name = "res.partner.address"
763- _inherit = "res.partner.address"
764- _columns = {'geo_point' : fields.geo_point('Addresses coordinate')}
765-ResPartnerAddress()
766-
767 class ResPartner(geo_model.GeoModel):
768 """Add geo_point to partner using a function filed"""
769 _name = "res.partner"
770 _inherit = "res.partner"
771-
772- def _get_point(self, cursor, uid, partner_ids, name, args, context=None):
773- """ Return Json repr of field"""
774- res = {}
775- add_obj = self.pool.get('res.partner.address')
776- context = context or {}
777- if not isinstance(partner_ids, list):
778- partner_ids = [partner_ids]
779- for partner_id in partner_ids:
780- add = self.address_get(cursor, uid, [partner_id], adr_pref=['invoice'])
781- if add.get('invoice'):
782- res[partner_id] = add_obj.browse(cursor, uid, add.get('invoice'), context).geo_point
783- else:
784- res[partner_id] = False
785- return res
786-
787- _columns = {'geo_point' : fields.geo_function(_get_point,
788- string='Partner coordinates',
789- type='geo_point',
790- srid=900913, # mandatory arg
791- dim=2)} # mandatory arg
792-ResPartner()
793-
794+ _columns = {'geo_point' : fields.geo_point('Addresses coordinate')}
795
796=== modified file 'geoengine_partner/geo_partner_view.xml'
797--- geoengine_partner/geo_partner_view.xml 2012-02-02 22:08:18 +0000
798+++ geoengine_partner/geo_partner_view.xml 2013-09-27 14:57:39 +0000
799@@ -1,113 +1,44 @@
800 <?xml version="1.0" encoding="utf-8"?>
801 <openerp>
802 <data>
803- <!-- addresses -->
804- <record id="base.action_partner_address_form" model="ir.actions.act_window">
805- <field name="view_mode">tree,form,geoengine,kanban</field>
806- </record>
807-
808- <record model="ir.ui.view" id="geo_partner_address_view_form">
809- <field name="name">geo_partner_addressform</field>
810- <field name="model">res.partner.address</field>
811- <field name="type">form</field>
812- <field name="inherit_id" ref="base.view_partner_address_form1"/>
813- <field name="arch" type="xml">
814- <field name="email" position="after">
815- <field name="geo_point" colspan="4" widget="text"
816- groups="base_geoengine.group_geoengine_user,base_geoengine.group_geoengine_admin"/>
817- </field>
818- </field>
819- </record>
820-
821- <!-- GeoEngine views -->
822- <record id="ir_ui_view_geo_partner_add" model="ir.ui.view">
823- <field name="name">Address view</field>
824- <field name="arch"><![CDATA[
825-<form>
826- <field name="name" select="1"/>
827- <field name="zip"/>
828- <field name="city"/>
829- <field name="country_id"/>
830-</form>]]></field>
831- <field eval="16" name="priority"/>
832- <field name="type">geoengine</field>
833- <field name="model">res.partner.address</field>
834- </record>
835-
836- <record id="geoengine_vector_layer_res_partner_address" model="geoengine.vector.layer">
837- <field name="geo_field_id"
838- ref="geoengine_partner.field_res_partner_address_geo_point"/>
839- <field name="name">Address location</field>
840- <field eval="6" name="sequence"/>
841- <field name="view_id" ref="ir_ui_view_geo_partner_add"/>
842- <field name="geo_repr">basic</field>
843- <field eval="1" name="nb_class"/>
844- <field name="begin_color">#FF680A</field>
845- <field name="symbol_binary">iVBORw0KGgoAAAANSUhEUgAAACAAAAAfCAYAAACGVs+MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
846- bWFnZVJlYWR5ccllPAAAA3VJREFUeNq8V89rE0EUfjOz6aZNpFZpqyCEIooHoVaoQkGoB3vyJB49
847- iYieFERBEMRbxYP/gFcv3ntQLHqwqNR6LNUqIq0/m8S2u0l3NzszfpNsqN0e3MiuA4/Jmx3e++Z7
848- 3/wI01pTkvZicF+zzwvR1c35efRX0B/K7SgScUHScVZ8KR96St31pPyuEHfk6+e/xrUoYWMwQM3D
849- 7gvOL9lIYA8MkD1+gli+hxozM/3qw8erHtEYpp7D/MUkcXlSAFiZUEQXEfgSiwCJvp0kDh8mcWSY
850- 2J49xBkzAY8B5KSvdTFVAKHWJan1dVMwQy/AkCyXKZydo8bLVySXl0kqZVgizDvT0Ho0SdzEJUDA
851- CaH1XgQ3YCjgnESlSmp6uqmBsFajoDWPmnOUOgX3WXoAlBoFxSLAKgWoZjDDhLXuNMsRwg/gQ4Bm
852- rvldSpUBrPoXR3CvLUgka4AFi7eqqExijPlmjmFISi9VDaA9xqoCiJHqSGKsBnPDkGowNxrbiL77
853- Sr1JlQG017DnCDzR1oFol6MlvKYZFlCCCsT4JG0A67CbsGEkHzSK520KAcIkp2h3oN2CfUy7BKa9
854- hZ2FzWnPo7BepwB9gF7ClKYKvl2GPUgaMDEDGtusfSrr0J+g42PXVLF4Uy8vM76rj6hQmKKn0zeY
855- EPOdrCgxAOvk+KazsVGlC+cf2fv3X+sOQ9uT5gDSU9q25ynh3dIxgO47t/+4GBhpxwn3Fgu6NFSi
856- paUv5Ky7gXVvcvPWSBsAd92tJdF6FQeRr0KZ1+YI1mpNrq5Rpy2xCBnjcYPgWOWP6/wH/UNLzEBX
857- Vy7OQIBKrEbpfVglUwCFnp44AI0jyI3KXYfb0B0KsLNtGBNW02fUFsaGuS4yZcDUPQZJY+xnpHgH
858- FmQKgHMWS48xRu1H3zdThmwBxBgwJcBYNXLL5tWWMQM8LkJinDuR62ZeAhYrQVODnK1H0jQXhcwU
859- gBBia35cfWClbJDgeeaADcPIfwTA8SARAKCb5Slb+M6zBLBNA62dYYSn8UdlNWdZ2QLo6+vdNibx
860- LAIQF+z4tp3ftlVTBVBZqcZPJurv3x16nv+jt7fXd/FgaYQNar0QMwDw6dPSFt+svVqt+iMjw3Jh
861- 4X24Ui2Tldt6YR06eCDFF5Flxc+B00g8/G5xYVYF6ui+odIOzHmI8Y62428BBgDwu9RGZbaLEwAA
862- AABJRU5ErkJggg==
863- </field>
864- </record>
865- <record id="geoengine_vector_layer_res_partner_address_google" model="geoengine.raster.layer">
866- <field name="raster_type">google</field>
867- <field name="google_type">G_HYBRID_MAP</field>
868- <field name="name">Addresses background</field>
869- <field name="view_id" ref="ir_ui_view_geo_partner_add"/>
870- <field eval="0" name="overlay"/>
871- </record>
872-
873- <!-- partner -->
874-
875 <record model="ir.ui.view" id="geo_partner_view_form">
876 <field name="name">geo_partner_form</field>
877 <field name="model">res.partner</field>
878- <field name="type">form</field>
879 <field name="inherit_id" ref="base.view_partner_form"/>
880 <field name="arch" type="xml">
881- <field name="comment" position="after">
882- <field name="geo_point" colspan="4" widget="text"
883- groups="base_geoengine.group_geoengine_user,base_geoengine.group_geoengine_admin"/>
884- </field>
885+ <notebook>
886+ <page string="Geoengine Map">
887+ <field name="geo_point" widget="geo_edit_map"
888+ groups="base_geoengine.group_geoengine_user,base_geoengine.group_geoengine_admin"/>
889+ </page>
890+ </notebook>
891 </field>
892 </record>
893-
894-
895+
896 <record id="ir_ui_view_geo_partner" model="ir.ui.view">
897 <field name="name">Partner view</field>
898- <field name="arch"><![CDATA[
899-<form>
900- <field name="name" select="1"/>
901- <field name="title" />
902- <field name="function"/>
903- <field name="website"/>
904-</form>]]></field>
905+ <field name="arch" type="xml">
906+ <geoengine version="7.0">
907+ <field name="name" select="1"/>
908+ <field name="title" />
909+ <field name="function"/>
910+ <field name="website"/>
911+ <field name="zip"/>
912+ <field name="city"/>
913+ <field name="country_id"/>
914+ </geoengine>
915+ </field>
916 <field eval="16" name="priority"/>
917- <field name="type">geoengine</field>
918 <field name="model">res.partner</field>
919 </record>
920-
921+
922 <record id="action_partner_form_view3" model="ir.actions.act_window.view">
923 <field eval="20" name="sequence"/>
924 <field name="view_mode">geoengine</field>
925 <field name="view_id" ref="ir_ui_view_geo_partner"/>
926 <field name="act_window_id" ref="base.action_partner_form"/>
927 </record>
928-
929+
930 <record id="geoengine_vector_layer_res_partner" model="geoengine.vector.layer">
931 <field name="geo_field_id"
932 ref="geoengine_partner.field_res_partner_geo_point"/>
933
934=== modified file 'geoengine_sale/geo_sale_view.xml'
935--- geoengine_sale/geo_sale_view.xml 2012-02-16 13:14:44 +0000
936+++ geoengine_sale/geo_sale_view.xml 2013-09-27 14:57:39 +0000
937@@ -2,10 +2,10 @@
938 <openerp>
939 <data>
940 <!-- sale order -->
941- <record id="sale.action_order_form" model="ir.actions.act_window">
942+ <record id="sale.action_orders" model="ir.actions.act_window">
943 <field name="view_mode">tree,form,calendar,graph,geoengine</field>
944 </record>
945-
946+
947 <record model="ir.ui.view" id="geo_sale_order_view_form">
948 <field name="name">geo_sale_order_form</field>
949 <field name="model">sale.order</field>
950@@ -18,25 +18,25 @@
951 </field>
952 </field>
953 </record>
954-
955+
956 <!-- GeoEngine views -->
957 <record id="ir_ui_view_geo_sale_order" model="ir.ui.view">
958 <field name="name">Sale Order view</field>
959- <field name="arch"><![CDATA[
960-<form>
961- <field name="name" select="1"/>
962- <field name="partner_id"/>
963- <field name="state"/>
964- <field name="amount_total"/>
965-</form>]]></field>
966+ <field name="arch" type="xml">
967+ <geoengine version="7.0">
968+ <field name="name" select="1"/>
969+ <field name="partner_id"/>
970+ <field name="state"/>
971+ <field name="amount_total"/>
972+ </geoengine>
973+ </field>
974 <field eval="16" name="priority"/>
975- <field name="type">geoengine</field>
976 <field name="model">sale.order</field>
977 </record>
978-
979+
980 <record id="geoengine_vector_layer_sales_order" model="geoengine.vector.layer">
981 <field name="geo_field_id"
982- ref="geoengine_partner.field_res_partner_address_geo_point"/>
983+ ref="geoengine_partner.field_res_partner_geo_point"/>
984 <field name="name">Sale order proportional</field>
985 <field eval="6" name="sequence"/>
986 <field name="view_id" ref="ir_ui_view_geo_sale_order"/>
987@@ -46,7 +46,7 @@
988 <field name="classification">quantile</field>
989 <field name="begin_color">#4B69FD</field>
990 </record>
991-
992+
993 <record id="geoengine_raster_layer_sales_order" model="geoengine.raster.layer">
994 <field name="raster_type">google</field>
995 <field name="google_type">G_HYBRID_MAP</field>

Subscribers

People subscribed via source and target branches