[NEW] event_sequence

This commit is contained in:
clementthomas
2024-03-05 20:53:02 +01:00
parent cd521abcfe
commit 0d58b2db0b
12 changed files with 255 additions and 0 deletions

View File

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

View File

@@ -0,0 +1,22 @@
# Copyright 2016-2020 Akretion France (<https://www.akretion.com>)
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Event sequences",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "Elabore",
"website": "https://www.elabore.coop",
"category": "",
"depends": ["event", "website_event_track"],
"data": [
'security/ir.model.access.csv',
'views/event_sequence_views.xml',
'views/event_track_views.xml',
'views/event_event_views.xml',
'views/event_sequence_menu.xml',
'data/event_sequence_data.xml',
],
"installable": True,
}

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record forcecreate="True" id="event_sequence_1" model="event.sequence">
<field name="name">Séquence 1</field>
<field name="sequence">1</field>
</record>
<record forcecreate="True" id="event_sequence_2" model="event.sequence">
<field name="name">Séquence 2</field>
<field name="sequence">2</field>
</record>
<record forcecreate="True" id="event_sequence_3" model="event.sequence">
<field name="name">Séquence 3</field>
<field name="sequence">3</field>
</record>
<record forcecreate="True" id="event_sequence_4" model="event.sequence">
<field name="name">Séquence 4</field>
<field name="sequence">4</field>
</record>
<record forcecreate="True" id="event_sequence_5" model="event.sequence">
<field name="name">Séquence 5</field>
<field name="sequence">5</field>
</record>
<record forcecreate="True" id="event_sequence_6" model="event.sequence">
<field name="name">Séquence 6</field>
<field name="sequence">6</field>
</record>
<record forcecreate="True" id="event_sequence_7" model="event.sequence">
<field name="name">Séquence 7</field>
<field name="sequence">7</field>
</record>
<record forcecreate="True" id="event_sequence_8" model="event.sequence">
<field name="name">Séquence 8</field>
<field name="sequence">8</field>
</record>
<record forcecreate="True" id="event_sequence_9" model="event.sequence">
<field name="name">Séquence 9</field>
<field name="sequence">9</field>
</record>
<record forcecreate="True" id="event_sequence_10" model="event.sequence">
<field name="name">Séquence 10</field>
<field name="sequence">10</field>
</record>
<record forcecreate="True" id="event_sequence_11" model="event.sequence">
<field name="name">Séquence 11</field>
<field name="sequence">11</field>
</record>
<record forcecreate="True" id="event_sequence_12" model="event.sequence">
<field name="name">Séquence 12</field>
<field name="sequence">12</field>
</record>
</odoo>

View File

@@ -0,0 +1,3 @@
from . import event_sequence
from . import event_track
from . import event_event

View File

@@ -0,0 +1,9 @@
from odoo import _, api, Command, fields, models
from lxml import etree, html
from odoo.tools import format_time
class EventEvent(models.Model):
_inherit = "event.event"
sequence_number = fields.Integer('Number of sequences', default="5")
current_sequence_id = fields.Many2one('event.sequence', 'Current sequence')

View File

@@ -0,0 +1,9 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class EventSequence(models.Model):
_name = "event.sequence"
name = fields.Char("name")
sequence = fields.Integer("Sequence")

View File

