mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-20 00:52:02 +02:00
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
# Copyright 2011-2012 Nicolas Bessi (Camptocamp SA)
|
|
# Copyright 2023 Yannick Payot (Camptocamp SA)
|
|
# 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"),
|
|
]
|
|
|
|
GEO_TYPES_ONDELETE = {
|
|
"geo_polygon": "cascade",
|
|
"geo_multi_polygon": "cascade",
|
|
"geo_point": "cascade",
|
|
"geo_multi_point": "cascade",
|
|
"geo_line": "cascade",
|
|
"geo_multi_line": "cascade",
|
|
}
|
|
|
|
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_TYPES_ONDELETE,
|
|
)
|