diff --git a/bemade_fsm/__init__.py b/bemade_fsm/__init__.py
index 0650744..9b42961 100644
--- a/bemade_fsm/__init__.py
+++ b/bemade_fsm/__init__.py
@@ -1 +1,2 @@
from . import models
+from . import wizard
diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py
index c71d220..c378151 100644
--- a/bemade_fsm/__manifest__.py
+++ b/bemade_fsm/__manifest__.py
@@ -53,6 +53,7 @@
'views/sale_order_views.xml',
'reports/worksheet_custom_report_templates.xml',
'reports/worksheet_custom_reports.xml',
+ 'wizard/new_task_from_template.xml',
],
'assets': {
'web.assets_tests': [
@@ -62,6 +63,13 @@
],
'web.report_assets_common': [
'bemade_fsm/static/src/scss/bemade_fsm.scss'
+ ],
+ 'web.assets_backend': [
+ 'bemade_fsm/static/src/js/kanban_view.js',
+ 'bemade_fsm/static/src/js/list_view.js',
+ ],
+ 'web.assets_qweb': [
+ 'bemade_fsm/static/src/xml/project_view_buttons.xml',
]
},
'installable': True,
diff --git a/bemade_fsm/security/ir.model.access.csv b/bemade_fsm/security/ir.model.access.csv
index df83ebc..2c30345 100644
--- a/bemade_fsm/security/ir.model.access.csv
+++ b/bemade_fsm/security/ir.model.access.csv
@@ -5,3 +5,4 @@ access_bemade_fsm_equipment,bemade_fsm_equipment,model_bemade_fsm_equipment,base
access_bemade_fsm_equipment_tag,bemade_fsm_equipment_tag,model_bemade_fsm_equipment_tag,base.group_user,1,1,1,1
access_bemade_fsm_equipment_type,access_bemade_fsm_equipment_type,model_bemade_fsm_equipment_type,base.group_user,1,0,0,0
access_bemade_fsm_visit,access_bemade_fsm_visit,model_bemade_fsm_visit,base.group_user,1,1,1,1
+access_bemade_fsm_task_wizard,access_bemade_fsm_task_wizard,model_project_task_from_template_wizard,project.group_project_user,1,1,1,1
diff --git a/bemade_fsm/static/src/js/kanban_view.js b/bemade_fsm/static/src/js/kanban_view.js
new file mode 100644
index 0000000..2185d01
--- /dev/null
+++ b/bemade_fsm/static/src/js/kanban_view.js
@@ -0,0 +1,37 @@
+/** @odoo-module **/
+
+import KanbanController from 'web.KanbanController';
+import KanbanView from 'web.KanbanView';
+const viewRegistry = require('web.view_registry')
+
+const ProjectKanbanController = KanbanController.extend({
+ buttons_template: 'project.KanbanView.buttons',
+ custom_events: _.extend({}, KanbanController.prototype.custom_events, {
+ create_from_template: '_onCreateFromTemplate',
+ }),
+ _onCreateFromTemplate(ev) {
+ ev.stopPropagation();
+ const record = this.model.get(this.handle, {raw: true});
+ let context = record.context;
+ context.active_id = record.project_id;
+ this.do_action({
+ type: 'ir.actions.act_window',
+ res_model: 'project.task.from.template.wizard',
+ views: [[false, 'form']],
+ target: 'new',
+ context: {...record.context, active_id: record.project_id},
+ });
+ },
+ renderButtons ($node) {
+ this._super.apply(this, arguments);
+ this.$buttons.on('click', 'button.o-kanban-button-new-from-template', this._onCreateFromTemplate.bind(this))
+ },
+})
+
+const ProjectKanbanView = KanbanView.extend({
+ config: _.extend({}, KanbanView.prototype.config, {
+ Controller: ProjectKanbanController,
+ })
+});
+
+viewRegistry.add('project_kanban', ProjectKanbanView)
\ No newline at end of file
diff --git a/bemade_fsm/static/src/js/list_view.js b/bemade_fsm/static/src/js/list_view.js
new file mode 100644
index 0000000..3486965
--- /dev/null
+++ b/bemade_fsm/static/src/js/list_view.js
@@ -0,0 +1,36 @@
+/** @odoo-module **/
+
+import ListController from 'web.ListController';
+import ListView from 'web.ListView';
+const viewRegistry = require('web.view_registry')
+
+const ProjectListController = ListController.extend({
+ buttons_template: 'project.ListView.buttons',
+ custom_events: _.extend({}, ListController.prototype.custom_events, {
+ create_from_template: '_onCreateFromTemplate',
+ }),
+ _onCreateFromTemplate(ev) {
+ ev.stopPropagation();
+ const record = this.model.get(this.handle, {raw: true});
+ this.do_action({
+ type: 'ir.actions.act_window',
+ res_model: 'project.task.from.template.wizard',
+ views: [[false, 'form']],
+ target: 'new',
+ context: {...record.context, active_id: record.project_id},
+ });
+ },
+ renderButtons ($node) {
+ self = this;
+ this._super.apply(this, arguments);
+ this.$buttons.on('click', 'button.o_list_button_add_from_template', this._onCreateFromTemplate.bind(this))
+ },
+})
+
+const ProjectListView = ListView.extend({
+ config: _.extend({}, ListView.prototype.config, {
+ Controller: ProjectListController,
+ })
+});
+
+viewRegistry.add('project_list', ProjectListView)
\ No newline at end of file
diff --git a/bemade_fsm/static/src/xml/project_view_buttons.xml b/bemade_fsm/static/src/xml/project_view_buttons.xml
new file mode 100644
index 0000000..df3484a
--- /dev/null
+++ b/bemade_fsm/static/src/xml/project_view_buttons.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bemade_fsm/views/task_views.xml b/bemade_fsm/views/task_views.xml
index 1fbfecf..25f71be 100644
--- a/bemade_fsm/views/task_views.xml
+++ b/bemade_fsm/views/task_views.xml
@@ -98,6 +98,9 @@
project.task
+
+ project_list
+
@@ -112,6 +115,16 @@
+
+ project.task.view.kanban.fsm.inherit
+ project.task
+
+
+
+ project_kanban
+
+
+
project.task.view.search.fsm.inherit
project.task
diff --git a/bemade_fsm/wizard/new_task_from_template.py b/bemade_fsm/wizard/new_task_from_template.py
index 575629c..26d67ba 100644
--- a/bemade_fsm/wizard/new_task_from_template.py
+++ b/bemade_fsm/wizard/new_task_from_template.py
@@ -4,6 +4,7 @@ from odoo.exceptions import UserError
class NewTaskFromTemplateWizard(models.TransientModel):
_name = "project.task.from.template.wizard"
+ _description = "Create Task from Template Wizard"
project_id = fields.Many2one(
comodel_name='project.project',
@@ -25,9 +26,16 @@ class NewTaskFromTemplateWizard(models.TransientModel):
def default_get(self, fields_list):
res = super().default_get(fields_list)
- if 'project_id' in fields_list:
- active_id = self.env.context.get('active_id', False)
- res.update({'project_id': active_id})
+ active_id = self.env.context.get('active_id', False)
+ active_model = self.env.context.get('active_model', False)
+ if not active_model:
+ params = self.env.context.get('params', False)
+ active_model = params.get('model', False)
+
+ if active_model == 'project.task.template' and active_id and 'task_template_id' in fields_list:
+ res.update({'task_template_id': active_id})
+ if active_model == 'project.task' and 'project_id' in fields_list:
+ res.update({'project_id': self.env.ref('industry_fsm.fsm_project').id})
return res
def action_create_task_from_template(self):
diff --git a/bemade_fsm/wizard/new_task_from_template.xml b/bemade_fsm/wizard/new_task_from_template.xml
index 49a22ce..1290b8f 100644
--- a/bemade_fsm/wizard/new_task_from_template.xml
+++ b/bemade_fsm/wizard/new_task_from_template.xml
@@ -5,10 +5,6 @@
project.task.from.template.wizard
+
+ New Task from Template
+ project.task.from.template.wizard
+
+ form
+ new
+
\ No newline at end of file