[CLN] mail_activity_plan: delete add-on #2

Merged
stephansainleger merged 1 commits from 16.0-remove_mail_activity_plan into 16.0 2025-05-19 16:00:21 +00:00
10 changed files with 0 additions and 561 deletions

View File

@@ -1,72 +0,0 @@
====================
mail_activity_plan
====================
Installation
============
Use Odoo normal module installation procedure to install ``mail_activity_plan``.
Configuration
=============
To create activities plans, go to Settings > Technical > Discuss > Activity plans :
Provice a name
Add activity templates :
Select an activity type, write a summary. Optionnaly assigne to a user and write a note.
A plan can be related to many activity templates
A activity template can be related to only one plan
A activity template is related to only one activity type
Usage
=====
Once your plan is configured, you can define a server-action to launch automatically the activities for a choose model
Go to Settings > Technical > Actions > Server Actions
Provide a name, select a model, select action "[generate_activities]", select a plan.
Once your new server action is configured, go to an instance of the chosen model,
click on the server action to generate automatically the activities of the plan.
If nobody is assigned to a activity, the current user will be automatically assigned.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website <https://github.com/elabore-coop/ux-tools/issues>`_. In case of
trouble, please check there if your issue has already been
reported. If you spotted it first, help us smashing it by providing a
detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Laetitia Da Costa (https://github.com/LaetitiaElabore)
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -1,4 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models

View File

@@ -1,93 +0,0 @@
# Copyright 2022 Laetitia Élabore (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "mail_activity_plan",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://github.com/elabore-coop/ux-tools",
"maintainer": "Laetitia Da Costa",
"license": "AGPL-3",
"category": "Tools",
"summary": "Create activities plans through action server",
"description": """
:image: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
=================
mail_activity_plan
=================
Create activities plans through action server
Installation
============
Install ``mail_activity_plan``, all dependencies will be installed by default.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website
<https://github.com/elabore-coop/ux-tools/issues>`_. In case of
trouble, please check there if your issue has already been
reported. If you spotted it first, help us smashing it by providing a
detailed and welcomed feedback.
Credits
=======
Images
------
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_.
Contributors
------------
* Stéphan Sainléger <https://github.com/stephansainleger>
* Laetitia Da Costa
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.
""",
# any module necessary for this one to work correctly
"depends": [
"base",
],
"qweb": [
# "static/src/xml/*.xml",
],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [
"security/ir.model.access.csv",
"views/mail_activity_plan_view.xml",
"views/ir_actions_server_form_plan.xml",
],
# only loaded in demonstration mode
"demo": [],
"js": [],
"css": [],
"installable": True,
# Install this module automatically if all dependency have been previously
# and independently installed. Used for synergetic or glue modules.
"auto_install": False,
"application": False,
}

View File

