diff --git a/project_tasks_from_templates/README.rst b/project_tasks_from_templates/README.rst index 4c8b8f959..6c339f099 100755 --- a/project_tasks_from_templates/README.rst +++ b/project_tasks_from_templates/README.rst @@ -1,11 +1,24 @@ -Project Templates v15 -===================== -This module will helps you to create projects and tasks from templates. +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +Project Templates +================= +This module will help you to create projects and tasks from templates. + +Features +======== +* Allows to create project from project template. +* Multiple levels of tasks and sub tasks from template. Configuration ============= -* No additional configurations needed +Nothing to configure. + +License +------- +General Public License, Version 3 (AGPL v3). +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) Company ------- @@ -13,8 +26,8 @@ Company Credits ------- -* Developers: Ajmunnisa KP @ cybrosys, odoo@cybrosys.com - +* Developers (V15) Ajmunnisa KP, + Contact: odoo@cybrosys.com Contacts -------- @@ -31,3 +44,9 @@ Maintainer :target: https://cybrosys.com This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/project_tasks_from_templates/__init__.py b/project_tasks_from_templates/__init__.py index 8bf80ef3c..2ad5188e6 100755 --- a/project_tasks_from_templates/__init__.py +++ b/project_tasks_from_templates/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -############################################################################# +############################################################################### # # Cybrosys Technologies Pvt. Ltd. # -# Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: Cybrosys Technogies @cybrosys(odoo@cybrosys.com) +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) # # You can modify it under the terms of the GNU AFFERO # GENERAL PUBLIC LICENSE (AGPL v3), Version 3. @@ -18,6 +18,5 @@ # (AGPL v3) along with this program. # If not, see . # -############################################################################# - +############################################################################### from . import models diff --git a/project_tasks_from_templates/__manifest__.py b/project_tasks_from_templates/__manifest__.py index ad6fba0d5..7119a02a9 100755 --- a/project_tasks_from_templates/__manifest__.py +++ b/project_tasks_from_templates/__manifest__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -############################################################################# +############################################################################### # # Cybrosys Technologies Pvt. Ltd. # -# Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: Cybrosys Technogies @cybrosys(odoo@cybrosys.com) +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) # # You can modify it under the terms of the GNU AFFERO # GENERAL PUBLIC LICENSE (AGPL v3), Version 3. @@ -18,24 +18,31 @@ # (AGPL v3) along with this program. # If not, see . # -############################################################################# - +############################################################################### { 'name': 'Project Templates', 'version': '15.0.1.0.0', 'category': "Project", - 'summary': """This app allows your project team to create project template and task template""", - 'description': "This app allows your project team to create project template and task template", + 'summary': "This app allows your project team to create project" + "template and task template", + 'description': "When faced with the need to create multiple projects that " + "share similar tasks, manually inputting data such as task " + "names, descriptions, and assigned individuals can be " + "time-consuming. In such situations, this module offers " + "assistance in creating and managing projects based on " + "pre-defined templates.", 'author': 'Cybrosys Techno Solutions', - 'website': "https://www.cybrosys.com", 'company': 'Cybrosys Techno Solutions', 'maintainer': 'Cybrosys Techno Solutions', - 'depends': ['base', 'project'], + 'website': "https://www.cybrosys.com", + 'depends': ['project'], 'data': [ - 'views/project_task.xml', 'security/ir.model.access.csv', + 'views/project_project_views.xml', + 'views/project_task_custom_views.xml', + 'views/project_task_template_views.xml', ], - 'images': ['static/description/banner.png'], + 'images': ['static/description/banner.jpg'], 'license': 'AGPL-3', 'installable': True, 'auto_install': False, diff --git a/project_tasks_from_templates/doc/RELEASE_NOTES.md b/project_tasks_from_templates/doc/RELEASE_NOTES.md index 4dd750d3c..31d6aca71 100755 --- a/project_tasks_from_templates/doc/RELEASE_NOTES.md +++ b/project_tasks_from_templates/doc/RELEASE_NOTES.md @@ -1,6 +1,5 @@ ## Module - -#### 05.06.2022 +#### 09.01.2024 #### Version 15.0.1.0.0 #### ADD -Initial Commit for Project Templates +- Initial Commit for Project Templates diff --git a/project_tasks_from_templates/models/__init__.py b/project_tasks_from_templates/models/__init__.py index a2fdf63ea..4cd63f36f 100755 --- a/project_tasks_from_templates/models/__init__.py +++ b/project_tasks_from_templates/models/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -############################################################################# +############################################################################### # # Cybrosys Technologies Pvt. Ltd. # -# Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: Cybrosys Technogies @cybrosys(odoo@cybrosys.com) +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) # # You can modify it under the terms of the GNU AFFERO # GENERAL PUBLIC LICENSE (AGPL v3), Version 3. @@ -18,6 +18,7 @@ # (AGPL v3) along with this program. # If not, see . # -############################################################################# - -from . import project +############################################################################### +from . import project_project +from . import project_task_custom +from . import project_task_template diff --git a/project_tasks_from_templates/models/project.py b/project_tasks_from_templates/models/project.py deleted file mode 100755 index c3807f31c..000000000 --- a/project_tasks_from_templates/models/project.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################# -# -# Cybrosys Technologies Pvt. Ltd. -# -# Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: Cybrosys Technogies @cybrosys(odoo@cybrosys.com) -# -# You can modify it under the terms of the GNU AFFERO -# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. -# -# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE -# (AGPL v3) along with this program. -# If not, see . -# -############################################################################# - -from odoo import models, fields, api, _ - - -class Project(models.Model): - _inherit = 'project.project' - - project_template_id = fields.Many2one('project.task.template') - - def create_task(self, item, parent): - vals = {'project_id': self.id, - 'name': item.name, - 'parent_id': parent, - 'stage_id': self.env['project.task.type'].search([('sequence', '=', 1)], limit=1).id, - 'user_ids': item.user_ids, - 'description': item.description - } - task_id = self.env['project.task'].create(vals).id - for sub_task in item.child_ids: - self.create_task(sub_task, task_id) - - def action_create_project_from_template(self): - template_id = self.project_template_id - for item in template_id.task_ids: - self.create_task(item, False) - return { - 'view_mode': 'form', - 'res_model': 'project.project', - 'res_id': self.id, - 'type': 'ir.actions.act_window', - 'context': self._context - } - - -class ProjectTaskCustom(models.Model): - _name = 'project.task.custom' - - name = fields.Char("Name", required=True) - project_template_id = fields.Many2one('project.task.template') - description = fields.Text("Task Description") - user_ids = fields.Many2many('res.users', relation='project_task_custom_user_rel', column1='task_id', - column2='user_id', - string='Assignees', tracking=True) - parent_id = fields.Many2one('project.task.custom', string='Parent Task', index=True) - child_ids = fields.One2many('project.task.custom', 'parent_id', string="Sub-tasks") - - def action_open_task(self): - return { - 'view_mode': 'form', - 'res_model': 'project.task.custom', - 'res_id': self.id, - 'type': 'ir.actions.act_window', - 'context': self._context - } - - -class ProjectTaskTemplate(models.Model): - _name = 'project.task.template' - - name = fields.Char("Template name", translate=True) - task_ids = fields.One2many('project.task.custom', 'project_template_id', string="Tasks") diff --git a/project_tasks_from_templates/models/project_project.py b/project_tasks_from_templates/models/project_project.py new file mode 100755 index 000000000..f2b1e60eb --- /dev/null +++ b/project_tasks_from_templates/models/project_project.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models + + +class ProjectProject(models.Model): + """ This class extends the 'project.project' model to add a many2one + field for selecting project task template. + Methods: + action_create_project_from_template(): + Creates a new project based on the selected project template. + _create_task(item, parent): + Creates a new project task for the given item and attaches + it to the current project. + """ + _inherit = 'project.project' + + project_template_id = fields.Many2one( + 'project.task.template', + string='Project Template', + help='Select a project task template to use for this project.') + + def action_create_project_from_template(self): + """ Creates a new project based on the selected project template. + Returns: + dict: Action configuration to open the project form. + """ + if not self.project_template_id.stage_ids: + for item in self.project_template_id.task_ids: + self._create_task(item, False) + return { + 'view_mode': 'form', + 'res_model': 'project.project', + 'res_id': self.id, + 'type': 'ir.actions.act_window', + 'context': self._context + } + else: + for item in self.project_template_id.stage_ids: + if self.id not in item.project_stage_id.project_ids.ids: + item.project_stage_id.project_ids = [(4, self.id)] + for task in item.task_ids: + self._create_task_with_stage(task, item.project_stage_id, + False) + + def _create_task(self, item, parent): + """Creates a new project task for the given item and attaches it to + the current project. + Args: + item (models.Model): project task + parent (int): id of parent project task + """ + + task = self.env['project.task'].sudo().create({ + 'project_id': self.id, + 'name': item.name, + 'parent_id': parent, + 'stage_id': self.env['project.task.type'].search( + [('sequence', '=', 1)], limit=1).id, + 'user_ids': item.user_ids, + 'description': item.description, + 'kanban_state': item.state or 'normal', + }) + for sub_task in item.child_ids: + self._create_task(sub_task, task.id) + + def _create_task_with_stage(self, item, stage, parent=False): + """Creates a new project task with stage for the given item and attaches it to + the current project. + Args: + item (models.Model): project task + parent (int): id of parent project task + """ + + task = self.env['project.task'].sudo().create({ + 'project_id': self.id, + 'name': item.name, + 'parent_id': parent, + 'stage_id': stage.id, + 'user_ids': item.user_ids, + 'description': item.description, + 'kanban_state': item.state or 'normal', + }) + for sub_task in item.child_ids: + self._create_task_with_stage(sub_task, stage, task.id) diff --git a/project_tasks_from_templates/models/project_task_custom.py b/project_tasks_from_templates/models/project_task_custom.py new file mode 100644 index 000000000..03c4f03b4 --- /dev/null +++ b/project_tasks_from_templates/models/project_task_custom.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models + + +class ProjectTaskCustom(models.Model): + """Customized version of the 'project.task' model to support templates + and sub-tasks + Methods: + action_open_task(): + Returns an action to open the current task in a form view""" + _name = 'project.task.custom' + _description = 'Project Task Custom' + + name = fields.Char(string='Name', required=True, + help='Enter the name of the task') + project_template_id = fields.Many2one( + 'project.task.template', string='Project Template', + help='Select a project task template to use for this task.') + description = fields.Html(string='Task Description', + help='Enter a description for the task.') + user_ids = fields.Many2many( + 'res.users', relation='project_task_custom_user_rel', column1='task_id', + column2='user_id', string='Assignees', tracking=True, + help='Select the users who are assigned to this task.') + parent_id = fields.Many2one( + 'project.task.custom', string='Parent Task', index=True, + help='Select the parent task, if any.') + child_ids = fields.One2many( + 'project.task.custom', 'parent_id', string='Sub-Tasks', + help='List of sub-tasks, if any.') + show_tasks_page = fields.Boolean( + compute='_compute_show_tasks_page', + string="Show Tasks Page", + readonly=False) + + state = fields.Selection([ + ('normal', 'In Progress'), + ('done', 'Ready'), + ('blocked', 'Blocked')], string='State', + default='normal', required=True) + + def action_open_task(self): + """ Action method to open the current task in a form view. + Returns: + dict: Action configuration to open the task form. + """ + return { + 'view_mode': 'form', + 'res_model': 'project.task.custom', + 'res_id': self.id, + 'type': 'ir.actions.act_window', + 'context': self._context + } + + def _compute_show_tasks_page(self): + """ Compute function to determine whether Sub-Tasks are enabled. + This method computes the value of the 'show_tasks_page' field for each + record based on whether Sub-Tasks are enabled or not. If Sub-Tasks + are enabled, 'show_tasks_page' is set to True, allowing the display + of Sub-Tasks. If Sub-Tasks are not enabled, 'show_tasks_page' is set + to False. + """ + for task in self: + task.show_tasks_page = self.env.user.has_group( + 'project.group_subtask_project') diff --git a/project_tasks_from_templates/models/project_task_template.py b/project_tasks_from_templates/models/project_task_template.py new file mode 100644 index 000000000..bb68baad2 --- /dev/null +++ b/project_tasks_from_templates/models/project_task_template.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models , api + + +class ProjectTaskTemplate(models.Model): + """A model to define task templates for projects.""" + _name = 'project.task.template' + _description = 'Project Task Template' + + name = fields.Char(string='Template Name', translate=True, + help='Name for the task template.') + task_ids = fields.One2many( + 'project.task.custom', 'project_template_id', + string='Tasks', + help='List of the tasks associated with this template.') + stage_ids = fields.One2many( + 'project.stage', 'project_template_id', + string='Stages', + help='List of the stages associated with this template.') + + +class ProjectStage(models.Model): + """A model to define task templates for projects.""" + _name = 'project.stage' + _order = "sequence,id" + + project_template_id = fields.Many2one( + 'project.task.template', string='Project Template', + help='Select a project task template to use for this task.') + project_stage_id = fields.Many2one( + 'project.task.type', string='Project Stage', + help='Select a project stage. ',required=True) + task_ids = fields.Many2many( + 'project.task.custom', + help='Choose the tasks corresponding to each stage') + + sequence = fields.Integer(related="project_stage_id.sequence",readonly=False) + + +class ProjectTaskType(models.Model): + _inherit = "project.task.type" + + project_template_id = fields.Many2one( + 'project.task.template') diff --git a/project_tasks_from_templates/security/ir.model.access.csv b/project_tasks_from_templates/security/ir.model.access.csv index f2ec0c49b..3e94ed2a8 100755 --- a/project_tasks_from_templates/security/ir.model.access.csv +++ b/project_tasks_from_templates/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_project_project_templates_manager,project.project.templates,model_project_task_template,project.group_project_manager,1,1,1,1 -access_project_project_templates_task_manager,project.project.templates.tasks,model_project_task_custom,project.group_project_manager,1,1,1,1 +access_project_task_template_manager,access.project.task.template.manager,model_project_task_template,project.group_project_manager,1,1,1,1 +access_project_task_custom_manager,access.project.task.custom.manager,model_project_task_custom,project.group_project_manager,1,1,1,1 +access_project_stage,access.project.stage,model_project_stage,project.group_project_manager,1,1,1,1 diff --git a/project_tasks_from_templates/static/description/assets/icons/capture (1).png b/project_tasks_from_templates/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/icons/capture (1).png differ diff --git a/project_tasks_from_templates/static/description/assets/icons/img.png b/project_tasks_from_templates/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/icons/img.png differ diff --git a/project_tasks_from_templates/static/description/assets/icons/photo-capture.png b/project_tasks_from_templates/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/icons/photo-capture.png differ diff --git a/project_tasks_from_templates/static/description/assets/misc/Cybrosys R.png b/project_tasks_from_templates/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/misc/Cybrosys R.png differ diff --git a/project_tasks_from_templates/static/description/assets/misc/email.svg b/project_tasks_from_templates/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/phone.svg b/project_tasks_from_templates/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/star (1) 2.svg b/project_tasks_from_templates/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/support (1) 1.svg b/project_tasks_from_templates/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/support-email.svg b/project_tasks_from_templates/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/tick-mark.svg b/project_tasks_from_templates/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/whatsapp 1.svg b/project_tasks_from_templates/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/misc/whatsapp.svg b/project_tasks_from_templates/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/project_tasks_from_templates/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/project_tasks_from_templates/static/description/assets/modules/1.jpg b/project_tasks_from_templates/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..e257ddb23 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/modules/1.jpg differ diff --git a/project_tasks_from_templates/static/description/assets/modules/2.png b/project_tasks_from_templates/static/description/assets/modules/2.png new file mode 100644 index 000000000..164eb62c7 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/modules/2.png differ diff --git a/project_tasks_from_templates/static/description/assets/modules/3.png b/project_tasks_from_templates/static/description/assets/modules/3.png new file mode 100644 index 000000000..57eebc5b2 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/modules/3.png differ diff --git a/project_tasks_from_templates/static/description/assets/modules/4.png b/project_tasks_from_templates/static/description/assets/modules/4.png new file mode 100755 index 000000000..c7d2c5117 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/modules/4.png differ diff --git a/project_tasks_from_templates/static/description/assets/modules/5.png b/project_tasks_from_templates/static/description/assets/modules/5.png new file mode 100644 index 000000000..5acf9a06a Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/modules/5.png differ diff --git a/project_tasks_from_templates/static/description/assets/modules/6.png b/project_tasks_from_templates/static/description/assets/modules/6.png new file mode 100644 index 000000000..1f51895f9 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/modules/6.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/1.png b/project_tasks_from_templates/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..003acdc33 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/1.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/2.png b/project_tasks_from_templates/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..4d9f41b89 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/2.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/3.png b/project_tasks_from_templates/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..54af5dc14 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/3.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/4.png b/project_tasks_from_templates/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..6db52cae5 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/4.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/5.png b/project_tasks_from_templates/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..479e6d778 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/5.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/6.png b/project_tasks_from_templates/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..87a033115 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/6.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/7.png b/project_tasks_from_templates/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..41ed71414 Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/7.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/8.png b/project_tasks_from_templates/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..333ce533a Binary files /dev/null and b/project_tasks_from_templates/static/description/assets/screenshots/8.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/screenshot_3.png b/project_tasks_from_templates/static/description/assets/screenshots/screenshot_3.png index 1a6bac7d9..f303ad43a 100644 Binary files a/project_tasks_from_templates/static/description/assets/screenshots/screenshot_3.png and b/project_tasks_from_templates/static/description/assets/screenshots/screenshot_3.png differ diff --git a/project_tasks_from_templates/static/description/assets/screenshots/screenshot_4.png b/project_tasks_from_templates/static/description/assets/screenshots/screenshot_4.png index 593dc6919..19f3def6a 100644 Binary files a/project_tasks_from_templates/static/description/assets/screenshots/screenshot_4.png and b/project_tasks_from_templates/static/description/assets/screenshots/screenshot_4.png differ diff --git a/project_tasks_from_templates/views/project_project_views.xml b/project_tasks_from_templates/views/project_project_views.xml new file mode 100755 index 000000000..ae7911a98 --- /dev/null +++ b/project_tasks_from_templates/views/project_project_views.xml @@ -0,0 +1,33 @@ + + + + + project.project.view.form.inherit.project.tasks.from.templates + project.project + + + + + + +
+
+
+
+
+ + + project.project.view.form.simplified + project.project + + + +