[IMP] calendar,lunch: change field names
with this commit we changes field names for week days like su, mo, tu etc. to sun, mon, tue and so on in calendar module, this is going to be used in task 2317795 where we developed recurrency module for recurrency mixin. Also with this commit we change field names of weekdays in lunch module to have same name as we have in calendar and project module so that we can easily use custom widget "web_weekly_recurrence" instead of defining boolean field in xml for each day. task-2335399 Co-authored-by: Mohammed Shekha <msh@odoo.com>
This commit is contained in:
committed by
Yannick Tivisse
co-authored by
Mohammed Shekha
parent
3d0b77a711
commit
7fb9c81296
@@ -196,13 +196,13 @@ class Meeting(models.Model):
|
||||
help="Repeat every (Days/Week/Month/Year)")
|
||||
count = fields.Integer(
|
||||
string='Repeat', help="Repeat x times", compute='_compute_recurrence', readonly=False)
|
||||
mo = fields.Boolean('Mon', compute='_compute_recurrence', readonly=False)
|
||||
tu = fields.Boolean('Tue', compute='_compute_recurrence', readonly=False)
|
||||
we = fields.Boolean('Wed', compute='_compute_recurrence', readonly=False)
|
||||
th = fields.Boolean('Thu', compute='_compute_recurrence', readonly=False)
|
||||
fr = fields.Boolean('Fri', compute='_compute_recurrence', readonly=False)
|
||||
sa = fields.Boolean('Sat', compute='_compute_recurrence', readonly=False)
|
||||
su = fields.Boolean('Sun', compute='_compute_recurrence', readonly=False)
|
||||
mon = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
tue = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
wed = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
thu = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
fri = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
sat = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
sun = fields.Boolean(compute='_compute_recurrence', readonly=False)
|
||||
month_by = fields.Selection(
|
||||
MONTH_BY_SELECTION, string='Option', compute='_compute_recurrence', readonly=False)
|
||||
day = fields.Integer('Date of month', compute='_compute_recurrence', readonly=False)
|
||||
@@ -908,8 +908,8 @@ class Meeting(models.Model):
|
||||
@api.model
|
||||
def _get_recurrent_fields(self):
|
||||
return {'byday', 'until', 'rrule_type', 'month_by', 'event_tz', 'rrule',
|
||||
'interval', 'count', 'end_type', 'mo', 'tu', 'we', 'th', 'fr', 'sa',
|
||||
'su', 'day', 'weekday'}
|
||||
'interval', 'count', 'end_type', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat',
|
||||
'sun', 'day', 'weekday'}
|
||||
|
||||
@api.model
|
||||
def _get_time_fields(self):
|
||||
|
||||
@@ -30,15 +30,17 @@ RRULE_FREQ_TO_SELECT = {
|
||||
}
|
||||
|
||||
RRULE_WEEKDAY_TO_FIELD = {
|
||||
rrule.MO.weekday: 'mo',
|
||||
rrule.TU.weekday: 'tu',
|
||||
rrule.WE.weekday: 'we',
|
||||
rrule.TH.weekday: 'th',
|
||||
rrule.FR.weekday: 'fr',
|
||||
rrule.SA.weekday: 'sa',
|
||||
rrule.SU.weekday: 'su',
|
||||
rrule.MO.weekday: 'mon',
|
||||
rrule.TU.weekday: 'tue',
|
||||
rrule.WE.weekday: 'wed',
|
||||
rrule.TH.weekday: 'thu',
|
||||
rrule.FR.weekday: 'fri',
|
||||
rrule.SA.weekday: 'sat',
|
||||
rrule.SU.weekday: 'sun',
|
||||
}
|
||||
|
||||
RRULE_WEEKDAYS = {'SUN': 'SU', 'MON': 'MO', 'TUE': 'TU', 'WED': 'WE', 'THU': 'TH', 'FRI': 'FR', 'SAT': 'SA'}
|
||||
|
||||
RRULE_TYPE_SELECTION = [
|
||||
('daily', 'Days'),
|
||||
('weekly', 'Weeks'),
|
||||
@@ -58,13 +60,13 @@ MONTH_BY_SELECTION = [
|
||||
]
|
||||
|
||||
WEEKDAY_SELECTION = [
|
||||
('MO', 'Monday'),
|
||||
('TU', 'Tuesday'),
|
||||
('WE', 'Wednesday'),
|
||||
('TH', 'Thursday'),
|
||||
('FR', 'Friday'),
|
||||
('SA', 'Saturday'),
|
||||
('SU', 'Sunday'),
|
||||
('MON', 'Monday'),
|
||||
('TUE', 'Tuesday'),
|
||||
('WED', 'Wednesday'),
|
||||
('THU', 'Thursday'),
|
||||
('FRI', 'Friday'),
|
||||
('SAT', 'Saturday'),
|
||||
('SUN', 'Sunday'),
|
||||
]
|
||||
|
||||
BYDAY_SELECTION = [
|
||||
@@ -104,13 +106,13 @@ class RecurrenceRule(models.Model):
|
||||
end_type = fields.Selection(END_TYPE_SELECTION, default='count')
|
||||
interval = fields.Integer(default=1)
|
||||
count = fields.Integer(default=1)
|
||||
mo = fields.Boolean()
|
||||
tu = fields.Boolean()
|
||||
we = fields.Boolean()
|
||||
th = fields.Boolean()
|
||||
fr = fields.Boolean()
|
||||
sa = fields.Boolean()
|
||||
su = fields.Boolean()
|
||||
mon = fields.Boolean()
|
||||
tue = fields.Boolean()
|
||||
wed = fields.Boolean()
|
||||
thu = fields.Boolean()
|
||||
fri = fields.Boolean()
|
||||
sat = fields.Boolean()
|
||||
sun = fields.Boolean()
|
||||
month_by = fields.Selection(MONTH_BY_SELECTION, default='date')
|
||||
day = fields.Integer(default=1)
|
||||
weekday = fields.Selection(WEEKDAY_SELECTION, string='Weekday')
|
||||
@@ -160,7 +162,7 @@ class RecurrenceRule(models.Model):
|
||||
|
||||
@api.depends(
|
||||
'byday', 'until', 'rrule_type', 'month_by', 'interval', 'count', 'end_type',
|
||||
'mo', 'tu', 'we', 'th', 'fr', 'sa', 'su', 'day', 'weekday')
|
||||
'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun', 'day', 'weekday')
|
||||
def _compute_rrule(self):
|
||||
for recurrence in self:
|
||||
recurrence.rrule = recurrence._rrule_serialize()
|
||||
@@ -302,7 +304,7 @@ class RecurrenceRule(models.Model):
|
||||
def _rrule_parse(self, rule_str, date_start):
|
||||
# LUL TODO clean this mess
|
||||
data = {}
|
||||
day_list = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']
|
||||
day_list = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
|
||||
|
||||
if 'Z' in rule_str and not date_start.tzinfo:
|
||||
date_start = pytz.utc.localize(date_start)
|
||||
@@ -432,13 +434,13 @@ class RecurrenceRule(models.Model):
|
||||
return tuple(
|
||||
rrule.weekday(weekday_index)
|
||||
for weekday_index, weekday in {
|
||||
rrule.MO.weekday: self.mo,
|
||||
rrule.TU.weekday: self.tu,
|
||||
rrule.WE.weekday: self.we,
|
||||
rrule.TH.weekday: self.th,
|
||||
rrule.FR.weekday: self.fr,
|
||||
rrule.SA.weekday: self.sa,
|
||||
rrule.SU.weekday: self.su,
|
||||
rrule.MO.weekday: self.mon,
|
||||
rrule.TU.weekday: self.tue,
|
||||
rrule.WE.weekday: self.wed,
|
||||
rrule.TH.weekday: self.thu,
|
||||
rrule.FR.weekday: self.fri,
|
||||
rrule.SA.weekday: self.sat,
|
||||
rrule.SU.weekday: self.sun,
|
||||
}.items() if weekday
|
||||
)
|
||||
|
||||
@@ -458,7 +460,7 @@ class RecurrenceRule(models.Model):
|
||||
if freq == 'monthly' and self.month_by == 'date': # e.g. every 15th of the month
|
||||
rrule_params['bymonthday'] = self.day
|
||||
elif freq == 'monthly' and self.month_by == 'day': # e.g. every 2nd Monday in the month
|
||||
rrule_params['byweekday'] = getattr(rrule, self.weekday)(int(self.byday)) # e.g. MO(+2) for the second Monday of the month
|
||||
rrule_params['byweekday'] = getattr(rrule, RRULE_WEEKDAYS[self.weekday])(int(self.byday)) # e.g. MO(+2) for the second Monday of the month
|
||||
elif freq == 'weekly':
|
||||
weekdays = self._get_week_days()
|
||||
if not weekdays:
|
||||
|
||||
@@ -38,11 +38,11 @@ class TestRecurrentEvent(common.TransactionCase):
|
||||
'duration': 1.0,
|
||||
'until': '2011-04-30',
|
||||
'end_type': 'end_date',
|
||||
'fr': True,
|
||||
'mo': True,
|
||||
'th': True,
|
||||
'tu': True,
|
||||
'we': True,
|
||||
'fri': True,
|
||||
'mon': True,
|
||||
'thu': True,
|
||||
'tue': True,
|
||||
'wed': True,
|
||||
'name': 'Review code with programmer',
|
||||
'recurrency': True,
|
||||
'rrule_type': 'weekly'
|
||||
|
||||
@@ -43,7 +43,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
""" Every week, on Tuesdays, for 3 occurences """
|
||||
detached_events = self.event._apply_recurrence_values({
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'tue': True,
|
||||
'interval': 1,
|
||||
'count': 3,
|
||||
'event_tz': 'UTC',
|
||||
@@ -63,7 +63,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
self.event._apply_recurrence_values({
|
||||
'interval': 2,
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'tue': True,
|
||||
'count': 2,
|
||||
'event_tz': 'UTC',
|
||||
})
|
||||
@@ -81,7 +81,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
self.event._apply_recurrence_values({
|
||||
'interval': 2,
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'tue': True,
|
||||
'count': 2,
|
||||
'event_tz': 'UTC',
|
||||
})
|
||||
@@ -96,7 +96,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
def test_weekly_until(self):
|
||||
self.event._apply_recurrence_values({
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'tue': True,
|
||||
'interval': 2,
|
||||
'end_type': 'end_date',
|
||||
'until': datetime(2019, 11, 15),
|
||||
@@ -156,7 +156,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
'interval': 2,
|
||||
'month_by': 'day',
|
||||
'byday': '3',
|
||||
'weekday': 'TU',
|
||||
'weekday': 'TUE',
|
||||
'end_type': 'end_date',
|
||||
'until': date(2020, 3, 15),
|
||||
'event_tz': 'UTC',
|
||||
@@ -176,7 +176,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
'interval': 2,
|
||||
'rrule_type': 'monthly',
|
||||
'month_by': 'day',
|
||||
'weekday': 'WE',
|
||||
'weekday': 'WED',
|
||||
'byday': '-1',
|
||||
'end_type': 'end_date',
|
||||
'until': date(2020, 1, 15),
|
||||
@@ -211,7 +211,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
self.event._apply_recurrence_values({
|
||||
'interval': 2,
|
||||
'rrule_type': 'weekly',
|
||||
'mo': True,
|
||||
'mon': True,
|
||||
'count': '2',
|
||||
'event_tz': 'US/Eastern', # DST change on 2002/10/27
|
||||
})
|
||||
@@ -232,7 +232,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
self.event._apply_recurrence_values({
|
||||
'interval': 1,
|
||||
'rrule_type': 'weekly',
|
||||
'su': True,
|
||||
'sun': True,
|
||||
'count': '2',
|
||||
'event_tz': 'US/Eastern' # DST change on 2002/4/7
|
||||
})
|
||||
@@ -254,7 +254,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
self.event._apply_recurrence_values({
|
||||
'interval': 1,
|
||||
'rrule_type': 'weekly',
|
||||
'su': True,
|
||||
'sun': True,
|
||||
'count': '2',
|
||||
'event_tz': 'US/Eastern' # DST change on 2002/4/7
|
||||
})
|
||||
@@ -276,7 +276,7 @@ class TestCreateRecurrentEvents(TestRecurrentEvents):
|
||||
self.event._apply_recurrence_values({
|
||||
'interval': 1,
|
||||
'rrule_type': 'weekly',
|
||||
'mo': True,
|
||||
'mon': True,
|
||||
'count': 2,
|
||||
'event_tz': 'Europe/Brussels' # DST change on 2020/3/23
|
||||
})
|
||||
@@ -298,7 +298,7 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
'stop': datetime(2019, 10, 24, 18, 0),
|
||||
'recurrency': True,
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'tue': True,
|
||||
'interval': 1,
|
||||
'count': 3,
|
||||
'event_tz': 'Etc/GMT-4',
|
||||
@@ -322,8 +322,8 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
self.assertNotEqual(self.recurrence, new_recurrence)
|
||||
self.assertEqual(new_recurrence.count, 2)
|
||||
self.assertEqual(new_recurrence.dtstart, datetime(2019, 11, 2, 1, 0))
|
||||
self.assertFalse(new_recurrence.tu)
|
||||
self.assertTrue(new_recurrence.sa)
|
||||
self.assertFalse(new_recurrence.tue)
|
||||
self.assertTrue(new_recurrence.sat)
|
||||
self.assertEventDates(new_recurrence.calendar_event_ids, [
|
||||
(datetime(2019, 11, 2, 1, 0), datetime(2019, 11, 5, 18, 0)),
|
||||
(datetime(2019, 11, 9, 1, 0), datetime(2019, 11, 12, 18, 0)),
|
||||
@@ -340,8 +340,8 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
self.assertFalse(self.recurrence.exists())
|
||||
self.assertEqual(new_recurrence.count, 3)
|
||||
self.assertEqual(new_recurrence.dtstart, datetime(2019, 10, 26, 1, 0))
|
||||
self.assertFalse(new_recurrence.tu)
|
||||
self.assertTrue(new_recurrence.sa)
|
||||
self.assertFalse(new_recurrence.tue)
|
||||
self.assertTrue(new_recurrence.sat)
|
||||
self.assertEventDates(new_recurrence.calendar_event_ids, [
|
||||
(datetime(2019, 10, 26, 1, 0), datetime(2019, 10, 29, 18, 0)),
|
||||
(datetime(2019, 11, 2, 1, 0), datetime(2019, 11, 5, 18, 0)),
|
||||
@@ -374,8 +374,8 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
def test_change_week_day_rrule(self):
|
||||
recurrence = self.events.recurrence_id
|
||||
recurrence.rrule = 'FREQ=WEEKLY;COUNT=3;BYDAY=WE' # from TU to WE
|
||||
self.assertFalse(self.recurrence.tu)
|
||||
self.assertTrue(self.recurrence.we)
|
||||
self.assertFalse(self.recurrence.tue)
|
||||
self.assertTrue(self.recurrence.wed)
|
||||
|
||||
def test_shift_all_base_inactive(self):
|
||||
self.recurrence.base_event_id.active = False
|
||||
@@ -406,7 +406,7 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
event = self.events[1]
|
||||
event.write({
|
||||
'recurrence_update': 'future_events',
|
||||
'fr': True, # recurrence is now Tuesday AND Friday
|
||||
'fri': True, # recurrence is now Tuesday AND Friday
|
||||
'count': 4,
|
||||
})
|
||||
self.assertEventDates(self.recurrence.calendar_event_ids, [
|
||||
@@ -425,14 +425,14 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
self.assertEqual(events[2], self.events[2], "Events on Tuesdays should not have changed")
|
||||
self.assertNotEqual(events.recurrence_id, self.recurrence, "Events should no longer be linked to the original recurrence")
|
||||
self.assertEqual(events.recurrence_id.count, 4, "The new recurrence should have 4")
|
||||
self.assertTrue(event.recurrence_id.tu)
|
||||
self.assertTrue(event.recurrence_id.fr)
|
||||
self.assertTrue(event.recurrence_id.tue)
|
||||
self.assertTrue(event.recurrence_id.fri)
|
||||
|
||||
def test_update_recurrence_all(self):
|
||||
with self.assertRaises(UserError):
|
||||
self.events[1].write({
|
||||
'recurrence_update': 'all_events',
|
||||
'mo': True, # recurrence is now Tuesday AND Monday
|
||||
'mon': True, # recurrence is now Tuesday AND Monday
|
||||
})
|
||||
|
||||
def test_shift_single(self):
|
||||
@@ -484,7 +484,7 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
'stop_date': datetime(2019, 10, 24),
|
||||
'recurrency': True,
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'tue': True,
|
||||
'interval': 1,
|
||||
'count': 3,
|
||||
'event_tz': 'Etc/GMT-4',
|
||||
@@ -506,8 +506,8 @@ class TestUpdateRecurrentEvents(TestRecurrentEvents):
|
||||
self.assertNotEqual(recurrence, new_recurrence)
|
||||
self.assertEqual(new_recurrence.count, 2)
|
||||
self.assertEqual(new_recurrence.dtstart, datetime(2019, 11, 2, 8, 0))
|
||||
self.assertFalse(new_recurrence.tu)
|
||||
self.assertTrue(new_recurrence.sa)
|
||||
self.assertFalse(new_recurrence.tue)
|
||||
self.assertTrue(new_recurrence.sat)
|
||||
self.assertEventDates(new_recurrence.calendar_event_ids, [
|
||||
(datetime(2019, 11, 2, 8, 0), datetime(2019, 11, 5, 18, 0)),
|
||||
(datetime(2019, 11, 9, 8, 0), datetime(2019, 11, 12, 18, 0)),
|
||||
@@ -527,8 +527,8 @@ class TestUpdateMultiDayWeeklyRecurrentEvents(TestRecurrentEvents):
|
||||
'stop': datetime(2019, 10, 24, 18, 0),
|
||||
'recurrency': True,
|
||||
'rrule_type': 'weekly',
|
||||
'tu': True,
|
||||
'fr': True,
|
||||
'tue': True,
|
||||
'fri': True,
|
||||
'interval': 1,
|
||||
'count': 3,
|
||||
'event_tz': 'Etc/GMT-4',
|
||||
@@ -564,11 +564,11 @@ class TestUpdateMultiDayWeeklyRecurrentEvents(TestRecurrentEvents):
|
||||
'start': event.start + relativedelta(days=3),
|
||||
'stop': event.stop + relativedelta(days=3),
|
||||
})
|
||||
self.assertTrue(self.recurrence.fr)
|
||||
self.assertTrue(self.recurrence.tu)
|
||||
self.assertTrue(event.recurrence_id.tu)
|
||||
self.assertTrue(event.recurrence_id.mo)
|
||||
self.assertFalse(event.recurrence_id.fr)
|
||||
self.assertTrue(self.recurrence.fri)
|
||||
self.assertTrue(self.recurrence.tue)
|
||||
self.assertTrue(event.recurrence_id.tue)
|
||||
self.assertTrue(event.recurrence_id.mon)
|
||||
self.assertFalse(event.recurrence_id.fri)
|
||||
self.assertEqual(event.recurrence_id.count, 2)
|
||||
|
||||
|
||||
@@ -586,7 +586,7 @@ class TestUpdateMonthlyByDay(TestRecurrentEvents):
|
||||
'interval': 1,
|
||||
'count': 3,
|
||||
'month_by': 'day',
|
||||
'weekday': 'TU',
|
||||
'weekday': 'TUE',
|
||||
'byday': '3',
|
||||
'event_tz': 'Etc/GMT-4',
|
||||
})
|
||||
|
||||
@@ -180,13 +180,13 @@
|
||||
</div>
|
||||
</group>
|
||||
<group attrs="{'invisible': [('rrule_type', '!=', 'weekly')]}" name="weekdays">
|
||||
<field name="mo"/>
|
||||
<field name="tu"/>
|
||||
<field name="we"/>
|
||||
<field name="th"/>
|
||||
<field name="fr"/>
|
||||
<field name="sa"/>
|
||||
<field name="su"/>
|
||||
<field name="mon"/>
|
||||
<field name="tue"/>
|
||||
<field name="wed"/>
|
||||
<field name="thu"/>
|
||||
<field name="fri"/>
|
||||
<field name="sat"/>
|
||||
<field name="sun"/>
|
||||
</group>
|
||||
<group attrs="{'invisible': [('rrule_type', '!=', 'monthly')]}">
|
||||
<label string="Day of Month" for="month_by"/>
|
||||
|
||||
@@ -12,7 +12,7 @@ from textwrap import dedent
|
||||
from odoo.addons.base.models.res_partner import _tz_get
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
WEEKDAY_TO_NAME = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
|
||||
WEEKDAY_TO_NAME = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
|
||||
CRON_DEPENDS = {'name', 'active', 'mode', 'until', 'notification_time', 'notification_moment', 'tz'}
|
||||
|
||||
|
||||
@@ -42,13 +42,13 @@ class LunchAlert(models.Model):
|
||||
cron_id = fields.Many2one('ir.cron', ondelete='cascade', required=True, readonly=True)
|
||||
|
||||
until = fields.Date('Show Until')
|
||||
recurrency_monday = fields.Boolean('Monday', default=True)
|
||||
recurrency_tuesday = fields.Boolean('Tuesday', default=True)
|
||||
recurrency_wednesday = fields.Boolean('Wednesday', default=True)
|
||||
recurrency_thursday = fields.Boolean('Thursday', default=True)
|
||||
recurrency_friday = fields.Boolean('Friday', default=True)
|
||||
recurrency_saturday = fields.Boolean('Saturday', default=True)
|
||||
recurrency_sunday = fields.Boolean('Sunday', default=True)
|
||||
mon = fields.Boolean(default=True)
|
||||
tue = fields.Boolean(default=True)
|
||||
wed = fields.Boolean(default=True)
|
||||
thu = fields.Boolean(default=True)
|
||||
fri = fields.Boolean(default=True)
|
||||
sat = fields.Boolean(default=True)
|
||||
sun = fields.Boolean(default=True)
|
||||
|
||||
available_today = fields.Boolean('Is Displayed Today',
|
||||
compute='_compute_available_today', search='_search_available_today')
|
||||
@@ -63,12 +63,10 @@ class LunchAlert(models.Model):
|
||||
'Notification time must be between 0 and 12')
|
||||
]
|
||||
|
||||
@api.depends('recurrency_monday', 'recurrency_tuesday', 'recurrency_wednesday',
|
||||
'recurrency_thursday', 'recurrency_friday', 'recurrency_saturday',
|
||||
'recurrency_sunday')
|
||||
@api.depends('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')
|
||||
def _compute_available_today(self):
|
||||
today = fields.Date.context_today(self)
|
||||
fieldname = 'recurrency_%s' % (WEEKDAY_TO_NAME[today.weekday()])
|
||||
fieldname = WEEKDAY_TO_NAME[today.weekday()]
|
||||
|
||||
for alert in self:
|
||||
alert.available_today = alert.until > today if alert.until else True and alert[fieldname]
|
||||
@@ -79,7 +77,7 @@ class LunchAlert(models.Model):
|
||||
|
||||
searching_for_true = (operator == '=' and value) or (operator == '!=' and not value)
|
||||
today = fields.Date.context_today(self)
|
||||
fieldname = 'recurrency_%s' % (WEEKDAY_TO_NAME[today.weekday()])
|
||||
fieldname = WEEKDAY_TO_NAME[today.weekday()]
|
||||
|
||||
return expression.AND([
|
||||
[(fieldname, operator, value)],
|
||||
|
||||
@@ -13,7 +13,7 @@ from odoo.tools import float_round
|
||||
from odoo.addons.base.models.res_partner import _tz_get
|
||||
|
||||
|
||||
WEEKDAY_TO_NAME = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
|
||||
WEEKDAY_TO_NAME = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
|
||||
CRON_DEPENDS = {'name', 'active', 'send_by', 'automatic_email_time', 'moment', 'tz'}
|
||||
|
||||
def float_to_time(hours, moment='am', tz=None):
|
||||
@@ -62,13 +62,13 @@ class LunchSupplier(models.Model):
|
||||
automatic_email_time = fields.Float('Order Time', default=12.0, required=True)
|
||||
cron_id = fields.Many2one('ir.cron', ondelete='cascade', required=True, readonly=True)
|
||||
|
||||
recurrency_monday = fields.Boolean('Monday', default=True)
|
||||
recurrency_tuesday = fields.Boolean('Tuesday', default=True)
|
||||
recurrency_wednesday = fields.Boolean('Wednesday', default=True)
|
||||
recurrency_thursday = fields.Boolean('Thursday', default=True)
|
||||
recurrency_friday = fields.Boolean('Friday', default=True)
|
||||
recurrency_saturday = fields.Boolean('Saturday')
|
||||
recurrency_sunday = fields.Boolean('Sunday')
|
||||
mon = fields.Boolean(default=True)
|
||||
tue = fields.Boolean(default=True)
|
||||
wed = fields.Boolean(default=True)
|
||||
thu = fields.Boolean(default=True)
|
||||
fri = fields.Boolean(default=True)
|
||||
sat = fields.Boolean()
|
||||
sun = fields.Boolean()
|
||||
|
||||
recurrency_end_date = fields.Date('Until', help="This field is used in order to ")
|
||||
|
||||
@@ -206,9 +206,7 @@ class LunchSupplier(models.Model):
|
||||
|
||||
orders.action_confirm()
|
||||
|
||||
@api.depends('recurrency_end_date', 'recurrency_monday', 'recurrency_tuesday',
|
||||
'recurrency_wednesday', 'recurrency_thursday', 'recurrency_friday',
|
||||
'recurrency_saturday', 'recurrency_sunday')
|
||||
@api.depends('recurrency_end_date', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')
|
||||
def _compute_available_today(self):
|
||||
now = fields.Datetime.now().replace(tzinfo=pytz.UTC)
|
||||
|
||||
@@ -218,7 +216,7 @@ class LunchSupplier(models.Model):
|
||||
if supplier.recurrency_end_date and now.date() >= supplier.recurrency_end_date:
|
||||
supplier.available_today = False
|
||||
else:
|
||||
fieldname = 'recurrency_%s' % (WEEKDAY_TO_NAME[now.weekday()])
|
||||
fieldname = WEEKDAY_TO_NAME[now.weekday()]
|
||||
supplier.available_today = supplier[fieldname]
|
||||
|
||||
def _search_available_today(self, operator, value):
|
||||
@@ -228,7 +226,7 @@ class LunchSupplier(models.Model):
|
||||
searching_for_true = (operator == '=' and value) or (operator == '!=' and not value)
|
||||
|
||||
now = fields.Datetime.now().replace(tzinfo=pytz.UTC).astimezone(pytz.timezone(self.env.user.tz or 'UTC'))
|
||||
fieldname = 'recurrency_%s' % (WEEKDAY_TO_NAME[now.weekday()])
|
||||
fieldname = WEEKDAY_TO_NAME[now.weekday()]
|
||||
|
||||
recurrency_domain = expression.OR([
|
||||
[('recurrency_end_date', '=', False)],
|
||||
|
||||
@@ -91,13 +91,13 @@ class LunchSupplier(models.Model):
|
||||
('active', populate.cartesian([True, False])),
|
||||
('send_by', populate.cartesian(['phone', 'mail'])),
|
||||
('delivery', populate.cartesian(['delivery', 'no_delivery'])),
|
||||
('recurrency_monday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_tuesday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_wednesday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_thursday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_friday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_saturday', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('recurrency_sunday', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('mon', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('tue', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('wed', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('thu', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('fri', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('sat', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('sun', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('available_location_ids', populate.iterate(
|
||||
[[], [(6, 0, location_ids)]],
|
||||
then=populate.compute(get_location_ids))),
|
||||
@@ -150,13 +150,13 @@ class LunchAlert(models.Model):
|
||||
('active', populate.cartesian([True, False])),
|
||||
('recipients', populate.cartesian(['everyone', 'last_week', 'last_month', 'last_year'])),
|
||||
('mode', populate.iterate(['alert', 'chat'])),
|
||||
('recurrency_monday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_tuesday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_wednesday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_thursday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_friday', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('recurrency_saturday', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('recurrency_sunday', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('mon', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('tue', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('wed', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('thu', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('fri', populate.iterate([True, False], [0.9, 0.1])),
|
||||
('sat', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('sun', populate.iterate([False, True], [0.9, 0.1])),
|
||||
('name', populate.constant('alert_{counter}')),
|
||||
('message', populate.constant('<strong>alert message {counter}</strong>')),
|
||||
('notification_time', populate.randfloat(0, 12)),
|
||||
|
||||
@@ -56,10 +56,10 @@ env['lunch.supplier'].browse([{self.supplier_kothai.id}])._send_auto_email()""")
|
||||
self.env.user.tz = 'Europe/Brussels'
|
||||
Supplier = self.env['lunch.supplier']
|
||||
|
||||
tests = [(self.monday_1am, 1.0, 'monday'), (self.monday_10am, 10.0, 'monday'),
|
||||
(self.monday_1pm, 13.0, 'monday'), (self.monday_8pm, 20.0, 'monday'),
|
||||
(self.saturday_3am, 3.0, 'saturday'), (self.saturday_10am, 10.0, 'saturday'),
|
||||
(self.saturday_1pm, 13.0, 'saturday'), (self.saturday_8pm, 20.0, 'saturday')]
|
||||
tests = [(self.monday_1am, 1.0, 'mon'), (self.monday_10am, 10.0, 'mon'),
|
||||
(self.monday_1pm, 13.0, 'mon'), (self.monday_8pm, 20.0, 'mon'),
|
||||
(self.saturday_3am, 3.0, 'sat'), (self.saturday_10am, 10.0, 'sat'),
|
||||
(self.saturday_1pm, 13.0, 'sat'), (self.saturday_8pm, 20.0, 'sat')]
|
||||
|
||||
# It should return an empty domain if we compare to values other than datetime
|
||||
assert Supplier._search_available_today('>', 7) == []
|
||||
@@ -69,7 +69,7 @@ env['lunch.supplier'].browse([{self.supplier_kothai.id}])._send_auto_email()""")
|
||||
with patch.object(fields.Datetime, 'now', return_value=value) as _:
|
||||
assert Supplier._search_available_today('=', True) == ['&', '|', ('recurrency_end_date', '=', False),
|
||||
('recurrency_end_date', '>', value.replace(tzinfo=pytz.UTC).astimezone(pytz.timezone(self.env.user.tz))),
|
||||
('recurrency_%s' % (dayname), '=', True)],\
|
||||
(dayname, '=', True)],\
|
||||
'Wrong domain generated for values (%s, %s)' % (value, rvalue)
|
||||
|
||||
with patch.object(fields.Datetime, 'now', return_value=self.monday_10am) as _:
|
||||
|
||||
@@ -49,13 +49,13 @@
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="recurrency_monday"/>
|
||||
<field name="recurrency_tuesday"/>
|
||||
<field name="recurrency_wednesday"/>
|
||||
<field name="recurrency_thursday"/>
|
||||
<field name="recurrency_friday"/>
|
||||
<field name="recurrency_saturday"/>
|
||||
<field name="recurrency_sunday"/>
|
||||
<field name="mon"/>
|
||||
<field name="tue"/>
|
||||
<field name="wed"/>
|
||||
<field name="thu"/>
|
||||
<field name="fri"/>
|
||||
<field name="sat"/>
|
||||
<field name="sun"/>
|
||||
<label for="notification_time" attrs="{'invisible': [['mode', '!=', 'chat']]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [['mode', '!=', 'chat']]}">
|
||||
<field name="notification_time" attrs="{'required': [('mode', '=', 'chat')]}" widget="float_time"/>
|
||||
|
||||
@@ -47,13 +47,13 @@
|
||||
<group>
|
||||
<group string="Availability">
|
||||
<field name="tz" groups="base.group_no_one"/>
|
||||
<field name="recurrency_monday"/>
|
||||
<field name="recurrency_tuesday"/>
|
||||
<field name="recurrency_wednesday"/>
|
||||
<field name="recurrency_thursday"/>
|
||||
<field name="recurrency_friday"/>
|
||||
<field name="recurrency_saturday"/>
|
||||
<field name="recurrency_sunday"/>
|
||||
<field name="mon"/>
|
||||
<field name="tue"/>
|
||||
<field name="wed"/>
|
||||
<field name="thu"/>
|
||||
<field name="fri"/>
|
||||
<field name="sat"/>
|
||||
<field name="sun"/>
|
||||
<field name="recurrency_end_date" groups="base.group_no_one"/>
|
||||
</group>
|
||||
<group string="Orders">
|
||||
|
||||
@@ -312,13 +312,13 @@ class Meeting(models.Model):
|
||||
if recurrence.month_by == 'day' or recurrence.rrule_type == 'weekly':
|
||||
pattern['daysOfWeek'] = [
|
||||
weekday_name for weekday_name, weekday in {
|
||||
'monday': recurrence.mo,
|
||||
'tuesday': recurrence.tu,
|
||||
'wednesday': recurrence.we,
|
||||
'thursday': recurrence.th,
|
||||
'friday': recurrence.fr,
|
||||
'saturday': recurrence.sa,
|
||||
'sunday': recurrence.su,
|
||||
'monday': recurrence.mon,
|
||||
'tuesday': recurrence.tue,
|
||||
'wednesday': recurrence.wed,
|
||||
'thursday': recurrence.thu,
|
||||
'friday': recurrence.fri,
|
||||
'saturday': recurrence.sat,
|
||||
'sunday': recurrence.sun,
|
||||
}.items() if weekday]
|
||||
pattern['firstDayOfWeek'] = 'sunday'
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ class MicrosoftEvent(abc.Set):
|
||||
result['month_by'] = month_by
|
||||
|
||||
week_days = [x[:2] for x in pattern.get('daysOfWeek', [])]
|
||||
for week_day in ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']:
|
||||
for week_day in ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']:
|
||||
result[week_day] = week_day in week_days
|
||||
if week_days:
|
||||
result['weekday'] = week_days[0].upper()
|
||||
|
||||
Reference in New Issue
Block a user