@@ -0,0 +1,32 @@
from odoo import _, api, Command, fields, models
from lxml import etree, html
from odoo.tools import format_time
class EventTrack(models.Model):
_inherit = "event.track"
sequence_id = fields.Many2one('event.sequence', 'Sequence', group_expand='_read_group_stage_ids')
sequence = fields.Integer('Sequence')
@api.model_create_multi
def create(self, vals_list):
if vals_list and 'sequence' not in vals_list[0]:
vals_list[0]['sequence'] = 999
tracks = super(EventTrack, self).create(vals_list)
return tracks
@api.model
def _read_group_stage_ids(self, stages, domain, order):
event_id = None
for d in domain:
if d[0] == "event_id" and d[1] == "=" and d[2]:
event_id = d[2]
if event_id:
event = self.env['event.event'].browse(event_id)
return stages.search([], order="sequence", limit=event.sequence_number)
return stages.search([], order="sequence")

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_sequence,event.sequence,model_event_sequence,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_sequence event.sequence model_event_sequence event.group_event_manager 1 1 1 1

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_event_form_event_sequence">
<field name="name">event.event.form.event.sequence</field>
<field name="model">event.event</field>
<field name="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml">
<label for="date_begin" position="before">
<field name="sequence_number" />
</label>
<h1 position="after">
<label for="current_sequence_id" string="Séquence en cours"/>
<h1><field class="text-break" name="current_sequence_id" /></h1>
</h1>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<menuitem id="event_sequence_menu"
name="Sequences"
action="event_sequence_action"
parent="event.menu_event_configuration"
sequence="31"/>
</odoo>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_event_sequence_tree">
<field name="name">event.sequence</field>
<field name="model">event.sequence</field>
<field name="arch" type="xml">
<tree editable="top">
<field name="sequence" widget="handle" />
<field name="name" />
</tree>
</field>
</record>
<record id="event_sequence_action" model="ir.actions.act_window">
<field name="name">Sequences</field>
<field name="res_model">event.sequence</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_event_sequence_tree"/>
</record>
</odoo>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_event_track_by_sequence_kanban">
<field name="name">event.track.by.sequence.kanban</field>
<field name="model">event.track</field>
<field name="arch" type="xml">
<kanban default_order="sequence" group_create="false" default_group_by="sequence_id" quick_create_view="website_event_track.event_track_view_form_quick_create">
<field name="color"/>
<field name="partner_id"/>
<field name="sequence_id" options="{'create':false}" />
<field name="stage_id" options='{"group_by_tooltip": {"description": "Description"}}'/>
<field name="website_url"/>
<field name="activity_ids"/>
<field name="activity_state"/>
<field name="legend_blocked"/>
<field name="legend_normal"/>
<field name="legend_done"/>
<templates>
<progressbar field="kanban_state" colors='{"done": "success", "blocked": "danger"}'/>
<t t-name="kanban-box">
<div t-attf-class="{{!selection_mode ? 'oe_kanban_color_' + kanban_getcolor(record.color.raw_value) : ''}} oe_kanban_card oe_kanban_global_click">
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
<a role="button" class="dropdown-toggle o-no-caret btn" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
<a role="menuitem" t-att-href="record.website_url.value" class="dropdown-item">View Track</a>
<t t-if="widget.editable"><a role="menuitem" type="edit" class="dropdown-item">Edit Track</a></t>
<t t-if="widget.deletable"><a role="menuitem" type="delete" class="dropdown-item">Delete</a></t>
<ul class="oe_kanban_colorpicker" data-field="color"/>
</div>
</div>
<div class="oe_kanban_content">
<div class="o_kanban_record_top">
<h4 class="o_kanban_record_title"><field name="name"/></h4>
</div>
<div class="o_kanban_record_body">
<t t-if="duration"><field name="duration" widget="float_time"/> hours</t>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
</div>
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left">
<field name="priority" widget="priority"/>
<field name="activity_ids" widget="kanban_activity"/>
</div>
<div class="oe_kanban_bottom_right">
<field name="kanban_state" widget="state_selection" groups="base.group_user"/>
<img t-att-src="kanban_image('res.partner', 'avatar_128', record.partner_id.raw_value)"
t-att-title="record.partner_id.value" t-att-alt="record.partner_id.value"
class="oe_kanban_avatar"/>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record model="ir.actions.act_window.view" id="action_event_track_from_event_kanban">
<field name="sequence" eval="1"/>
<field name="view_mode">kanban</field>
<field name="act_window_id" ref="website_event_track.action_event_track_from_event"/>
<field name="view_id" ref="event_sequence.view_event_track_by_sequence_kanban"/>
</record>
</odoo>