User Password Bundle automation

This commit is contained in:
Benoît Vézina 2023-06-28 13:08:12 -04:00
parent 19789c2a76
commit b797015c0e
7 changed files with 169 additions and 0 deletions

View file

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

View file

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
{
'name': "User Password Bundle",
'summary': """
Module to create password bundles and provide access to them for admins of a newly created user.
""",
'description': """
This module automate the creation of a password bundle for new users in Odoo 15 and changes the default admin
ownership of bundle to admin/setting group instead of the bundle creator.
""",
'author': "Bemade",
'website': "https://www.bemade.org",
'category': 'Technical',
'version': '0.1',
'license': 'AGPL-3',
'depends': ['odoo_password_manager'],
'data': [
],
'demo': [
],
}

View file

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import res_users
from . import password_bundle

View file

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class password_bundle(models.Model):
_inherit = 'password.bundle'
_name = 'password.bundle'
@api.model
def _default_access_admin_ids(self):
"""
Default method for access_ids
"""
values = {
'access_level': 'admin',
'group_id': self.env.ref('base.group_system').id,
}
return [(0, 0, values)]
# BV: UGLY HACK
# I should be able to remove this field, but I can't just override the default function
# _default_access_ids, so I rename it _default_access_admin_ids and override the th field
access_ids = fields.One2many(
"password.access",
"bundle_id",
default=_default_access_admin_ids,
)

View file

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class ResUsers(models.Model):
_inherit = 'res.users'
@api.model
def create(self, vals):
newuser = super(ResUsers, self).create(vals)
if vals.get("sel_groups_1_9_10", 9) == 1:
pw_bundle = self.env['password.bundle'].create({
'name': newuser.name,
})
self.env['password.access'].create({
'bundle_id': pw_bundle.id,
'user_id': newuser.id,
'access_level': 'full'
})
return newuser

View file

@ -0,0 +1,24 @@
<odoo>
<data>
<!--
<template id="listing">
<ul>
<li t-foreach="objects" t-as="object">
<a t-attf-href="#{ root }/objects/#{ object.id }">
<t t-esc="object.display_name"/>
</a>
</li>
</ul>
</template>
<template id="object">
<h1><t t-esc="object.display_name"/></h1>
<dl>
<t t-foreach="object._fields" t-as="field">
<dt><t t-esc="field"/></dt>
<dd><t t-esc="object[field]"/></dd>
</t>
</dl>
</template>
-->
</data>
</odoo>

View file

@ -0,0 +1,60 @@
<odoo>
<data>
<!-- explicit list view definition -->
<!--
<record model="ir.ui.view" id="bemade_user_password_bundle.list">
<field name="name">bemade_user_password_bundle list</field>
<field name="model">bemade_user_password_bundle.bemade_user_password_bundle</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="value"/>
<field name="value2"/>
</tree>
</field>
</record>
-->
<!-- actions opening views on models -->
<!--
<record model="ir.actions.act_window" id="bemade_user_password_bundle.action_window">
<field name="name">bemade_user_password_bundle window</field>
<field name="res_model">bemade_user_password_bundle.bemade_user_password_bundle</field>
<field name="view_mode">tree,form</field>
</record>
-->
<!-- server action to the one above -->
<!--
<record model="ir.actions.server" id="bemade_user_password_bundle.action_server">
<field name="name">bemade_user_password_bundle server</field>
<field name="model_id" ref="model_bemade_user_password_bundle_bemade_user_password_bundle"/>
<field name="state">code</field>
<field name="code">
action = {
"type": "ir.actions.act_window",
"view_mode": "tree,form",
"res_model": model._name,
}
</field>
</record>
-->
<!-- Top menu item -->
<!--
<menuitem name="bemade_user_password_bundle" id="bemade_user_password_bundle.menu_root"/>
-->
<!-- menu categories -->
<!--
<menuitem name="Menu 1" id="bemade_user_password_bundle.menu_1" parent="bemade_user_password_bundle.menu_root"/>
<menuitem name="Menu 2" id="bemade_user_password_bundle.menu_2" parent="bemade_user_password_bundle.menu_root"/>
-->
<!-- actions -->
<!--
<menuitem name="List" id="bemade_user_password_bundle.menu_1_list" parent="bemade_user_password_bundle.menu_1"
action="bemade_user_password_bundle.action_window"/>
<menuitem name="Server to list" id="bemade_user_password_bundle" parent="bemade_user_password_bundle.menu_2"
action="bemade_user_password_bundle.action_server"/>
-->
</data>
</odoo>