From 1bff4df02c3074f2078f20b83b8a382302110d81 Mon Sep 17 00:00:00 2001 From: David Alonso Date: Sun, 4 Apr 2021 12:01:34 +0200 Subject: [PATCH] [MIG] event_session: Migration to 13.0 --- event_session/__manifest__.py | 4 +- event_session/models/event.py | 6 --- event_session/models/event_mail.py | 23 ++++----- event_session/models/event_session.py | 47 +++++++------------ event_session/readme/CONTRIBUTORS.rst | 1 + event_session/tests/test_session.py | 28 +++++------ event_session/views/event_session_view.xml | 1 - event_session/views/event_view.xml | 1 - event_session/wizards/wizard_event_session.py | 25 ++++------ .../wizards/wizard_event_session_view.xml | 1 - 10 files changed, 51 insertions(+), 86 deletions(-) diff --git a/event_session/__manifest__.py b/event_session/__manifest__.py index db2e55119..8dc7f0ab0 100644 --- a/event_session/__manifest__.py +++ b/event_session/__manifest__.py @@ -3,8 +3,8 @@ { "name": "Event Sessions", - "version": "12.0.1.0.3", - "author": "Tecnativa, " "Odoo Community Association (OCA)", + "version": "13.0.1.0.0", + "author": "Tecnativa, Odoo Community Association (OCA)", "license": "AGPL-3", "website": "https://github.com/oca/event.git", "category": "Marketing", diff --git a/event_session/models/event.py b/event_session/models/event.py index 3e4014eb2..662cda732 100644 --- a/event_session/models/event.py +++ b/event_session/models/event.py @@ -36,27 +36,23 @@ class EventEvent(models.Model): store=True, ) - @api.multi @api.depends("session_ids") def _compute_sessions_count(self): for event in self: event.sessions_count = len(event.session_ids) - @api.multi @api.constrains("seats_max", "seats_available") def _check_seats_limit(self): for event in self: if not event.session_ids: return super(EventEvent, event)._check_seats_limit() - @api.multi @api.depends("seats_max", "seats_expected") def _compute_seats_available_expected(self): for this in self: seats = this.seats_max - this.seats_expected this.seats_available_expected = seats - @api.multi @api.depends("registration_ids.state") def _compute_state_numbers(self): for this in self: @@ -81,7 +77,6 @@ class EventRegistration(models.Model): comodel_name="event.session", string="Session", ondelete="restrict", ) - @api.multi @api.constrains("event_id", "session_id", "state") def _check_seats_limit(self): for registration in self.filtered("session_id"): @@ -92,7 +87,6 @@ def _check_seats_limit(self): ): raise ValidationError(_("No more seats available for this event.")) - @api.multi def confirm_registration(self): for reg in self: if not reg.event_id.session_ids: diff --git a/event_session/models/event_mail.py b/event_session/models/event_mail.py index 66d1b25cb..98577118d 100644 --- a/event_session/models/event_mail.py +++ b/event_session/models/event_mail.py @@ -16,7 +16,7 @@ class EventMailScheduler(models.Model): _inherit = "event.mail" - event_id = fields.Many2one(required=False,) + event_id = fields.Many2one(required=False) session_id = fields.Many2one( comodel_name="event.session", string="Session", ondelete="cascade", ) @@ -26,7 +26,6 @@ class EventMailScheduler(models.Model): ondelete="cascade", ) - @api.multi @api.depends( "mail_sent", "interval_type", @@ -34,7 +33,7 @@ class EventMailScheduler(models.Model): "mail_registration_ids", ) def _compute_done(self): - super(EventMailScheduler, self)._compute_done() + super()._compute_done() for event_mail in self: if event_mail.session_id and event_mail.interval_type not in [ "before_event", @@ -49,7 +48,6 @@ def _compute_done(self): and all(line.mail_sent for line in event_mail.mail_registration_ids) ) - @api.multi @api.depends( "event_id.state", "event_id.date_begin", @@ -58,7 +56,7 @@ def _compute_done(self): "interval_nbr", ) def _compute_scheduled_date(self): - super(EventMailScheduler, self)._compute_scheduled_date() + super()._compute_scheduled_date() for event_mail in self: if not event_mail.session_id: continue @@ -71,31 +69,26 @@ def _compute_scheduled_date(self): date, sign = event_mail.session_id.date_begin, -1 else: date, sign = event_mail.session_id.date_end, 1 - event_mail.scheduled_date = fields.Datetime.from_string( - date - ) + _INTERVALS[event_mail.interval_unit](sign * event_mail.interval_nbr) + event_mail.scheduled_date = date + _INTERVALS[event_mail.interval_unit]( + sign * event_mail.interval_nbr + ) class EventMailRegistration(models.Model): _inherit = "event.mail.registration" - @api.multi @api.depends( "registration_id", "scheduler_id.interval_unit", "scheduler_id.interval_type" ) def _compute_scheduled_date(self): - super(EventMailRegistration, self)._compute_scheduled_date() + super()._compute_scheduled_date() for event_mail_reg in self: if ( event_mail_reg.registration_id and event_mail_reg.registration_id.session_id ): date_open = event_mail_reg.registration_id.date_open - date_open_datetime = ( - date_open - and fields.Datetime.from_string(date_open) - or fields.datetime.now() - ) + date_open_datetime = date_open and date_open or fields.datetime.now() event_mail_reg.scheduled_date = date_open_datetime + _INTERVALS[ event_mail_reg.scheduler_id.interval_unit ](event_mail_reg.scheduler_id.interval_nbr) diff --git a/event_session/models/event_session.py b/event_session/models/event_session.py index 7c584b251..e2df7c1f6 100644 --- a/event_session/models/event_session.py +++ b/event_session/models/event_session.py @@ -13,7 +13,8 @@ def get_locale(env): """ Get the locale from the environment as done in ir.qweb.field - https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/models/ir_qweb_fields.py#L235 + https://github.com/odoo/odoo/blob/13.0/odoo/addons/base/models + /ir_qweb_fields.py#L238 """ lang = env["ir.qweb.field"].user_lang() locale = babel.Locale.parse(lang.code) @@ -68,9 +69,9 @@ class EventSession(models.Model): company_id = fields.Many2one( comodel_name="res.company", related="event_id.company_id", store=True, ) - event_id = fields.Many2one(comodel_name="event.event", string="Event",) - seats_min = fields.Integer(string="Minimum seats",) - seats_max = fields.Integer(string="Maximum seats",) + event_id = fields.Many2one(comodel_name="event.event", string="Event") + seats_min = fields.Integer(string="Minimum seats") + seats_max = fields.Integer(string="Maximum seats") seats_availability = fields.Selection( [("limited", "Limited"), ("unlimited", "Unlimited")], "Maximum Attendees", @@ -81,21 +82,15 @@ class EventSession(models.Model): string="Reserved Seats", store=True, readonly=True, compute="_compute_seats", ) seats_available = fields.Integer( - oldname="register_avail", - string="Available Seats", - store=True, - readonly=True, - compute="_compute_seats", + string="Available Seats", store=True, readonly=True, compute="_compute_seats", ) seats_unconfirmed = fields.Integer( - oldname="register_prospect", string="Unconfirmed Seat Reservations", store=True, readonly=True, compute="_compute_seats", ) seats_used = fields.Integer( - oldname="register_attended", string="Number of Participants", store=True, readonly=True, @@ -114,9 +109,9 @@ class EventSession(models.Model): store=True, ) seats_available_pc = fields.Float( - string="Full %", readonly=True, compute="_compute_seats", + string="Full %", store=True, readonly=True, compute="_compute_seats", ) - date_tz = fields.Selection(string="Timezone", related="event_id.date_tz",) + date_tz = fields.Selection(string="Timezone", related="event_id.date_tz") date_begin = fields.Datetime( string="Session start date", required=True, @@ -146,7 +141,6 @@ class EventSession(models.Model): copy=True, ) - @api.multi @api.depends("date_begin", "date_end") def _compute_name(self): locale = get_locale(self.env) @@ -154,8 +148,8 @@ def _compute_name(self): if not (session.date_begin and session.date_end): session.name = "/" continue - date_begin = fields.Datetime.from_string(session.date_begin_located) - date_end = fields.Datetime.from_string(session.date_end_located) + date_begin = session.date_begin_located + date_end = session.date_end_located dt_formats = [datetime_format("EEEE"), datetime_format("short")] @@ -164,7 +158,9 @@ def _compute_name(self): if date_begin.date() == date_end.date(): dt_formats = [time_format("short")] - name = "{} - {}".format(name, localized_format(date_end, dt_formats, locale)) + name = "{} - {}".format( + name, localized_format(date_end, dt_formats, locale) + ) session.name = name def _session_mails_from_template(self, event_id, mail_template=None): @@ -194,7 +190,6 @@ def _session_mails_from_template(self, event_id, mail_template=None): ) return vals - @api.multi def name_get(self): """Redefine the name_get method to show the event name with the event session. @@ -215,9 +210,8 @@ def create(self, vals): vals.update( {"event_mail_ids": self._session_mails_from_template(vals["event_id"])} ) - return super(EventSession, self).create(vals) + return super().create(vals) - @api.multi def unlink(self): for this in self: if this.registration_ids: @@ -227,9 +221,8 @@ def unlink(self): sessions with active registrations" ) ) - return super(EventSession, self).unlink() + return super().unlink() - @api.multi @api.depends("seats_max", "registration_ids.state") def _compute_seats(self): """Determine reserved, available, reserved but unconfirmed and used @@ -271,22 +264,20 @@ def _compute_seats(self): session.seats_expected * 100 / float(session.seats_max) ) - @api.multi @api.depends("date_tz", "date_begin") def _compute_date_begin_located(self): for session in self.filtered("date_begin"): self_in_tz = session.with_context(tz=(session.date_tz or "UTC")) - date_begin = fields.Datetime.from_string(session.date_begin) + date_begin = session.date_begin session.date_begin_located = fields.Datetime.to_string( fields.Datetime.context_timestamp(self_in_tz, date_begin), ) - @api.multi @api.depends("date_tz", "date_end") def _compute_date_end_located(self): for session in self.filtered("date_end"): self_in_tz = session.with_context(tz=(session.date_tz or "UTC")) - date_end = fields.Datetime.from_string(session.date_end) + date_end = session.date_end session.date_end_located = fields.Datetime.to_string( fields.Datetime.context_timestamp(self_in_tz, date_end), ) @@ -303,7 +294,6 @@ def onchange_event_id(self): } ) - @api.multi @api.constrains("seats_max", "seats_available") def _check_seats_limit(self): for session in self: @@ -314,7 +304,6 @@ def _check_seats_limit(self): ): raise ValidationError(_("No more available seats for this session.")) - @api.multi @api.constrains("date_begin", "date_end") def _check_dates(self): for session in self: @@ -328,14 +317,12 @@ def _check_dates(self): _("Session date is out of this event dates range") ) - @api.multi @api.constrains("date_begin", "date_end") def _check_zero_duration(self): for session in self: if session.date_begin == session.date_end: raise ValidationError(_("Ending and starting time can't be the same!")) - @api.multi def button_open_registration(self): """Opens session registrations""" self.ensure_one() diff --git a/event_session/readme/CONTRIBUTORS.rst b/event_session/readme/CONTRIBUTORS.rst index f8a18cec9..721c0b38a 100644 --- a/event_session/readme/CONTRIBUTORS.rst +++ b/event_session/readme/CONTRIBUTORS.rst @@ -4,3 +4,4 @@ * David Vidal * Nikos Tsirintanis +* David Alonso diff --git a/event_session/tests/test_session.py b/event_session/tests/test_session.py index c99876fff..b52a96f39 100644 --- a/event_session/tests/test_session.py +++ b/event_session/tests/test_session.py @@ -9,7 +9,7 @@ from odoo.exceptions import ValidationError from odoo.tests import common -from odoo.addons.event_session.models.event_session import ( +from ..models.event_session import ( datetime_format, get_locale, localized_format, @@ -59,7 +59,7 @@ def setUpClass(cls): "sundays": True, "saturdays": True, "delete_existing_sessions": False, - "session_hour_ids": [(0, 0, {"start_time": 20.0, "end_time": 21.0}),], + "session_hour_ids": [(0, 0, {"start_time": 20.0, "end_time": 21.0})], } ) cls.template = cls.env["event.mail.template"].create( @@ -88,7 +88,7 @@ def setUpClass(cls): } ) cls.mail_registration = cls.env["event.mail.registration"].create( - {"scheduler_id": cls.scheduler.id, "registration_id": cls.attendee.id,} + {"scheduler_id": cls.scheduler.id, "registration_id": cls.attendee.id} ) # Enable all languages used in the tests without loading them @@ -159,7 +159,7 @@ def test_session_seats(self): self.assertEqual(self.event.seats_used, self.session.seats_used) with self.assertRaises(ValidationError), self.cr.savepoint(): # check limit regs - for i in range(int(self.session.seats_available) + 1): + for _i in range(int(self.session.seats_available) + 1): self.env["event.registration"].create( { "name": "Test Attendee", @@ -208,12 +208,12 @@ def test_wizard(self): with self.assertRaises(ValidationError), self.cr.savepoint(): # session duration = 0 self.wizard.update( - {"session_hour_ids": [(0, 0, {"start_time": 20.0, "end_time": 20.0}),],} + {"session_hour_ids": [(0, 0, {"start_time": 20.0, "end_time": 20.0})]} ) with self.assertRaises(ValidationError), self.cr.savepoint(): # hour invalidity self.wizard.update( - {"session_hour_ids": [(0, 0, {"start_time": 24.0, "end_time": 24.1}),],} + {"session_hour_ids": [(0, 0, {"start_time": 24.0, "end_time": 24.1})]} ) with self.assertRaises(ValidationError), self.cr.savepoint(): # schedules overlap @@ -309,12 +309,12 @@ def test_time_format(self): # Check en_CA format short_time_enca = short_time(datetime_val, locale_enca) short_time_enca2 = short_time(datetime_val, "en_CA") - self.assertEqual(short_time_enca, "3:30 PM") + self.assertEqual(short_time_enca, "3:30 p.m.") self.assertEqual(short_time_enca, short_time_enca2) # Check fr_CA format short_time_frca = short_time(datetime_val, locale_frca) short_time_frca2 = short_time(datetime_val, "fr_CA") - self.assertEqual(short_time_frca, "15:30") + self.assertEqual(short_time_frca, "15 h 30") self.assertEqual(short_time_frca, short_time_frca2) # Check fr_FR format short_time_frfr = short_time(datetime_val, locale_frfr) @@ -351,12 +351,12 @@ def test_datetime_format(self): # Check en_CA format short_time_enca = short_time(datetime_val, locale_enca) short_time_enca2 = short_time(datetime_val, "en_CA") - self.assertEqual(short_time_enca, "2020-01-31, 3:30 PM") + self.assertEqual(short_time_enca, "2020-01-31, 3:30 p.m.") self.assertEqual(short_time_enca, short_time_enca2) # Check fr_CA format short_time_frca = short_time(datetime_val, locale_frca) short_time_frca2 = short_time(datetime_val, "fr_CA") - self.assertEqual(short_time_frca, "20-01-31 15:30") + self.assertEqual(short_time_frca, "20-01-31 15 h 30") self.assertEqual(short_time_frca, short_time_frca2) # Check fr_FR format short_time_frfr = short_time(datetime_val, locale_frfr) @@ -366,7 +366,7 @@ def test_datetime_format(self): # Check ru_RU format short_time_ru = short_time(datetime_val, locale_ru) short_time_ru2 = short_time(datetime_val, "ru_RU") - self.assertEqual(short_time_ru, "31.01.20, 15:30") + self.assertEqual(short_time_ru, "31.01.2020, 15:30") self.assertEqual(short_time_ru, short_time_ru2) # Check week days formatted @@ -426,11 +426,11 @@ def test_check_localized_format(self): ) self.assertEqual( localized_format(datetime_val, formats, locale_enca), - "Friday 2020-01-31, 3:30 PM 3:30 PM", + "Friday 2020-01-31, 3:30 p.m. 3:30 p.m.", ) self.assertEqual( localized_format(datetime_val, formats, locale_frca), - "vendredi 20-01-31 15:30 15:30", + "vendredi 20-01-31 15 h 30 15 h 30", ) self.assertEqual( localized_format(datetime_val, formats, locale_frfr), @@ -438,5 +438,5 @@ def test_check_localized_format(self): ) self.assertEqual( localized_format(datetime_val, formats, locale_ru), - "пятница 31.01.20, 15:30 15:30", + "пятница 31.01.2020, 15:30 15:30", ) diff --git a/event_session/views/event_session_view.xml b/event_session/views/event_session_view.xml index 8db8ed565..5f1d5044d 100644 --- a/event_session/views/event_session_view.xml +++ b/event_session/views/event_session_view.xml @@ -183,7 +183,6 @@ event.session - form Sessions tree,form,calendar,pivot diff --git a/event_session/views/event_view.xml b/event_session/views/event_view.xml index 8b7e5d97b..b5722b001 100644 --- a/event_session/views/event_view.xml +++ b/event_session/views/event_view.xml @@ -28,7 +28,6 @@ event.session - form Sessions tree,form,calendar,pivot Generate Sessions Wizard wizard.event.session - form form new