@@ -1,204 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_activity_plan
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-16 15:18+0000\n"
"PO-Revision-Date: 2023-10-16 15:18+0000\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: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_base_automation__state
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_actions_server__state
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_cron__state
msgid "Action To Do"
msgstr "Action à effectuer"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__active
msgid "Active"
msgstr ""
#. module: mail_activity_plan
#: model_terms:ir.ui.view,arch_db:mail_activity_plan.mail_activity_plan_view_form
msgid "Activities"
msgstr "Activités"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__mail_activity_type_id
msgid "Activity Type"
msgstr "Type d'activité"
#. module: mail_activity_plan
#: model:ir.actions.act_window,name:mail_activity_plan.mail_activity_plan_action
#: model:ir.ui.menu,name:mail_activity_plan.menu_mail_activity_plan
msgid "Activity plans"
msgstr "Plans d'activités"
#. module: mail_activity_plan
#: model_terms:ir.ui.view,arch_db:mail_activity_plan.mail_activity_plan_view_form
#: model_terms:ir.ui.view,arch_db:mail_activity_plan.mail_activity_plan_view_search
msgid "Archived"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__user_id
msgid "Assigned to"
msgstr "Assigné à"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_base_automation__plan_id
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_actions_server__plan_id
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_cron__plan_id
msgid "Available plans"
msgstr "Plans d'activité disponibles"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__create_uid
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__create_uid
msgid "Created by"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__create_date
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__create_date
msgid "Created on"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_actions_server__display_name
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__display_name
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: mail_activity_plan
#: model:ir.model.fields.selection,name:mail_activity_plan.selection__ir_actions_server__state__generate_activities
msgid "Generate activities from a plan"
msgstr "Générer les activités d'un plan d'activités"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_actions_server__id
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__id
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__id
msgid "ID"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_ir_actions_server____last_update
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan____last_update
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__write_uid
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__write_uid
msgid "Last Updated by"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__write_date
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__write_date
msgid "Last Updated on"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__mail_activity_plan_id
msgid "Mail Activity Plan"
msgstr "Plan d'activités"
#. module: mail_activity_plan
#: model:ir.model,name:mail_activity_plan.model_mail_activity_plan
msgid "Mail activity plan"
msgstr "Plan d'activités"
#. module: mail_activity_plan
#: model:ir.model,name:mail_activity_plan.model_mail_activity_template
msgid "Mail activity template"
msgstr "Modèle d'activités"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__name
msgid "Name"
msgstr "Nom"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__note
msgid "Note"
msgstr ""
#. module: mail_activity_plan
#: model_terms:ir.ui.view,arch_db:mail_activity_plan.mail_activity_plan_view_search
msgid "Plan"
msgstr ""
#. module: mail_activity_plan
#: model_terms:ir.ui.view,arch_db:mail_activity_plan.mail_activity_plan_view_form
#: model_terms:ir.ui.view,arch_db:mail_activity_plan.mail_activity_plan_view_tree
msgid "Planning"
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__sequence
msgid "Sequence"
msgstr "Ordre"
#. module: mail_activity_plan
#: model:ir.model,name:mail_activity_plan.model_ir_actions_server
msgid "Server Action"
msgstr "Action du serveur"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_template__summary
msgid "Summary"
msgstr "Résumé"
#. module: mail_activity_plan
#: model:ir.model.fields,field_description:mail_activity_plan.field_mail_activity_plan__mail_activity_template_ids
msgid "Template Activities"
msgstr "Modèles d'activités"
#. module: mail_activity_plan
#: model:ir.model.fields,help:mail_activity_plan.field_base_automation__state
#: model:ir.model.fields,help:mail_activity_plan.field_ir_actions_server__state
#: model:ir.model.fields,help:mail_activity_plan.field_ir_cron__state
msgid ""
"Type of server action. The following values are available:\n"
"- 'Execute Python Code': a block of python code that will be executed\n"
"- 'Create': create a new record with new values\n"
"- 'Update a Record': update the values of a record\n"
"- 'Execute several actions': define an action that triggers several other server actions\n"
"- 'Send Email': automatically send an email (Discuss)\n"
"- 'Add Followers': add followers to a record (Discuss)\n"
"- 'Create Next Activity': create an activity (Discuss)"
msgstr ""
"Type d'action serveur. Les valeurs suivantes sont disponibles:\n"
"- 'Executer du code Python': un bloc de code python qui sera exécuté\n"
"- 'Créer': créer un nouvel enregistrement avec de nouvelles valeurs\n"
"- 'Mettre à jour un enregistrement': mettre à jour les valeurs d'un enregistrement\n"
"- 'Executer plusieurs actions': définir une action qui déclenche plusieurs autres actions serveur\n"
"- 'Envoyer E-Mail': envoyer un e-mail automatiquement (Discutez)\n"
"- 'Ajouter Abonnés': ajouter des abonnés à un enregistrement (Discutez)\n"
"- 'Créer une Nouvelle Activité': créer une activité (Discutez)\n"
"- 'Générer les activités d'un plan d'activités': créer une action générant automatiquement les activités du plan"
#. module: mail_activity_plan
#: model:ir.model.fields,help:mail_activity_plan.field_mail_activity_template__sequence
msgid "Used to order activities."
msgstr ""
#. module: mail_activity_plan
#: model:ir.model.fields,help:mail_activity_plan.field_base_automation__plan_id
#: model:ir.model.fields,help:mail_activity_plan.field_ir_actions_server__plan_id
#: model:ir.model.fields,help:mail_activity_plan.field_ir_cron__plan_id
msgid "choose a plan to add in server action options"
msgstr ""

View File

@@ -1 +0,0 @@
from . import ir_actions, mail_activity_plan

View File

