Skip to content

Commit

Permalink
Merge pull request #183 from lalithkota/17.0-develop
Browse files Browse the repository at this point in the history
Moved required portals to base registry
  • Loading branch information
lalithkota committed Sep 5, 2024
2 parents 4753611 + 0afbc77 commit d8eb1e5
Show file tree
Hide file tree
Showing 72 changed files with 7,566 additions and 27 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ addon | version | maintainers | summary
[g2p_enumerator](g2p_enumerator/) | 17.0.0.0.0 | | G2P Enumerator
[g2p_mts](g2p_mts/) | 17.0.0.0.0 | | OpenG2P Registry MTS Connector
[g2p_odk_importer](g2p_odk_importer/) | 17.0.0.0.0 | | Import records from ODK
[g2p_odk_user_mapping](g2p_odk_user_mapping/) | 17.0.0.0.0 | | ODK App User Mapping
[g2p_openid_vci](g2p_openid_vci/) | 17.0.0.0.0 | | G2P OpenID VCI: Base
[g2p_openid_vci_rest_api](g2p_openid_vci_rest_api/) | 17.0.0.0.0 | | G2P OpenID VCI: Rest API
[g2p_portal_auth](g2p_portal_auth/) | 17.0.0.0.0 | | G2P Portal Auth
Expand All @@ -46,6 +47,8 @@ addon | version | maintainers | summary
[g2p_registry_individual](g2p_registry_individual/) | 17.0.0.0.0 | | G2P Registry: Individual
[g2p_registry_membership](g2p_registry_membership/) | 17.0.0.0.0 | | G2P Registry: Membership
[g2p_registry_rest_api](g2p_registry_rest_api/) | 17.0.0.0.0 | | G2P Registry: Rest API
[g2p_service_provider_beneficiary_management](g2p_service_provider_beneficiary_management/) | 17.0.0.0.0 | | G2P Service Provider Beneficiary Management
[g2p_service_provider_portal_base](g2p_service_provider_portal_base/) | 17.0.0.0.0 | | G2P Service Provider Portal: Base
[g2p_superset_dashboard](g2p_superset_dashboard/) | 17.0.0.0.0 | | OpenG2P Superset Dashboard
[mts_connector](mts_connector/) | 17.0.0.0.0 | | MTS Connector

Expand Down
3 changes: 3 additions & 0 deletions g2p_odk_user_mapping/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# ODK App User Mapping

Refer to https://docs.openg2p.org.
1 change: 1 addition & 0 deletions g2p_odk_user_mapping/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
23 changes: 23 additions & 0 deletions g2p_odk_user_mapping/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "ODK App User Mapping",
"category": "G2P",
"version": "17.0.0.0.0",
"sequence": 1,
"author": "OpenG2P",
"website": "https://openg2p.org",
"license": "LGPL-3",
"depends": ["base", "account", "g2p_odk_importer"],
"data": [
"security/ir.model.access.csv",
"views/registration_user_backend_view.xml",
"views/odk_app_user.xml",
],
"assets": {
"web.assets_frontend": [],
"web.assets_common": [],
"website.assets_wysiwyg": [],
},
"application": True,
"installable": True,
"auto_install": False,
}
105 changes: 105 additions & 0 deletions g2p_odk_user_mapping/i18n/g2p_odk_user_mapping.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * g2p_odk_user_mapping
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: g2p_odk_user_mapping
#: model:ir.model,name:g2p_odk_user_mapping.model_res_partner
msgid "Contact"
msgstr ""

#. module: g2p_odk_user_mapping
#: model_terms:ir.actions.act_window,help:g2p_odk_user_mapping.view_odk_app_action
msgid "Create a odk app user"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__create_uid
msgid "Created by"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__create_date
msgid "Created on"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__display_name
msgid "Display Name"
msgstr ""

#. module: g2p_odk_user_mapping
#. odoo-python
#: code:addons/g2p_odk_user_mapping/models/res_partner.py:0
#, python-format
msgid "Failed to fetch app users"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__id
msgid "ID"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__write_uid
msgid "Last Updated by"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__write_date
msgid "Last Updated on"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model,name:g2p_odk_user_mapping.model_odk_app_user
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_res_partner__odk_app_user
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_res_users__odk_app_user
msgid "ODK App User"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__odk_user_id
msgid "ODK App User ID"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__name
msgid "ODK App User Name"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_res_partner__odk_config_id
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_res_users__odk_config_id
msgid "ODK Config"
msgstr ""

#. module: g2p_odk_user_mapping
#: model_terms:ir.ui.view,arch_db:g2p_odk_user_mapping.view_res_partner_form_inherit_registration
msgid "ODk User Configuration"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_odk_app_user__partner_id
msgid "Partner"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_res_partner__session
#: model:ir.model.fields,field_description:g2p_odk_user_mapping.field_res_users__session
msgid "Session Token"
msgstr ""

#. module: g2p_odk_user_mapping
#: model:ir.actions.act_window,name:g2p_odk_user_mapping.view_odk_app_action
msgid "odk.app.user.action"
msgstr ""
2 changes: 2 additions & 0 deletions g2p_odk_user_mapping/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import res_partner
from . import odk_app_user
10 changes: 10 additions & 0 deletions g2p_odk_user_mapping/models/odk_app_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from odoo import fields, models


class ODKAppUser(models.Model):
_name = "odk.app.user"
_description = "ODK App User"

