[NEW] event_sequence
This commit is contained in:
1
event_sequence/__init__.py
Normal file
1
event_sequence/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from . import models
|
22
event_sequence/__manifest__.py
Normal file
22
event_sequence/__manifest__.py
Normal 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,
|
||||||
|
}
|
62
event_sequence/data/event_sequence_data.xml
Normal file
62
event_sequence/data/event_sequence_data.xml
Normal 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>
|
3
event_sequence/models/__init__.py
Normal file
3
event_sequence/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from . import event_sequence
|
||||||
|
from . import event_track
|
||||||
|
from . import event_event
|
9
event_sequence/models/event_event.py
Normal file
9
event_sequence/models/event_event.py
Normal 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')
|
9
event_sequence/models/event_sequence.py
Normal file
9
event_sequence/models/event_sequence.py
Normal 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")
|
32
event_sequence/models/event_track.py
Normal file
32
event_sequence/models/event_track.py
Normal 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")
|
||||||
|
|
2
event_sequence/security/ir.model.access.csv
Normal file
2
event_sequence/security/ir.model.access.csv
Normal 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
|
|
19
event_sequence/views/event_event_views.xml
Normal file
19
event_sequence/views/event_event_views.xml
Normal 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>
|
8
event_sequence/views/event_sequence_menu.xml
Normal file
8
event_sequence/views/event_sequence_menu.xml
Normal 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>
|
20
event_sequence/views/event_sequence_views.xml
Normal file
20
event_sequence/views/event_sequence_views.xml
Normal 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>
|
68
event_sequence/views/event_track_views.xml
Normal file
68
event_sequence/views/event_track_views.xml
Normal 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>
|
Reference in New Issue
Block a user