Tower: upload ks_dashboard_ninja 18.0.1.1.7 (was 18.0.1.1.7, via marketplace)

This commit is contained in:
2026-05-07 12:17:21 +00:00
parent e50acbac83
commit fd62a75b51
583 changed files with 54977 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
from . import ks_create_dashboard_wiz
from . import ks_duplicate_dashboard_wiz

View File

@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
from odoo import fields, models
class KSCreateDashboardWizard(models.TransientModel):
_name = 'ks.dashboard.wizard'
_description = 'Dashboard Creation Wizard'
name = fields.Char(string="Dashboard Name", required=True, size=35)
ks_menu_name = fields.Char(string="Menu Name", required=True, size=35)
ks_top_menu_id = fields.Many2one('ir.ui.menu',
domain="['|',('action','=',False),('parent_id','=',False)]",
string="Show Under Menu", required=True,
default=lambda self: self.env.ref('ks_dashboard_ninja.dashboards_menu_root',False))
ks_sequence = fields.Integer(string="Sequence", default=20)
ks_template = fields.Many2one('ks_dashboard_ninja.board_template',
default=lambda self: self.env.ref('ks_dashboard_ninja.ks_blank',
False),
string="Dashboard Template")
context = {}
def CreateDashBoard(self):
'''this function returns acion id of ks.dashboard.wizard'''
action = self.env['ir.actions.act_window']._for_xml_id(
'ks_dashboard_ninja.ks_create_dashboard_wizard')
return action
def ks_create_record(self):
'''this function creats record of ks_dashboard_ninja.board and return dashboard action_id'''
ks_create_record = self.env['ks_dashboard_ninja.board'].create({
'name': self.name,
'ks_dashboard_menu_name': self.ks_menu_name,
'ks_dashboard_menu_sequence': self.ks_sequence,
'ks_dashboard_default_template': self.ks_template.id,
'ks_dashboard_top_menu_id': self.ks_top_menu_id.id,
})
# context = {'ks_reload_menu': True, 'ks_menu_id': ks_create_record.ks_dashboard_menu_id.id}
# return {'type': 'ir.actions.client', 'tag': 'reload'}
return {
'type': 'ir.actions.client',
'name': "Dashboard Ninja",
'res_model': 'ks_dashboard_ninja.board',
'params': {'ks_dashboard_id': ks_create_record.id,
'isReloadOnFirstCreate': True
},
'tag': 'ks_dashboard_ninja',
'id': ks_create_record.ks_dashboard_client_action_id.id,
'target': "main",
# 'context': self.with_context(context)._context
}

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="ks_create_dashboard_wizard_form" model="ir.ui.view">
<field name="name">ks.dashboard.wizard.form.view</field>
<field name="model">ks.dashboard.wizard</field>
<field name="arch" type="xml">
<form string="Dashboard Manager">
<div class="d-flex flex-column w-100 h-100 pb-lg-3 mb-3 pb-0 ">
<label for="name" class="form-label">Dashboard Name</label>
<field name="name" placeholder="Enter Dashboard Name" class="form-control form-input-box validation"/>
</div>
<group class="row ks_dash_row">
<group class="d-flex flex-column w-95 h-95">
<div class="mb-3 mb-lg-0">
<label for="ks_menu_name" class="form-label">Menu Name</label>
<field name="ks_menu_name" placeholder="Enter Menu Name" class="form-control form-input-box validation"/>
</div>
<div>
<label for="ks_top_menu_id" class="form-label">Show Under Menu</label>
<field name="ks_top_menu_id" placeholder="Select Show Under Menu" class="form-control form-input-box validation"/>
</div>
</group>
<group class="d-flex flex-column w-90 h-90">
<div class="mb-3 mb-lg-0">
<label for="ks_template" class="form-label">Template</label>
<field name="ks_template" placeholder="Select Template" class="form-control form-input-box validation"/>
</div>
<div>
<label for="ks_sequence" class="form-label">Sequence</label>
<field name="ks_sequence" placeholder="Enter Sequence" class="form-control form-input-box validation"/>
</div>
</group>
</group>
<h3 class="oe_grey" invisible="('ks_template','!=',8)or('ks_template','!=',2)or
('ks_template','!=',3) or ('ks_template','!=',4) or ('ks_template','!=',5) or ('ks_template','!=',6) or ('ks_template','!=',7)">
Preview
</h3>
<img src="/ks_dashboard_ninja/static/description/templates/ks_template1.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',2)"/>
<img src="/ks_dashboard_ninja/static/description/templates/ks_template2.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',3)"/>
<img src="/ks_dashboard_ninja/static/description/templates/ks_template3.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',4)"/>
<img src="/ks_dashboard_ninja/static/description/templates/ks_account_template.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',5)"/>
<img src="/ks_dashboard_ninja/static/description/templates/ks_crm_template.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',6)"/>
<img src="/ks_dashboard_ninja/static/description/templates/ks_inventory_template.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',7)"/>
<img src="/ks_dashboard_ninja/static/description/templates/ks_sale_template.png"
alt="#" class="img img-fluid"
style="padding: 10px; border: 2px solid;"
invisible="('ks_template','!=',8)"/>
<footer>
<button class="dash-btn-red" name="ks_create_record" type="object" string="Save"/>
<button string="Cancel" class="oe_link dash-default-btn bg-white" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="ks_create_dashboard_wizard" model="ir.actions.act_window">
<field name="name">Add New Dashboard</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ks.dashboard.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="ks_create_dashboard_wizard_form"/>
<field name="target">new</field>
</record>
</odoo>

