diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a18e910 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*pyc +*~ +*# +.dir-locals.el diff --git a/calendar_ics/__init__.pyc b/calendar_ics/__init__.pyc deleted file mode 100644 index b33230b..0000000 Binary files a/calendar_ics/__init__.pyc and /dev/null differ diff --git a/calendar_ics/calendar.pyc b/calendar_ics/calendar.pyc deleted file mode 100644 index 926898d..0000000 Binary files a/calendar_ics/calendar.pyc and /dev/null differ diff --git a/calendar_ics/res_partner.pyc b/calendar_ics/res_partner.pyc deleted file mode 100644 index 932c099..0000000 Binary files a/calendar_ics/res_partner.pyc and /dev/null differ diff --git a/groupeurd_calendar/models.py b/groupeurd_calendar/models.py index 1667ce8..c6e0aed 100644 --- a/groupeurd_calendar/models.py +++ b/groupeurd_calendar/models.py @@ -1,97 +1,189 @@ # -*- coding: utf-8 -*- from openerp import models, fields, api +from openerp.tools.translate import _ -#Debuggger package +# 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 - + _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 CalAtt(models.Model): + _inherit = "calendar.attendee" + + invit_sent = fields.Boolean("If invit has been sent", default=False) + + 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 - - - - -#Overrides calendar_ics "res_partner" override to have our custom URL + _inherit = "calendar.event" + + dispo_message = fields.Text("Dispos ok?", readonly=True) + + @api.multi + def check_dispo(self): + message = "" + user_par_id = {} + com_pd = [ + "&", + ("start_datetime", ">=", self.start_datetime), + ("start_datetime", "<=", self.stop_datetime), + ] + term_pd = [ + "&", + ("stop_datetime", ">=", self.start_datetime), + ("stop_datetime", "<=", self.stop_datetime), + ] + englobe = [ + "&", + ("start_datetime", "<=", self.start_datetime), + ("stop_datetime", ">=", self.stop_datetime), + ] + domain = ["|", "|"] + domain.extend(com_pd) + domain.extend(term_pd) + domain.extend(englobe) + + res = self.env["calendar.event"].search(domain) + print(res) + cur_attendees = set( + [ + at.partner_id.id + for at in self.env["calendar.attendee"].search( + [("event_id", "=", self.id)] + ) + ] + ) + + for ev in res: + if ev.id == self.id: + continue + atts = self.env["calendar.attendee"].search([("event_id", "=", ev.id)]) + for at in atts: + user_par_id[at.partner_id.id] = at.partner_id.name + attendees = set([at.partner_id.id for at in atts]) + + # print(cur_attendees, attendees) + inter = cur_attendees.intersection(attendees) + # print(inter) + if inter: + st = "" + for a in inter: + st += user_par_id[a] + ", " + message += "Conflit avec " + st + " et " + ev.name + "\n" + self.dispo_message = message + + @api.multi + def send_invit(self): + attendees = self.env["calendar.attendee"].search([("event_id", "=", self.id)]) + part_logged = self.env["res.users"].browse([self.env.uid]) + id_part_cur = part_logged.partner_id + + for attendee in attendees: + if not attendee.invit_sent and attendee.partner_id.id != id_part_cur.id: + attendee._send_mail_to_attendees( + [attendee.id], template_xmlid="calendar_template_meeting_invitation" + ) + attendee.invit_sent = True + self.message_post( + body=_("An invitation email has been sent to attendee %s") + % (attendee.partner_id.name,), + subtype="calendar.subtype_invitation", + ) + + @api.model + def create(self, vals): + self = self.with_context(no_email=True) + 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): + self = self.with_context(no_email=True) + 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 + + +# Overrides calendar_ics "res_partner" override to have our custom URL class res_partner(models.Model): _inherit = "res.partner" + @api.one def create_ics_url(self): - self.ics_url_field = '%s/calendar-ics/%s/public.ics' % (self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.id) - - + self.ics_url_field = "%s/calendar-ics/%s/public.ics" % ( + self.env["ir.config_parameter"].sudo().get_param("web.base.url"), + self.id, + ) diff --git a/groupeurd_calendar/views.xml b/groupeurd_calendar/views.xml index 8447300..f886805 100644 --- a/groupeurd_calendar/views.xml +++ b/groupeurd_calendar/views.xml @@ -54,6 +54,26 @@ + + calendar.eve.event.event.calendar + calendar.event + + 32 + + +
+
+
+ +
+ +
+
+
+
@@ -96,4 +116,4 @@ - \ No newline at end of file + diff --git a/mail_tracking/__init__.pyc b/mail_tracking/__init__.pyc deleted file mode 100644 index 8fdc647..0000000 Binary files a/mail_tracking/__init__.pyc and /dev/null differ diff --git a/mail_tracking/controllers/__init__.pyc b/mail_tracking/controllers/__init__.pyc deleted file mode 100644 index d0b9c81..0000000 Binary files a/mail_tracking/controllers/__init__.pyc and /dev/null differ diff --git a/mail_tracking/controllers/main.pyc b/mail_tracking/controllers/main.pyc deleted file mode 100644 index eff55b7..0000000 Binary files a/mail_tracking/controllers/main.pyc and /dev/null differ diff --git a/mail_tracking/hooks.pyc b/mail_tracking/hooks.pyc deleted file mode 100644 index 5fcfba9..0000000 Binary files a/mail_tracking/hooks.pyc and /dev/null differ diff --git a/mail_tracking/models/__init__.pyc b/mail_tracking/models/__init__.pyc deleted file mode 100644 index 2250ce9..0000000 Binary files a/mail_tracking/models/__init__.pyc and /dev/null differ diff --git a/mail_tracking/models/ir_mail_server.pyc b/mail_tracking/models/ir_mail_server.pyc deleted file mode 100644 index ebd8cf5..0000000 Binary files a/mail_tracking/models/ir_mail_server.pyc and /dev/null differ diff --git a/mail_tracking/models/mail_mail.pyc b/mail_tracking/models/mail_mail.pyc deleted file mode 100644 index 9fcb77d..0000000 Binary files a/mail_tracking/models/mail_mail.pyc and /dev/null differ diff --git a/mail_tracking/models/mail_message.pyc b/mail_tracking/models/mail_message.pyc deleted file mode 100644 index c9400ad..0000000 Binary files a/mail_tracking/models/mail_message.pyc and /dev/null differ diff --git a/mail_tracking/models/mail_tracking_email.pyc b/mail_tracking/models/mail_tracking_email.pyc deleted file mode 100644 index 250220f..0000000 Binary files a/mail_tracking/models/mail_tracking_email.pyc and /dev/null differ diff --git a/mail_tracking/models/mail_tracking_event.pyc b/mail_tracking/models/mail_tracking_event.pyc deleted file mode 100644 index c8d313f..0000000 Binary files a/mail_tracking/models/mail_tracking_event.pyc and /dev/null differ diff --git a/mail_tracking/models/res_partner.pyc b/mail_tracking/models/res_partner.pyc deleted file mode 100644 index eca67ff..0000000 Binary files a/mail_tracking/models/res_partner.pyc and /dev/null differ diff --git a/mail_tracking_mailgun/__init__.pyc b/mail_tracking_mailgun/__init__.pyc deleted file mode 100644 index 3c1f82b..0000000 Binary files a/mail_tracking_mailgun/__init__.pyc and /dev/null differ diff --git a/mail_tracking_mailgun/models/__init__.pyc b/mail_tracking_mailgun/models/__init__.pyc deleted file mode 100644 index 9203866..0000000 Binary files a/mail_tracking_mailgun/models/__init__.pyc and /dev/null differ diff --git a/mail_tracking_mailgun/models/ir_mail_server.pyc b/mail_tracking_mailgun/models/ir_mail_server.pyc deleted file mode 100644 index 46a156d..0000000 Binary files a/mail_tracking_mailgun/models/ir_mail_server.pyc and /dev/null differ diff --git a/mail_tracking_mailgun/models/mail_tracking_email.pyc b/mail_tracking_mailgun/models/mail_tracking_email.pyc deleted file mode 100644 index 0b67d9b..0000000 Binary files a/mail_tracking_mailgun/models/mail_tracking_email.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/__init__.pyc b/mail_tracking_mass_mailing/__init__.pyc deleted file mode 100644 index a1a866a..0000000 Binary files a/mail_tracking_mass_mailing/__init__.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/hooks.pyc b/mail_tracking_mass_mailing/hooks.pyc deleted file mode 100644 index 468a26f..0000000 Binary files a/mail_tracking_mass_mailing/hooks.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/__init__.pyc b/mail_tracking_mass_mailing/models/__init__.pyc deleted file mode 100644 index 3f98d3c..0000000 Binary files a/mail_tracking_mass_mailing/models/__init__.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/mail_mail.pyc b/mail_tracking_mass_mailing/models/mail_mail.pyc deleted file mode 100644 index 0e0d273..0000000 Binary files a/mail_tracking_mass_mailing/models/mail_mail.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/mail_mail_statistics.pyc b/mail_tracking_mass_mailing/models/mail_mail_statistics.pyc deleted file mode 100644 index f73c44a..0000000 Binary files a/mail_tracking_mass_mailing/models/mail_mail_statistics.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/mail_mass_mailing.pyc b/mail_tracking_mass_mailing/models/mail_mass_mailing.pyc deleted file mode 100644 index 7990618..0000000 Binary files a/mail_tracking_mass_mailing/models/mail_mass_mailing.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.pyc b/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.pyc deleted file mode 100644 index 3448af1..0000000 Binary files a/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/mail_tracking_email.pyc b/mail_tracking_mass_mailing/models/mail_tracking_email.pyc deleted file mode 100644 index 9ab958c..0000000 Binary files a/mail_tracking_mass_mailing/models/mail_tracking_email.pyc and /dev/null differ diff --git a/mail_tracking_mass_mailing/models/mail_tracking_event.pyc b/mail_tracking_mass_mailing/models/mail_tracking_event.pyc deleted file mode 100644 index db3cf02..0000000 Binary files a/mail_tracking_mass_mailing/models/mail_tracking_event.pyc and /dev/null differ diff --git a/smile_access_control/__init__.pyc b/smile_access_control/__init__.pyc deleted file mode 100644 index 405e7e1..0000000 Binary files a/smile_access_control/__init__.pyc and /dev/null differ diff --git a/smile_access_control/models/__init__.pyc b/smile_access_control/models/__init__.pyc deleted file mode 100644 index 651f615..0000000 Binary files a/smile_access_control/models/__init__.pyc and /dev/null differ diff --git a/smile_access_control/models/res_groups.pyc b/smile_access_control/models/res_groups.pyc deleted file mode 100644 index 24685a7..0000000 Binary files a/smile_access_control/models/res_groups.pyc and /dev/null differ diff --git a/smile_access_control/models/res_users.pyc b/smile_access_control/models/res_users.pyc deleted file mode 100644 index 318e8f5..0000000 Binary files a/smile_access_control/models/res_users.pyc and /dev/null differ diff --git a/smile_event_event_calendar/__init__.pyc b/smile_event_event_calendar/__init__.pyc deleted file mode 100644 index 3351229..0000000 Binary files a/smile_event_event_calendar/__init__.pyc and /dev/null differ diff --git a/smile_event_event_calendar/models/__init__.pyc b/smile_event_event_calendar/models/__init__.pyc deleted file mode 100644 index 91b563a..0000000 Binary files a/smile_event_event_calendar/models/__init__.pyc and /dev/null differ diff --git a/smile_event_event_calendar/models/calendar_event.pyc b/smile_event_event_calendar/models/calendar_event.pyc deleted file mode 100644 index 92246d2..0000000 Binary files a/smile_event_event_calendar/models/calendar_event.pyc and /dev/null differ diff --git a/smile_event_event_calendar/models/event.pyc b/smile_event_event_calendar/models/event.pyc deleted file mode 100644 index 561cc8d..0000000 Binary files a/smile_event_event_calendar/models/event.pyc and /dev/null differ