@@ -1,32 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class IrActionsServer(models.Model):
""" Add activity plan option in server actions. """
_inherit = 'ir.actions.server'
state = fields.Selection(selection_add=[('generate_activities', 'Generate activities from a plan')],
ondelete={'generate_activities': 'cascade'})
plan_id = fields.Many2one('mail.activity.plan', string='Available plans', help='choose a plan to add in server action options')
def _run_action_generate_activities_multi(self, eval_context=None):
'''
Function called automaticly when lauching action server
See ir_actions._get_runner()
'''
records = self.env[self.model_name].browse(self._context.get('active_ids', self._context.get('active_id')))
for record in records :
for mail_activity_template in self.plan_id.mail_activity_template_ids:
record.activity_schedule(
activity_type_id=mail_activity_template.mail_activity_type_id.id,
summary=mail_activity_template.summary,
note=mail_activity_template.note,
user_id=self.env.uid if not mail_activity_template.user_id else mail_activity_template.user_id.id,
date_deadline=self.env['mail.activity']._calculate_date_deadline(mail_activity_template.mail_activity_type_id)
)
return False

View File

@@ -1,46 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, api, fields, models
class MailActivityTemplate(models.Model):
'''
Describe activities to run when lauching the associated plan
'''
_name = 'mail.activity.template'
_description = 'Mail activity template'
_order = 'sequence'
_rec_name = 'summary'
mail_activity_plan_id = fields.Many2one('mail.activity.plan', ondelete='restrict')
mail_activity_type_id = fields.Many2one(
'mail.activity.type', 'Activity Type',
default=lambda self: self.env.ref('mail.mail_activity_data_todo'),
ondelete='restrict'
)
sequence = fields.Integer('Sequence', default=1, help="Used to order activities.")
summary = fields.Char('Summary')
user_id = fields.Many2one('res.users', string='Assigned to')
note = fields.Html('Note')
class MailActivityPlan(models.Model):
'''
Create a plan
A plan is linked to many templates of mail activity (mail.activity.template)
'''
_name = 'mail.activity.plan'
_description = 'Mail activity plan'
@api.returns('self', lambda value: value.id)
def copy(self, default=None):
default = dict(default or {},
name=_("%s (copy)", self.name))
return super(MailActivityPlan, self).copy(default=default)
name = fields.Char('Name', required=True)
mail_activity_template_ids = fields.One2many('mail.activity.template', 'mail_activity_plan_id', string='Template Activities', copy=True)
active = fields.Boolean(default=True)

View File

@@ -1,3 +0,0 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_mail_activity_plan,mail_activity_plan,model_mail_activity_plan,,1,1,1,1
access_mail_activity_template,mail_activity_template,model_mail_activity_template,,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_mail_activity_plan mail_activity_plan model_mail_activity_plan 1 1 1 1
3 access_mail_activity_template mail_activity_template model_mail_activity_template 1 1 1 1

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="view_server_action_form_template">
<field name="name">ir.actions.server.form</field>
<field name="model">ir.actions.server</field>
<field name="inherit_id" ref="base.view_server_action_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='state']" position="after">
<field name="plan_id" attrs="{'invisible': [('state', '!=', 'generate_activities')]}"/>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -1,91 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="mail_activity_plan_view_search" model="ir.ui.view">
<field name="name">mail.activity.plan.view.search</field>
<field name="model">mail.activity.plan</field>
<field name="arch" type="xml">
<search string="Plan">
<field name="name"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
</search>
</field>
</record>
<record id="mail_activity_plan_view_tree" model="ir.ui.view">
<field name="name">mail.activity.plan.view.tree</field>
<field name="model">mail.activity.plan</field>
<field name="arch" type="xml">
<tree string="Planning">
<field name="name"/>
</tree>
</field>
</record>
<record id="mail_activity_plan_view_form" model="ir.ui.view">
<field name="name">mail.activity.plan.view.form</field>
<field name="model">mail.activity.plan</field>
<field name="arch" type="xml">
<form string="Planning">
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name"/>
</h1>
</div>
<notebook>
<page string="Activity Templates">
<field name="active" invisible="1"/>
<field name="mail_activity_template_ids">
<tree>
<field name="sequence" widget="handle"/>
<field name="mail_activity_type_id"/>
<field name="summary"/>
<field name="user_id"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="mail_activity_template_view_form" model="ir.ui.view">
<field name="name">mail.activity.template.view.form</field>
<field name="model">mail.activity.template</field>
<field name="arch" type="xml">
<form string="Activity">
<sheet>
<group>
<field name="mail_activity_type_id"/>
<field name="summary"/>
<field name="user_id"/>
<field name="note"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="mail_activity_plan_action" model="ir.actions.act_window">
<field name="name">Activity plans</field>
<field name="res_model">mail.activity.plan</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="mail_activity_plan_view_search"/>
</record>
<menuitem
id="menu_mail_activity_plan"
action="mail_activity_plan_action"
parent="mail.mail_menu_technical"
sequence="12"
/>
</data>
</odoo>