[NEW] training-tools addons

This commit is contained in:
clementthomas
2023-06-15 11:55:37 +02:00
parent e96bc23168
commit 387f068fd5
44 changed files with 2329 additions and 0 deletions

View 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.

View File

@@ -0,0 +1 @@
from . import models

View 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",
],
}

View 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"

View File

@@ -0,0 +1,3 @@
from . import event_event
from . import event_speaker
from . import event_speaker_stage

View 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")

View 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

View 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.",
)

View 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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_speaker_user event.event.speaker.user learning_event_partner.model_event_speaker event.group_event_user 1 0 0 0
3 access_event_speaker_manager event.event.speaker.manager learning_event_partner.model_event_speaker event.group_event_manager 1 1 1 1
4 access_event_discipline_user event.event.discipline.user learning_event_partner.model_event_discipline event.group_event_user 1 0 0 0
5 access_event_discipline_manager event.event.discipline.manager learning_event_partner.model_event_discipline event.group_event_manager 1 1 1 1
6 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
7 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View 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>

View 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>

View 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', '&lt;', 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', '&gt;', 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>

View 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>