Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spp data source #35

Open
wants to merge 11 commits into
base: 15.1.1
Choose a base branch
from
6 changes: 6 additions & 0 deletions setup/spp_registry_data_source/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
Empty file.
1 change: 1 addition & 0 deletions spp_registry_data_source/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
27 changes: 27 additions & 0 deletions spp_registry_data_source/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Part of OpenSPP. See LICENSE file for full copyright and licensing details.

{
"name": "SPP Data Source",
"category": "OpenSPP",
"version": "15.0.0.0.0",
"sequence": 1,
"author": "OpenSPP.org",
"website": "https://github.com/openspp/openspp-base",
"license": "LGPL-3",
"development_status": "Production/Stable",
"maintainers": ["jeremi", "gonzalesedwin1123"],
"depends": [
"base",
],
"external_dependencies": {},
"data": [
"security/ir.model.access.csv",
"views/data_source_view.xml",
],
"assets": {},
"demo": [],
"images": [],
"application": True,
"installable": True,
"auto_install": False,
}
2 changes: 2 additions & 0 deletions spp_registry_data_source/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import data_source
from . import data_source_key_value_pair
46 changes: 46 additions & 0 deletions spp_registry_data_source/models/data_source.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from odoo import fields, models


class SppDataSource(models.Model):
_name = "spp.data.source"
_description = "SPP Data Source"

AUTH_TYPE_CHOICES = [
("basic_authentication", "Basic Authentication"),
("bearer_authentication", "Bearer Authentication"),
("api_keys", "API Keys"),
]

name = fields.Char("Data Source Name", required=True)
url = fields.Char(string="Target URL", required=True)

auth_type = fields.Selection(AUTH_TYPE_CHOICES, required=True)

data_source_path_ids = fields.One2many(
"spp.data.source.path", "data_source_id", string="URL Paths"
)
data_source_field_mapping_ids = fields.One2many(
"spp.data.source.field.mapping",
"data_source_id",
)
data_source_parameter_ids = fields.One2many(
"spp.data.source.parameter",
"data_source_id",
)

_sql_constraints = [
("name_uniq", "unique(name)", "The name of the data source must be unique !"),
]

def get_field_mapping_key_value_pair(self):
return self.data_source_field_mapping_ids.get_mapping()

def get_parameter_key_value_pair(self):
return self.data_source_parameter_ids.get_mapping()

def get_source_path_id_key_full_path_pair(self):
pair = {}
for path_id in self.data_source_path_ids:
pair[path_id.key] = path_id.get_full_path()

return pair
49 changes: 49 additions & 0 deletions spp_registry_data_source/models/data_source_key_value_pair.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
from odoo import fields, models


class DataSourceKeyValueMixin(models.AbstractModel):
_name = "spp.data.source.key.value.mixin"
_description = "Data Source Key Value Mixin"

data_source_id = fields.Many2one("spp.data.source", required=True)
key = fields.Char(required=True, index=True)
value = fields.Text(required=True)

key_uniq_error_message = "Key must be unique in this Data Source."
_sql_constraints = [
("key_uniq", "unique (data_source_id, key)", key_uniq_error_message)
]

def get_mapping(self):
mapping = {}
for rec in self:
mapping[rec.key] = rec.value

return mapping


class SppDataSourcePath(models.Model):
_name = "spp.data.source.path"
_inherit = ["spp.data.source.key.value.mixin"]
_description = "SPP Data Source Path"

key_uniq_error_message = "Path Name must be unique in this Data Source."

def get_full_path(self):
self.ensure_one()

return f"{self.data_source_id.url}{self.value}"


class DataSourceFieldMapping(models.Model):
_name = "spp.data.source.field.mapping"
_inherit = ["spp.data.source.key.value.mixin"]
_description = "Data Source Field Mapping"

key_uniq_error_message = "Client Field must be unique in this Data Source."


class DataSourceParameter(models.Model):
_name = "spp.data.source.parameter"
_inherit = ["spp.data.source.key.value.mixin"]
_description = "Data Source Parameter"
5 changes: 5 additions & 0 deletions spp_registry_data_source/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_spp_data_source,SPP Data Source Access,model_spp_data_source,base.group_system,1,1,1,1
access_spp_data_source_path,SPP Data Source Path Access,model_spp_data_source_path,base.group_system,1,1,1,1
access_spp_data_source_parameter,SPP Data Source Parameter Access,model_spp_data_source_parameter,base.group_system,1,1,1,1
access_spp_data_source_field_mapping,SPP Data Source Field Mapping Access,model_spp_data_source_field_mapping,base.group_system,1,1,1,1
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading