diff --git a/groupeurd_calendar/__init__.py b/groupeurd_calendar/__init__.py new file mode 100644 index 0000000..c7a6ca6 --- /dev/null +++ b/groupeurd_calendar/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +import controllers +import models \ No newline at end of file diff --git a/groupeurd_calendar/__openerp__.py b/groupeurd_calendar/__openerp__.py new file mode 100644 index 0000000..4a27a9e --- /dev/null +++ b/groupeurd_calendar/__openerp__.py @@ -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', + ], +} \ No newline at end of file diff --git a/groupeurd_calendar/controllers.py b/groupeurd_calendar/controllers.py new file mode 100644 index 0000000..83fe661 --- /dev/null +++ b/groupeurd_calendar/controllers.py @@ -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//', auth='public') +# def object(self, obj, **kw): +# return http.request.render('groupeurd_calendar.object', { +# 'object': obj +# }) \ No newline at end of file diff --git a/groupeurd_calendar/demo.xml b/groupeurd_calendar/demo.xml new file mode 100644 index 0000000..5dfd0f7 --- /dev/null +++ b/groupeurd_calendar/demo.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/groupeurd_calendar/i18n/fr.po b/groupeurd_calendar/i18n/fr.po new file mode 100644 index 0000000..ef710a5 --- /dev/null +++ b/groupeurd_calendar/i18n/fr.po @@ -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)]}" + diff --git a/groupeurd_calendar/models.py b/groupeurd_calendar/models.py new file mode 100644 index 0000000..30f0ce2 --- /dev/null +++ b/groupeurd_calendar/models.py @@ -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 + + diff --git a/groupeurd_calendar/security/ir.model.access.csv b/groupeurd_calendar/security/ir.model.access.csv new file mode 100644 index 0000000..7bd3658 --- /dev/null +++ b/groupeurd_calendar/security/ir.model.access.csv @@ -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 \ No newline at end of file diff --git a/groupeurd_calendar/templates.xml b/groupeurd_calendar/templates.xml new file mode 100644 index 0000000..71a9d51 --- /dev/null +++ b/groupeurd_calendar/templates.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/groupeurd_calendar/views.xml b/groupeurd_calendar/views.xml new file mode 100644 index 0000000..8cb5869 --- /dev/null +++ b/groupeurd_calendar/views.xml @@ -0,0 +1,53 @@ + + + + + Event edition form with team management + event.event + + + + + + + 1 + + + + + + + Calendar Event edition form without name modification if linked to public event + calendar.event + + + + {"readonly":[('event_event_id','!=',False)]} + + + {"readonly":[('event_event_id','!=',False)]} + + + + + + + + Events + ir.actions.act_window + event.event + form + kanban,calendar,tree,form + {"search_default_upcoming":1,"from_eventevent_interface":1} + +

+ Click to add a new event. +

+ Odoo helps you schedule and efficiently organize your events: + track registrations and participations, automate the confirmation emails, + sell tickets, etc. +

+
+
+
+
\ No newline at end of file