diff options
Diffstat (limited to 'base_geoengine/geo_ir')
| -rw-r--r-- | base_geoengine/geo_ir/__init__.py | 1 | ||||
| -rw-r--r-- | base_geoengine/geo_ir/__pycache__/__init__.cpython-36.pyc | bin | 0 -> 194 bytes | |||
| -rw-r--r-- | base_geoengine/geo_ir/__pycache__/ir_model.cpython-36.pyc | bin | 0 -> 1342 bytes | |||
| -rw-r--r-- | base_geoengine/geo_ir/ir_model.py | 46 | ||||
| -rw-r--r-- | base_geoengine/geo_ir/ir_model_view.xml | 26 |
5 files changed, 73 insertions, 0 deletions
diff --git a/base_geoengine/geo_ir/__init__.py b/base_geoengine/geo_ir/__init__.py new file mode 100644 index 0000000..413bb23 --- /dev/null +++ b/base_geoengine/geo_ir/__init__.py @@ -0,0 +1 @@ +from . import ir_model diff --git a/base_geoengine/geo_ir/__pycache__/__init__.cpython-36.pyc b/base_geoengine/geo_ir/__pycache__/__init__.cpython-36.pyc Binary files differnew file mode 100644 index 0000000..d292dd7 --- /dev/null +++ b/base_geoengine/geo_ir/__pycache__/__init__.cpython-36.pyc diff --git a/base_geoengine/geo_ir/__pycache__/ir_model.cpython-36.pyc b/base_geoengine/geo_ir/__pycache__/ir_model.cpython-36.pyc Binary files differnew file mode 100644 index 0000000..0772bb6 --- /dev/null +++ b/base_geoengine/geo_ir/__pycache__/ir_model.cpython-36.pyc diff --git a/base_geoengine/geo_ir/ir_model.py b/base_geoengine/geo_ir/ir_model.py new file mode 100644 index 0000000..a56eb4a --- /dev/null +++ b/base_geoengine/geo_ir/ir_model.py @@ -0,0 +1,46 @@ +# Copyright 2011-2012 Nicolas Bessi (Camptocamp SA) +# Copyright 2021 Shurshilov Artem +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + +from odoo.addons import base + +if "geoengine" not in base.models.ir_actions.VIEW_TYPES: + base.models.ir_actions.VIEW_TYPES.append(("geoengine", "Geoengine")) + +GEO_TYPES = [ + ("geo_polygon", "geo_polygon"), + ("geo_multi_polygon", "geo_multi_polygon"), + ("geo_point", "geo_point"), + ("geo_multi_point", "geo_multi_point"), + ("geo_line", "geo_line"), + ("geo_multi_line", "geo_multi_line"), +] + +POSTGIS_GEO_TYPES = [ + ("POINT", "POINT"), + ("MULTIPOINT", "MULTIPOINT"), + ("LINESTRING", "LINESTRING"), + ("MULTILINESTRING", "MULTILINESTRING"), + ("POLYGON", "POLYGON"), + ("MULTIPOLYGON", "MULTIPOLYGON"), +] + + +class IrModelField(models.Model): + _inherit = "ir.model.fields" + + srid = fields.Integer("srid", required=False) + geo_type = fields.Selection(POSTGIS_GEO_TYPES, string="PostGIs type") + dim = fields.Selection( + [("2", "2"), ("3", "3"), ("4", "4")], string="PostGIs Dimension", default='2' + ) + gist_index = fields.Boolean("Create gist index") + ttype = fields.Selection(selection_add=GEO_TYPES, ondelete={ + 'geo_polygon': 'cascade', + 'geo_multi_polygon': 'cascade', + 'geo_point': 'cascade', + 'geo_multi_point': 'cascade', + 'geo_line': 'cascade', + 'geo_multi_line': 'cascade', + }) diff --git a/base_geoengine/geo_ir/ir_model_view.xml b/base_geoengine/geo_ir/ir_model_view.xml new file mode 100644 index 0000000..ed0fbea --- /dev/null +++ b/base_geoengine/geo_ir/ir_model_view.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record model="ir.ui.view" id="view_model_fields_form_geo"> + <!-- must be unique in this module. --> + <field name="name">ir.model.fields.form.geo</field> + <field name="model">ir.model.fields</field> + <field name="inherit_id" ref="base.view_model_fields_form"/> + <field name="arch" type="xml"> + <sheet position="inside"> + <group> + <!-- nasty attrs but ilike operator does not work as expected --> + <field name="srid" + attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/> + <field name="geo_type" + attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/> + <field name="dim" + attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/> + <field name="gist_index" + attrs="{'readonly': [('ttype', 'not in', ['geo_polygon', 'geo_multi_polygon', 'geo_point', 'geo_multi_point', 'geo_line', 'geo_multi_line'])]}"/> + </group> + </sheet> + </field> + </record> + +</odoo> |
