First partial version of the module
Complies with 2 first objectives: - nouveau champ "équipe" dans évènement public pour le faire apparaître dans les calendriers de tous ses organisateurs/formateurs - calendrier unique par salarié avec évènements personnels, évènements communs, et à terme évènements à inscription publique => synchroniser les évènements publics dans le calendrier personnel du responsable et des organisateurs/formateurs de l'évènement (ces évènements publics ne seront pas modifiables depuis les agendas personnels)
This commit is contained in:
parent
388bd038b6
commit
d8876d8cdf
3
groupeurd_calendar/__init__.py
Normal file
3
groupeurd_calendar/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import controllers
|
||||
import models
|
39
groupeurd_calendar/__openerp__.py
Normal file
39
groupeurd_calendar/__openerp__.py
Normal file
@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
'name': "groupeurd_calendar",
|
||||
|
||||
'summary': """
|
||||
Adaptation du module "smile_event_event_calendar" pour les besoins spécifiques du Groupe URD.""",
|
||||
|
||||
'description': """
|
||||
- nouveau champ "équipe" dans évènement public pour le faire apparaître dans les calendriers de tous ses organisateurs/formateurs
|
||||
- calendrier unique par salarié avec évènements personnels, évènements communs, et à terme évènements à inscription publique
|
||||
=> synchroniser les évènements publics dans le calendrier personnel du responsable et des organisateurs/formateurs de l'évènement (ces évènements publics ne seront pas modifiables depuis les agendas personnels)
|
||||
- visibilité des calendriers de tous les autres salariés
|
||||
- accès à des vues personnalisées : planning de tous les salariés par semaine, planning de tous les salariés par mois
|
||||
- synchro bi-directionnelle avec Thunderbird
|
||||
- [optionnel] partage .ics des calendriers
|
||||
""",
|
||||
|
||||
'author': "Groupe URD",
|
||||
'website': "http://www.urd.org",
|
||||
|
||||
# Categories can be used to filter modules in modules listing
|
||||
# Check https://github.com/odoo/odoo/blob/10.0/odoo/addons/base/module/module_data.xml
|
||||
# for the full list
|
||||
'category': 'Events',
|
||||
'version': '0.1',
|
||||
|
||||
# any module necessary for this one to work correctly
|
||||
'depends': ['smile_event_event_calendar'],
|
||||
|
||||
# always loaded
|
||||
'data': [
|
||||
# 'security/ir.model.access.csv',
|
||||
'views.xml',
|
||||
],
|
||||
# only loaded in demonstration mode
|
||||
'demo': [
|
||||
#'demo.xml',
|
||||
],
|
||||
}
|
20
groupeurd_calendar/controllers.py
Normal file
20
groupeurd_calendar/controllers.py
Normal file
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from openerp import http
|
||||
|
||||
# class GroupeurdCalendar(http.Controller):
|
||||
# @http.route('/groupeurd_calendar/groupeurd_calendar/', auth='public')
|
||||
# def index(self, **kw):
|
||||
# return "Hello, world"
|
||||
|
||||
# @http.route('/groupeurd_calendar/groupeurd_calendar/objects/', auth='public')
|
||||
# def list(self, **kw):
|
||||
# return http.request.render('groupeurd_calendar.listing', {
|
||||
# 'root': '/groupeurd_calendar/groupeurd_calendar',
|
||||
# 'objects': http.request.env['groupeurd_calendar.groupeurd_calendar'].search([]),
|
||||
# })
|
||||
|
||||
# @http.route('/groupeurd_calendar/groupeurd_calendar/objects/<model("groupeurd_calendar.groupeurd_calendar"):obj>/', auth='public')
|
||||
# def object(self, obj, **kw):
|
||||
# return http.request.render('groupeurd_calendar.object', {
|
||||
# 'object': obj
|
||||
# })
|
25
groupeurd_calendar/demo.xml
Normal file
25
groupeurd_calendar/demo.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- -->
|
||||
<!-- <record id="object0" model="groupeurd_calendar.groupeurd_calendar"> -->
|
||||
<!-- <field name="name">Object 0</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- -->
|
||||
<!-- <record id="object1" model="groupeurd_calendar.groupeurd_calendar"> -->
|
||||
<!-- <field name="name">Object 1</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- -->
|
||||
<!-- <record id="object2" model="groupeurd_calendar.groupeurd_calendar"> -->
|
||||
<!-- <field name="name">Object 2</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- -->
|
||||
<!-- <record id="object3" model="groupeurd_calendar.groupeurd_calendar"> -->
|
||||
<!-- <field name="name">Object 3</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- -->
|
||||
<!-- <record id="object4" model="groupeurd_calendar.groupeurd_calendar"> -->
|
||||
<!-- <field name="name">Object 4</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- -->
|
||||
</data>
|
||||
</openerp>
|
33
groupeurd_calendar/i18n/fr.po
Normal file
33
groupeurd_calendar/i18n/fr.po
Normal file
@ -0,0 +1,33 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * groupeurd_calendar
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 8.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-11-14 13:54+0000\n"
|
||||
"PO-Revision-Date: 2016-11-14 13:54+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: groupeurd_calendar
|
||||
#: model:ir.model,name:groupeurd_calendar.model_calendar_event
|
||||
#: model:ir.model,name:groupeurd_calendar.model_event_event
|
||||
msgid "Event"
|
||||
msgstr "Évènement"
|
||||
|
||||
#. module: groupeurd_calendar
|
||||
#: field:event.event,team_ids:0
|
||||
msgid "Event team members"
|
||||
msgstr "Equipe de l'évènement"
|
||||
|
||||
#. module: groupeurd_calendar
|
||||
#: view:calendar.event:groupeurd_calendar.revised_calendar_event_form
|
||||
msgid "{\"readonly\":[('event_event_id','!=',False)]}"
|
||||
msgstr "{\"readonly\":[('event_event_id','!=',False)]}"
|
||||
|
87
groupeurd_calendar/models.py
Normal file
87
groupeurd_calendar/models.py
Normal file
@ -0,0 +1,87 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from openerp import models, fields, api
|
||||
|
||||
#Debuggger package
|
||||
import pdb
|
||||
## APPELER "pdb.set_trace()" pour faire un point de débuggage qu'on peut piloter ensuite depuis la console
|
||||
|
||||
#
|
||||
# "event.event" est l'objet pour les évènements publics
|
||||
#
|
||||
class Event(models.Model):
|
||||
_name = "event.event"
|
||||
_inherit = "event.event"
|
||||
|
||||
#le champ "team_ids" est conçu pour n'etre modifiable que depuis l'interface sur un event.event
|
||||
# => il sert d'interface pour modifier le calendar_event.partner_ids qui lui stocke la valeur de référence sur cette information
|
||||
team_ids = fields.Many2many("res.partner", string="Event team members")
|
||||
|
||||
|
||||
# le décorateur "@api.model" indique que le "self" est alors une classe "event.event" générique
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
#Ajouter le responsable (user_id) à l'équipe pour que l'évènement soit visible dans son calendrier
|
||||
team_ids_vals = vals['team_ids'][0][2]
|
||||
team_ids_vals.append(self.env['res.users'].search([('id','=',vals['user_id'])]).partner_id.id)
|
||||
vals['team_ids'] = [(6,False,team_ids_vals)]
|
||||
|
||||
event = super(Event, self).create(vals)
|
||||
|
||||
return event
|
||||
|
||||
# le décorateur "@api.multi" indique que le "self" dans la fonction est tableau d'objets "event.event"
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
# Ajouter le responsable (user_id) à l'équipe s'il a été modifié
|
||||
if vals.get('user_id'):
|
||||
team_ids_vals = []
|
||||
if vals.get('team_ids'):
|
||||
team_ids_vals = vals['team_ids'][0][2]
|
||||
else:
|
||||
event = self
|
||||
for team_member_id in event.team_ids:
|
||||
team_ids_vals.append(team_member_id.id)
|
||||
team_ids_vals.append(self.env['res.users'].search([('id','=',vals['user_id'])]).partner_id.id)
|
||||
vals['team_ids'] = [(6,False,team_ids_vals)]
|
||||
|
||||
res = super(Event, self).write(vals)
|
||||
context = dict(self._context or {})
|
||||
if context.get("from_eventevent_interface"):
|
||||
for event in self:
|
||||
for calendar_event in self.env['calendar.event'].search([('event_event_id','=',event.id)]):
|
||||
calendar_event.partner_ids = event.team_ids
|
||||
if vals.get('user_id'):
|
||||
calendar_event.user_id = event.user_id
|
||||
return res
|
||||
|
||||
|
||||
#
|
||||
# "calendar.event" est l'objet pour les évènements affichés dans les calendriers des utilisateurs
|
||||
#
|
||||
class CalendarEvent(models.Model):
|
||||
_inherit = 'calendar.event'
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
calendar_event = super(CalendarEvent, self).create(vals)
|
||||
if calendar_event.event_event_id:
|
||||
calendar_event.partner_ids = calendar_event.event_event_id.team_ids
|
||||
calendar_event.partner_ids |= calendar_event.event_event_id.user_id.partner_id
|
||||
return calendar_event
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
res = super(CalendarEvent, self).write(vals)
|
||||
|
||||
# Après la modification, si la modif n'est pas faite depuis l'event.event,
|
||||
# on met à jour la team member listes de l'event.event
|
||||
context = dict(self._context or {})
|
||||
if context.get("from_eventevent_interface") != True :
|
||||
for calendar_event in self:
|
||||
if calendar_event.event_event_id:
|
||||
calendar_event.event_event_id.team_ids = calendar_event.partner_ids
|
||||
|
||||
return res
|
||||
|
||||
|
2
groupeurd_calendar/security/ir.model.access.csv
Normal file
2
groupeurd_calendar/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_groupeurd_calendar_groupeurd_calendar,groupeurd_calendar.groupeurd_calendar,model_groupeurd_calendar_groupeurd_calendar,,1,0,0,0
|
|
22
groupeurd_calendar/templates.xml
Normal file
22
groupeurd_calendar/templates.xml
Normal file
@ -0,0 +1,22 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- <template id="listing"> -->
|
||||
<!-- <ul> -->
|
||||
<!-- <li t-foreach="objects" t-as="object"> -->
|
||||
<!-- <a t-attf-href="#{ root }/objects/#{ object.id }"> -->
|
||||
<!-- <t t-esc="object.display_name"/> -->
|
||||
<!-- </a> -->
|
||||
<!-- </li> -->
|
||||
<!-- </ul> -->
|
||||
<!-- </template> -->
|
||||
<!-- <template id="object"> -->
|
||||
<!-- <h1><t t-esc="object.display_name"/></h1> -->
|
||||
<!-- <dl> -->
|
||||
<!-- <t t-foreach="object._fields" t-as="field"> -->
|
||||
<!-- <dt><t t-esc="field"/></dt> -->
|
||||
<!-- <dd><t t-esc="object[field]"/></dd> -->
|
||||
<!-- </t> -->
|
||||
<!-- </dl> -->
|
||||
<!-- </template> -->
|
||||
</data>
|
||||
</openerp>
|
53
groupeurd_calendar/views.xml
Normal file
53
groupeurd_calendar/views.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- VIEWS -->
|
||||
<record id="revised_event_form" model="ir.ui.view">
|
||||
<field name="name">Event edition form with team management</field>
|
||||
<field name="model">event.event</field>
|
||||
<field name="inherit_id" ref="event.view_event_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="address_id" position="after">
|
||||
<field name="team_ids" widget="many2many_tags" />
|
||||
</field>
|
||||
<field name="organizer_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<record id="revised_calendar_event_form" model="ir.ui.view">
|
||||
<field name="name">Calendar Event edition form without name modification if linked to public event</field>
|
||||
<field name="model">calendar.event</field>
|
||||
<field name="inherit_id" ref="calendar.view_calendar_event_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" position="attributes">
|
||||
<attribute name="attrs">{"readonly":[('event_event_id','!=',False)]}</attribute>
|
||||
</field>
|
||||
<field name="user_id" position="attributes">
|
||||
<attribute name="attrs">{"readonly":[('event_event_id','!=',False)]}</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- ACTIONS -->
|
||||
|
||||
<record model="ir.actions.act_window" id="event.action_event_view">
|
||||
<field name="name">Events</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">event.event</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,calendar,tree,form</field>
|
||||
<field name="context">{"search_default_upcoming":1,"from_eventevent_interface":1}</field>
|
||||
<field name="search_view_id" ref="event.view_event_search"/>
|
||||
<field name="help" type="html"><p class="oe_view_nocontent_create">
|
||||
Click to add a new event.
|
||||
</p><p>
|
||||
Odoo helps you schedule and efficiently organize your events:
|
||||
track registrations and participations, automate the confirmation emails,
|
||||
sell tickets, etc.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue
Block a user