[NEW] training-tools addons
This commit is contained in:
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.",
|
||||
)
|
Reference in New Issue
Block a user