[NEW] training-tools addons
This commit is contained in:
91
learning_event_partner/README.rst
Normal file
91
learning_event_partner/README.rst
Normal file
@@ -0,0 +1,91 @@
|
||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
|
||||
======================
|
||||
Learning Event Partner
|
||||
======================
|
||||
|
||||
In learning session you may have many speaker / teacher. This module add the management for this case.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install this module, you need to:
|
||||
|
||||
#. Do this ...
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To configure this module, you need to:
|
||||
|
||||
#. Go to ...
|
||||
|
||||
.. figure:: path/to/local/image.png
|
||||
:alt: alternative description
|
||||
:width: 600 px
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To use this module, you need to:
|
||||
|
||||
#. Go to ...
|
||||
|
||||
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
||||
:alt: Try me on Runbot
|
||||
:target: https://runbot.odoo-community.org/runbot/{repo_id}/{branch}
|
||||
|
||||
.. repo_id is available in https://github.com/OCA/maintainer-tools/blob/master/tools/repos_with_ids.txt
|
||||
.. branch is "8.0" for example
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
* ...
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues
|
||||
<https://github.com/OCA/{project_repo}/issues>`_. In case of trouble, please
|
||||
check there if your issue has already been reported. If you spotted it first,
|
||||
help us smash it by providing detailed and welcomed feedback.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Images
|
||||
------
|
||||
|
||||
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Firstname Lastname <email.address@example.org>
|
||||
* Second Person <second.person@example.org>
|
||||
|
||||
Funders
|
||||
-------
|
||||
|
||||
The development of this module has been financially supported by:
|
||||
|
||||
* Company 1 name
|
||||
* Company 2 name
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
To contribute to this module, please visit https://odoo-community.org.
|
1
learning_event_partner/__init__.py
Normal file
1
learning_event_partner/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
21
learning_event_partner/__manifest__.py
Normal file
21
learning_event_partner/__manifest__.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
{
|
||||
"name": "Learning Event Partner",
|
||||
"version": "16.0.0.0.0",
|
||||
"depends": [
|
||||
#'__export__',
|
||||
"base",
|
||||
"event",
|
||||
"hr",
|
||||
],
|
||||
"author": "Nicolas JEUDY",
|
||||
"installable": True,
|
||||
"data": [
|
||||
"views/event_menu_view.xml",
|
||||
"views/event_speakers_view.xml",
|
||||
"views/event_event_view.xml",
|
||||
"views/hr_employee_views.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
}
|
465
learning_event_partner/i18n/fr.po
Normal file
465
learning_event_partner/i18n/fr.po
Normal file
@@ -0,0 +1,465 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * learning_event_partner
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-29 18:16+0000\n"
|
||||
"PO-Revision-Date: 2021-11-29 19:23+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: \n"
|
||||
"Language: fr\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr "Action necessaire"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr "Status de l'activité"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr "Icon Type d'activité"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.actions.act_window,help:learning_event_partner.act_speakers_from_event
|
||||
msgid "Add new speakers to this event"
|
||||
msgstr "Ajouter un nouvel intervenant pour cet évènement"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr "Pièce jointes"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: code:addons/learning_event_partner/models/event_speaker_stage.py:0
|
||||
#, python-format
|
||||
msgid "Blocked"
|
||||
msgstr "Blocké"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_kanban
|
||||
msgid "By"
|
||||
msgstr "Par"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__create_uid
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__create_uid
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__create_date
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__create_date
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model,name:learning_event_partner.model_event_discipline
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__discipline_id
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Discipline"
|
||||
msgstr "Discipline"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__display_name
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_event__display_name
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__display_name
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Employee"
|
||||
msgstr "Employé"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__pipe_end
|
||||
msgid "End Stage"
|
||||
msgstr "Stage final"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model,name:learning_event_partner.model_event_event
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__event_id
|
||||
msgid "Event"
|
||||
msgstr "Événement"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker_stage__pipe_end
|
||||
msgid ""
|
||||
"Events will automatically be moved into this stage when they are finished. "
|
||||
"The event moved into this stage will automatically be set as green."
|
||||
msgstr ""
|
||||
"L'intervenant passera automatiquement à ce status quant le traitement sera "
|
||||
"terminé."
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__extra_price
|
||||
msgid "Extra Price"
|
||||
msgstr "Montant Supplément"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__fold
|
||||
msgid "Folded in Kanban"
|
||||
msgstr "Replié en vue Kanban"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Future Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__legend_done
|
||||
msgid "Green Kanban Label"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__legend_normal
|
||||
msgid "Grey Kanban Label"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__has_extra
|
||||
msgid "Has Extra ?"
|
||||
msgstr "Souhait un supplément ?"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__id
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_event__id
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__id
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_exception_icon
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__activity_exception_icon
|
||||
msgid "Icon to indicate an exception activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__message_needaction
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__message_unread
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__message_has_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: code:addons/learning_event_partner/models/event_speaker_stage.py:0
|
||||
#, python-format
|
||||
msgid "In Progress"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline____last_update
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_event____last_update
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker____last_update
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière modification le"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__write_uid
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__write_uid
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__write_date
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__write_date
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Late Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_main_attachment_id
|
||||
msgid "Main Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_ids
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_discipline__name
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__name
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.actions.act_window,help:learning_event_partner.act_speakers_from_event
|
||||
msgid "No Speakers Yet !"
|
||||
msgstr "Aucun intervenant pour le moment !"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__message_needaction_counter
|
||||
msgid "Number of messages which requires an action"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_event__nb_speakers
|
||||
msgid "Number of speaker"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__message_unread_counter
|
||||
msgid "Number of unread messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker_stage__legend_blocked
|
||||
msgid ""
|
||||
"Override the default value displayed for the blocked state for kanban "
|
||||
"selection."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker_stage__legend_done
|
||||
msgid ""
|
||||
"Override the default value displayed for the done state for kanban "
|
||||
"selection."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker_stage__legend_normal
|
||||
msgid ""
|
||||
"Override the default value displayed for the normal state for kanban "
|
||||
"selection."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: code:addons/learning_event_partner/models/event_speaker_stage.py:0
|
||||
#, python-format
|
||||
msgid "Ready for Next Stage"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__legend_blocked
|
||||
msgid "Red Kanban Label"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Search Speakers"
|
||||
msgstr "Rechercher dans les intervenants"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Speaker"
|
||||
msgstr "Intervenant"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.actions.act_window,name:learning_event_partner.action_event_discipline
|
||||
#: model:ir.ui.menu,name:learning_event_partner.menu_event_discipline
|
||||
msgid "Speaker Discipline"
|
||||
msgstr "Discipline de l'intervanant"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.actions.act_window,name:learning_event_partner.action_event_speaker_stage
|
||||
#: model:ir.model,name:learning_event_partner.model_event_speaker_stage
|
||||
msgid "Speaker Stage"
|
||||
msgstr "Status de l'intervenant"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.ui.menu,name:learning_event_partner.event_speaker_stage_menu
|
||||
msgid "Speaker Stages"
|
||||
msgstr "Status des intervenants"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.view_event_form_inherit_learning_event_partner
|
||||
msgid "Speaker for this event"
|
||||
msgstr "Intervenant pour cet évènement."
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.actions.act_window,name:learning_event_partner.act_speakers_from_event
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_event__speaker_ids
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_tree
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.view_event_form_inherit_learning_event_partner
|
||||
msgid "Speakers"
|
||||
msgstr "Intervenants"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__stage_id
|
||||
msgid "Stage"
|
||||
msgstr "Status"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__name
|
||||
msgid "Stage Name"
|
||||
msgstr "Nom du status"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker_stage__description
|
||||
msgid "Stage description"
|
||||
msgstr "Description du status"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__standard_price
|
||||
msgid "Standard Price"
|
||||
msgstr "Prix"
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__activity_state
|
||||
msgid ""
|
||||
"Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Today Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__activity_exception_decoration
|
||||
msgid "Type of the exception activity on record."
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_unread
|
||||
#: model_terms:ir.ui.view,arch_db:learning_event_partner.event_speaker_view_search
|
||||
msgid "Unread Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__message_unread_counter
|
||||
msgid "Unread Messages Counter"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,field_description:learning_event_partner.field_event_speaker__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model.fields,help:learning_event_partner.field_event_speaker__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: learning_event_partner
|
||||
#: model:ir.model,name:learning_event_partner.model_event_speaker
|
||||
msgid "event.speaker"
|
||||
msgstr "event.speaker"
|
3
learning_event_partner/models/__init__.py
Normal file
3
learning_event_partner/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from . import event_event
|
||||
from . import event_speaker
|
||||
from . import event_speaker_stage
|
33
learning_event_partner/models/event_event.py
Normal file
33
learning_event_partner/models/event_event.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# Copyright 2018 Nicolas JEUDY
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
import logging
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class EventEvent(models.Model):
|
||||
_inherit = ["event.event"]
|
||||
|
||||
speaker_ids = fields.One2many("event.speaker", "event_id", string="Speakers")
|
||||
nb_speakers = fields.Integer(
|
||||
string="Number of speaker", readonly=True, compute="_compute_nb_speakers"
|
||||
)
|
||||
|
||||
@api.depends("speaker_ids")
|
||||
def _compute_nb_speakers(self):
|
||||
for event in self:
|
||||
event.nb_speakers = len(event.speaker_ids)
|
||||
|
||||
|
||||
class EventDiscipline(models.Model):
|
||||
_name = "event.discipline"
|
||||
_description = "Discipline"
|
||||
|
||||
name = fields.Char("Name")
|
||||
|
||||
|
||||
class EmployeeDiscipline(models.Model):
|
||||
_inherit = "hr.employee"
|
||||
|
||||
discipline_ids = fields.Many2many("event.discipline", string="Disciplines")
|
52
learning_event_partner/models/event_speaker.py
Normal file
52
learning_event_partner/models/event_speaker.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# Copyright 2018 Nicolas JEUDY
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
# import barcode
|
||||
# from barcode.writer import ImageWriter
|
||||
import base64
|
||||
import logging
|
||||
from io import BytesIO
|
||||
import re
|
||||
import unicodedata
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.addons import decimal_precision as dp
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_name = "event.speaker"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
|
||||
def _get_default_stage_id(self):
|
||||
event_stages = self.env["event.speaker.stage"].search([])
|
||||
return event_stages[0] if event_stages else False
|
||||
|
||||
name = fields.Char("Name", compute="_compute_name", store="True")
|
||||
employee_id = fields.Many2one("hr.employee", string="Speaker")
|
||||
discipline_id = fields.Many2one("event.discipline", string="Discipline")
|
||||
working_hours = fields.Float("Working hours")
|
||||
has_extra = fields.Boolean("Has Extra ?")
|
||||
event_id = fields.Many2one("event.event", string="Event")
|
||||
stage_id = fields.Many2one(
|
||||
"event.speaker.stage",
|
||||
ondelete="restrict",
|
||||
default=_get_default_stage_id,
|
||||
group_expand="_read_group_stage_ids",
|
||||
tracking=True,
|
||||
)
|
||||
discipline_ids = fields.Many2many(
|
||||
"event.discipline", string="discipline", related="employee_id.discipline_ids"
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _read_group_stage_ids(self, stages, domain, order):
|
||||
return self.env["event.speaker.stage"].search([])
|
||||
|
||||
@api.depends("employee_id", "discipline_id")
|
||||
def _compute_name(self):
|
||||
for record in self:
|
||||
name = ""
|
||||
if record.employee_id:
|
||||
name += record.employee_id.name
|
||||
if record.discipline_id:
|
||||
name += " (%s)" % record.discipline_id.name
|
||||
record.name = name
|
38
learning_event_partner/models/event_speaker_stage.py
Normal file
38
learning_event_partner/models/event_speaker_stage.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from odoo import _, fields, models
|
||||
|
||||
|
||||
class EventSpeakerStage(models.Model):
|
||||
_name = "event.speaker.stage"
|
||||
_description = "Speaker Stage"
|
||||
_order = "sequence, name"
|
||||
|
||||
name = fields.Char(string="Stage Name", required=True, translate=True)
|
||||
description = fields.Text(string="Stage description", translate=True)
|
||||
sequence = fields.Integer("Sequence", default=1)
|
||||
fold = fields.Boolean(string="Folded in Kanban", default=False)
|
||||
pipe_end = fields.Boolean(
|
||||
string="End Stage",
|
||||
default=False,
|
||||
help="Events will automatically be moved into this stage when they are finished. The event moved into this stage will automatically be set as green.",
|
||||
)
|
||||
legend_blocked = fields.Char(
|
||||
"Red Kanban Label",
|
||||
default=lambda s: _("Blocked"),
|
||||
translate=True,
|
||||
required=True,
|
||||
help="Override the default value displayed for the blocked state for kanban selection.",
|
||||
)
|
||||
legend_done = fields.Char(
|
||||
"Green Kanban Label",
|
||||
default=lambda s: _("Ready for Next Stage"),
|
||||
translate=True,
|
||||
required=True,
|
||||
help="Override the default value displayed for the done state for kanban selection.",
|
||||
)
|
||||
legend_normal = fields.Char(
|
||||
"Grey Kanban Label",
|
||||
default=lambda s: _("In Progress"),
|
||||
translate=True,
|
||||
required=True,
|
||||
help="Override the default value displayed for the normal state for kanban selection.",
|
||||
)
|
7
learning_event_partner/security/ir.model.access.csv
Normal file
7
learning_event_partner/security/ir.model.access.csv
Normal file
@@ -0,0 +1,7 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_event_speaker_user,event.event.speaker.user,learning_event_partner.model_event_speaker,event.group_event_user,1,0,0,0
|
||||
access_event_speaker_manager,event.event.speaker.manager,learning_event_partner.model_event_speaker,event.group_event_manager,1,1,1,1
|
||||
access_event_discipline_user,event.event.discipline.user,learning_event_partner.model_event_discipline,event.group_event_user,1,0,0,0
|
||||
access_event_discipline_manager,event.event.discipline.manager,learning_event_partner.model_event_discipline,event.group_event_manager,1,1,1,1
|
||||
access_event_speaker_stage_user,event.event.speaker.stage.user,learning_event_partner.model_event_speaker_stage,event.group_event_user,1,0,0,0
|
||||
access_event_speaker_stage_manager,event.event.speaker.stage.manager,learning_event_partner.model_event_speaker_stage,event.group_event_manager,1,1,1,1
|
|
BIN
learning_event_partner/static/description/icon.png
Normal file
BIN
learning_event_partner/static/description/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 257 KiB |
BIN
learning_event_partner/static/img/learning_1024.png
Normal file
BIN
learning_event_partner/static/img/learning_1024.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.0 MiB |
BIN
learning_event_partner/static/img/learning_256.png
Normal file
BIN
learning_event_partner/static/img/learning_256.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 257 KiB |
BIN
learning_event_partner/static/img/learning_512.png
Normal file
BIN
learning_event_partner/static/img/learning_512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 MiB |
22
learning_event_partner/views/event_event_view.xml
Normal file
22
learning_event_partner/views/event_event_view.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="view_event_form_inherit_learning_event_partner" model="ir.ui.view">
|
||||
<field name="name">event.event.view.form.inherit</field>
|
||||
<field name="model">event.event</field>
|
||||
<field name="inherit_id" ref="event.view_event_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="%(learning_event_partner.act_speakers_from_event)d"
|
||||
type="action"
|
||||
class="oe_stat_button"
|
||||
icon="fa-users"
|
||||
help="Speaker for this event">
|
||||
<field name="nb_speakers" widget="statinfo" string="Speakers"/>
|
||||
</button>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
13
learning_event_partner/views/event_menu_view.xml
Normal file
13
learning_event_partner/views/event_menu_view.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<menuitem name="Speaker Discipline"
|
||||
id="menu_event_discipline"
|
||||
sequence="1"
|
||||
parent="event.menu_event_configuration"/>
|
||||
<menuitem name="Speaker Stages"
|
||||
id="event_speaker_stage_menu"
|
||||
sequence="2"
|
||||
parent="event.menu_event_configuration"/>
|
||||
|
||||
</odoo>
|
141
learning_event_partner/views/event_speakers_view.xml
Normal file
141
learning_event_partner/views/event_speakers_view.xml
Normal file
@@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="act_speakers_from_event" model="ir.actions.act_window">
|
||||
<field name="res_model">event.speaker</field>
|
||||
<field name="name">Speakers</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="domain">[('event_id', '=', active_id)]</field>
|
||||
<field name="context">{'default_event_id': active_id}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No Speakers Yet !
|
||||
</p><p>
|
||||
Add new speakers to this event
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_speaker_view_search" model="ir.ui.view">
|
||||
<field name="name">event.speaker.view.search</field>
|
||||
<field name="model">event.speaker</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Speakers">
|
||||
<field name="name" string="Employee" filter_domain="[('name', 'ilike', self)]"/>
|
||||
<field name="discipline_id"/>
|
||||
<field name="has_extra"/>
|
||||
<separator/>
|
||||
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter invisible="1" string="Late Activities" name="activities_overdue" domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
<filter invisible="1" string="Today Activities" name="activities_today" domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all" domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter name="group_discipline" string="Discipline" domain="[]" context="{'group_by': 'discipline_id'}"/>
|
||||
<filter name="group_employee" string="Speaker" domain="[]" context="{'group_by': 'employee_id'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="discipline_id" icon="fa-address-card " enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_speaker_view_kanban" model="ir.ui.view">
|
||||
<field name="name">event.speaker.kanban</field>
|
||||
<field name="model">event.speaker</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_event_attendee_kanban_view" default_group_by="stage_id" default_order="name, create_date desc" sample="1">
|
||||
<field name="name"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="has_extra" />
|
||||
<field name="discipline_id"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click o_event_registration_kanban container-fluid p-0">
|
||||
<div class="row h-100">
|
||||
<div class="col-9 pr-0">
|
||||
<div class="oe_kanban_content h-100">
|
||||
<div class="o_kanban_record_body pt-1 pl-2 h-100 d-flex flex-column">
|
||||
<b class="o_kanban_record_title"><field name="name"/></b>
|
||||
<field name="event_id" invisible="context.get('default_event_id')" />
|
||||
<span attrs="{'invisible': [('employee_id', '=', False)]}">By <field name="employee_id" /></span>
|
||||
<div id="discipline_id" class="o_field_many2manytags o_field_widget d-flex mt-auto">
|
||||
<t t-if="record.discipline_id.raw_value">
|
||||
<div t-attf-class="badge badge-pill o_tag_color_#{(record.discipline_id.raw_value % 11) + 1}" >
|
||||
<b><span class="o_badge_text"><t t-esc="record.discipline_id.value"/></span></b>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_speaker_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.speaker.view.tree</field>
|
||||
<field name="model">event.speaker</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Speakers" editable="bottom">
|
||||
<field name="name" invisible="0"/>
|
||||
<field name="employee_id" />
|
||||
<field name="discipline_id" />
|
||||
<field name="event_id" invisible="1" />
|
||||
<field name="has_extra"/>
|
||||
<field name="working_hours" widget="float_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_speaker_view_form" model="ir.ui.view">
|
||||
<field name="name">event.speaker.view.form</field>
|
||||
<field name="model">event.speaker</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Speaker">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" readonly="1"/>
|
||||
<group>
|
||||
<field name="employee_id" required="1"/>
|
||||
<field name="discipline_id" />
|
||||
<field name="has_extra"/>
|
||||
<field name="working_hours" widget="float_time"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers"/>
|
||||
<field name="activity_ids" widget="mail_activity"/>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_event_discipline">
|
||||
<field name="name">Speaker Discipline</field>
|
||||
<field name="res_model">event.discipline</field>
|
||||
</record>
|
||||
|
||||
<record id="menu_event_discipline" model="ir.ui.menu">
|
||||
<field name="action" ref="learning_event_partner.action_event_discipline"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_event_speaker_stage">
|
||||
<field name="name">Speaker Stage</field>
|
||||
<field name="res_model">event.speaker.stage</field>
|
||||
</record>
|
||||
|
||||
<record id="event_speaker_stage_menu" model="ir.ui.menu">
|
||||
<field name="action" ref="learning_event_partner.action_event_speaker_stage"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
15
learning_event_partner/views/hr_employee_views.xml
Normal file
15
learning_event_partner/views/hr_employee_views.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="disciplie_inherit_hr_employee" model="ir.ui.view">
|
||||
<field name="name">hr.employee.view.form.discipline.inherit</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="category_ids" position="after">
|
||||
<field name="discipline_ids" placeholder="Discplines" widget="many2many_tags"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
Reference in New Issue
Block a user