View File

@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
from odoo import fields, models
class KSduplicateDashboardWizard(models.TransientModel):
_name = 'ks.dashboard.duplicate.wizard'
_description = 'Dashboard Duplicate Wizard'
ks_top_menu_id = fields.Many2one('ir.ui.menu', string="Show Under Menu", required=True, domain="[('parent_id','=',False)]",
default=lambda self: self.env['ir.ui.menu'].search(
[('name', '=', 'My Dashboards')]))
def DuplicateDashBoard(self):
'''this function returns acion id of ks.dashboard.duplicate.wizard'''
action = self.env['ir.actions.act_window']._for_xml_id(
'ks_dashboard_ninja.ks_duplicate_dashboard_wizard')
action['context'] = {'dashboard_id': self.id}
return action
def ks_duplicate_record(self):
'''this function creats record of ks_dashboard_ninja.board and return dashboard action_id'''
dashboard_id = self._context.get('dashboard_id')
dup_dash = self.env['ks_dashboard_ninja.board'].browse(dashboard_id).copy({'ks_dashboard_top_menu_id': self.ks_top_menu_id.id})
context = {'ks_reload_menu': True, 'ks_menu_id': dup_dash.ks_dashboard_menu_id.id}
dash_id = self.env['ks_dashboard_ninja.board'].browse(dashboard_id)
length_to_skip = len(dup_dash.ks_dashboard_items_ids.ids)
count = 0
if dup_dash.ks_dashboard_items_ids or length_to_skip == 0:
for item in dash_id.ks_dashboard_items_ids:
if count < length_to_skip:
count += 1
continue
item.sudo().copy({'ks_dashboard_ninja_board_id': dup_dash.id})
return {
'type': 'ir.actions.client',
'tag': 'reload',
}
class KSDeleteDashboardWizard(models.TransientModel):
_name = 'ks.dashboard.delete.wizard'
_description = 'Dashboard Delete Wizard'
def ks_delete_record(self, **kwargs):
'''this function creats record of ks_dashboard_ninja.board and return dashboard action_id'''
dashboard_id = kwargs.get('dashboard_id')
self.env['ks_dashboard_ninja.board'].browse(dashboard_id).unlink()
menu_action_id = self.env.ref('ks_dashboard_ninja.board_menu_root').id
return menu_action_id

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- duplicate dashboard form view -->
<record id="ks_duplicate_dashboard_wizard_form" model="ir.ui.view">
<field name="name">ks.dashboard.duplicate.wizard.form.view</field>
<field name="model">ks.dashboard.duplicate.wizard</field>
<field name="arch" type="xml">
<form string="Dashboard Manager" class="duplicate-db">
<group>
<img src="/ks_dashboard_ninja/static/images/duplicate-img.png" alt="Duplicate Image"/>
<field name="ks_top_menu_id" class="form-input-box form-control" placeholder="Select Show Under Menu"/>
</group>
<footer>
<button class="dash-btn-red" name="ks_duplicate_record" type="object" string="Duplicate"/>
<button string="Cancel" class="oe_link dash-default-btn bg-white" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- duplicate dashboard action -->
<record id="ks_duplicate_dashboard_wizard" model="ir.actions.act_window">
<field name="name">Duplicate Dashboard</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ks.dashboard.duplicate.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="ks_duplicate_dashboard_wizard_form"/>
<field name="target">new</field>
</record>
<!-- delete dashboard form view -->
<record id="ks_delete_dashboard_wizard_form" model="ir.ui.view">
<field name="name">ks.dashboard.delete.wizard.form.view</field>
<field name="model">ks.dashboard.delete.wizard</field>
<field name="arch" type="xml">
<form string="Dashboard Manager">
<h6 style="color: #71639e;">Are you sure you want to delete this dashboard ?</h6>
<footer>
<button class="dash-btn-red" name="ks_delete_record" type="object" string="Delete"/>
<button string="Cancel" class="oe_link dash-default-btn bg-white" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- delete dashboard action-->
<record id="ks_delete_dashboard_wizard" model="ir.actions.act_window">
<field name="name">Delete Dashboard</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ks.dashboard.delete.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="ks_delete_dashboard_wizard_form"/>
<field name="target">new</field>
</record>
</odoo>