name = fields.Char(string="ODK App User Name")
odk_user_id = fields.Integer(string="ODK App User ID")
partner_id = fields.Many2one("res.partner", string="Partner")
75 changes: 75 additions & 0 deletions g2p_odk_user_mapping/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import json
import logging

import requests

from odoo import _, api, fields, models
from odoo.exceptions import UserError, ValidationError

_logger = logging.getLogger(__name__)


class ResPartner(models.Model):
_inherit = "res.partner"

odk_config_id = fields.Many2one("odk.config", string="ODK Config")
odk_app_user = fields.Many2one("odk.app.user", string="ODK App User")
session = fields.Char(string="Session Token", readonly=True)

@api.onchange("odk_config_id")
def _onchange_odk_config_id(self):
self.odk_app_user = [
5,
]
if self.odk_config_id:
base_url = self.odk_config_id.base_url
project_id = self.odk_config_id.project
username = self.odk_config_id.username
password = self.odk_config_id.password
self._login(base_url, username, password)
if self.session:
app_users = self._fetch_app_users(base_url, project_id)
_logger.info(
"LOG----->ODK APP USER:%s"
% [f"{user['id']} -{user['displayName']}" for user in app_users]
)
return {"domain": {"odk_app_user": [("id", "in", [user["id"] for user in app_users])]}}
else:
return {"domain": {"odk_app_user": []}}

def _login(self, base_url, username, password):
login_url = f"{base_url}/v1/sessions"
headers = {"Content-Type": "application/json"}
data = json.dumps({"email": username, "password": password})
try:
response = requests.post(login_url, headers=headers, data=data, timeout=10)
response.raise_for_status()
if response.status_code == 200:
self.session = response.json()["token"]
except Exception as e:
_logger.exception("Login failed: %s", e)
raise ValidationError(f"Login failed: {e}") from e

def _fetch_app_users(self, base_url, project_id):
url = f"{base_url}/v1/projects/{project_id}/app-users"
headers = {
"Content-Type": "application/json",
"X-Extended-Metadata": "true",
"Authorization": f"Bearer {self.session}",
}
response = requests.get(url, headers=headers, timeout=10)

if response.status_code == 200:
app_users_data = response.json()
query = """
DELETE FROM odk_app_user WHERE partner_id = %s
"""
self.env.cr.execute(query, (self.id.origin or self.id,))

for user in app_users_data:
self.env["odk.app.user"].create(
{"name": user["displayName"], "odk_user_id": user["id"], "partner_id": self.id.origin}
)
return app_users_data
else:
raise UserError(_("Failed to fetch app users"))
3 changes: 3 additions & 0 deletions g2p_odk_user_mapping/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
2 changes: 2 additions & 0 deletions g2p_odk_user_mapping/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_odk_app_user,odk_app_user_name,model_odk_app_user,,1,1,1,1
26 changes: 26 additions & 0 deletions g2p_odk_user_mapping/views/odk_app_user.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_odk_app_tree" model="ir.ui.view">
<field name="name">odk.app.user.tree</field>
<field name="model">odk.app.user</field>
<field name="arch" type="xml">
<tree>
<field name="odk_user_id" />
<field name="name" />
<field name="partner_id" />
</tree>
</field>
</record>

<record id="view_odk_app_action" model="ir.actions.act_window">
<field name="name">odk.app.user.action</field>
<field name="res_model">odk.app.user</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_odk_app_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a odk app user
</p>
</field>
</record>
</odoo>
23 changes: 23 additions & 0 deletions g2p_odk_user_mapping/views/registration_user_backend_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<odoo>
<record id="view_res_partner_form_inherit_registration" model="ir.ui.view">
<field name="name">res.partner.form.inherit.registration</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="//sheet" position="inside">
<group string="ODk User Configuration">
<field
name="odk_config_id"
options="{'no_create': True}"
invisible="context.get('default_supplier_rank') &lt; 1"
/>
<field
name="odk_app_user"
options="{'no_create': True}"
invisible="context.get('default_supplier_rank') &lt; 1"
/>
</group>
</xpath>
</field>
</record>
</odoo>
3 changes: 3 additions & 0 deletions g2p_service_provider_beneficiary_management/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# G2P Service Provider Beneficiary Management

Refer to https://docs.openg2p.org.
2 changes: 2 additions & 0 deletions g2p_service_provider_beneficiary_management/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import controllers
from . import models
33 changes: 33 additions & 0 deletions g2p_service_provider_beneficiary_management/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "G2P Service Provider Beneficiary Management",
"category": "G2P",
"version": "17.0.0.0.0",
"sequence": 1,
"author": "OpenG2P",
"website": "https://openg2p.org",
"license": "LGPL-3",
"depends": [
"g2p_service_provider_portal_base",
"g2p_registry_membership",
"website",
],
"data": [
"views/dashboard.xml",
"views/error_page.xml",
"views/group_template.xml",
"views/success_page.xml",
"views/individual_page.xml",
],
"assets": {
"web.assets_frontend": [
"g2p_service_provider_beneficiary_management/static/src/css/style.css",
],
"web.assets_common": [],
"website.assets_wysiwyg": [],
},
"demo": [],
"images": [],
"application": True,
"installable": True,
"auto_install": False,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import main
Loading

0 comments on commit d8eb1e5

Please sign in to comment.