示例#1
0
 def test_calendar_timezone(self):
     # user in timezone UTC-9 asks for work hours
     #  Limits: between 2013-02-19 10:00:00 and 2013-02-26 15:30:00 (User TZ)
     #          between 2013-02-19 19:00:00 and 2013-02-27 00:30:00 (UTC)
     # Leaves:  between 2013-02-21 10:00:00 and 2013-02-26 12:00:00 (User TZ)
     # res: 19/02 (10-16 (beginning)) + 22/02 (0 (leave)) + 26/02 (12-15.30 (leave+ending))
     self.env.user.tz = 'US/Alaska'
     (self.leave1 | self.leave2 | self.leave3).unlink()
     leave = self.env['resource.calendar.leaves'].create({
         'name':
         'Timezoned Leaves',
         'calendar_id':
         self.calendar.id,
         'resource_id':
         self.resource1_id,
         'date_from':
         to_naive_utc(Datetime.from_string('2013-02-21 10:00:00'),
                      self.env.user),
         'date_to':
         to_naive_utc(Datetime.from_string('2013-02-26 12:00:00'),
                      self.env.user)
     })
     res = self.calendar.get_work_hours_count(
         to_naive_utc(Datetime.from_string('2013-02-19 10:00:00'),
                      self.env.user),
         to_naive_utc(Datetime.from_string('2013-02-26 15:30:00'),
                      self.env.user),
         self.resource1_id,
         compute_leaves=True)
     self.assertEqual(res, 9.5)
示例#2
0
    def test_event_date_range(self):
        self.patcher = patch('izi.addons.event.models.event.fields.Datetime',
                             wraps=Datetime)
        self.mock_datetime = self.patcher.start()

        self.mock_datetime.now.return_value = Datetime.to_string(
            datetime.datetime(2015, 12, 31, 12, 0))

        self.event_0.registration_ids.event_begin_date = datetime.datetime(
            2015, 12, 31, 18, 0)
        self.assertEqual(self.event_0.registration_ids.get_date_range_str(),
                         u'today')

        self.event_0.registration_ids.event_begin_date = datetime.datetime(
            2016, 1, 1, 6, 0)
        self.assertEqual(self.event_0.registration_ids.get_date_range_str(),
                         u'tomorrow')

        self.event_0.registration_ids.event_begin_date = datetime.datetime(
            2016, 1, 2, 6, 0)
        self.assertEqual(self.event_0.registration_ids.get_date_range_str(),
                         u'in 2 days')

        self.mock_datetime.now.return_value = Datetime.to_string(
            datetime.datetime(2015, 12, 10, 12, 0))
        self.event_0.registration_ids.event_begin_date = datetime.datetime(
            2016, 1, 25, 6, 0)
        self.assertEqual(self.event_0.registration_ids.get_date_range_str(),
                         u'next month')

        self.patcher.stop()
示例#3
0
    def _interval_dates(self, frequency, company):
        """
        Method used to compute the theoretical date from which account move lines should be fetched
        @param {string} frequency: a valid value of the selection field on the object (daily, monthly, annually)
            frequencies are literal (daily means 24 hours and so on)
        @param {recordset} company: the company for which the closing is done
        @return {dict} the theoretical date from which account move lines are fetched.
            date_stop date to which the move lines are fetched, always now()
            the dates are in their izi Database string representation
        """
        date_stop = datetime.utcnow()
        interval_from = None
        name_interval = ''
        if frequency == 'daily':
            interval_from = date_stop - timedelta(days=1)
            name_interval = _('Daily Closing')
        elif frequency == 'monthly':
            month_target = date_stop.month > 1 and date_stop.month - 1 or 12
            year_target = month_target < 12 and date_stop.year or date_stop.year - 1
            interval_from = date_stop.replace(year=year_target,
                                              month=month_target)
            name_interval = _('Monthly Closing')
        elif frequency == 'annually':
            year_target = date_stop.year - 1
            interval_from = date_stop.replace(year=year_target)
            name_interval = _('Annual Closing')

        return {
            'interval_from': FieldDateTime.to_string(interval_from),
            'date_stop': FieldDateTime.to_string(date_stop),
            'name_interval': name_interval
        }
示例#4
0
 def test_calendar_working_hours_of_date(self):
     # Test: day1, beginning at 10:30 -> work from 10:30 (arrival) until 16:00
     wh = self.calendar.get_work_hours_count(
         Datetime.from_string('2013-02-19 10:30:00'),
         Datetime.from_string('2013-02-19 18:00:00'),
         self.resource1_id,
         compute_leaves=False)
     self.assertEqual(wh, 5.5)
示例#5
0
 def test_calendar_working_hours_leaves(self):
     # new API: resource and leaves
     # res: 2 weeks -> 40 hours - (3+4) leave hours
     res = self.calendar.get_work_hours_count(
         Datetime.from_string('2013-02-12 06:00:00'),
         Datetime.from_string('2013-02-22 23:00:00'),
         self.resource1_id,
         compute_leaves=True)
     self.assertEqual(res, 33.0)
示例#6
0
 def test_calendar_working_hours(self):
     # new API: resource without leaves
     # res: 2 weeks -> 40 hours
     res = self.calendar.get_work_hours_count(
         Datetime.from_string('2013-02-12 06:00:00'),
         Datetime.from_string('2013-02-22 23:00:00'),
         self.resource1_id,
         compute_leaves=False)
     self.assertEqual(res, 40.0)
示例#7
0
 def test_calendar_days_scheduling_timezone(self):
     self.env.user.tz = 'US/Alaska'
     res = self.calendar.plan_days(
         5,
         to_naive_utc(Datetime.from_string('2013-02-12 09:08:07'),
                      self.env.user))
     self.assertEqual(
         to_naive_user_tz(res, self.env.user).date(),
         Datetime.from_string('2013-02-26 00:00:00').date())
示例#8
0
 def test_interval_and(self):
     self.assertEqual(
         self.env['resource.calendar']._interval_and(
             self.intervals[0], self.intervals[1]),
         self.calendar._interval_new(
             Datetime.from_string('2013-02-04 09:00:00'),
             Datetime.from_string('2013-02-04 11:00:00')))
     self.assertEqual(
         self.env['resource.calendar']._interval_and(
             self.intervals[2], self.intervals[3]), None)
示例#9
0
 def test_calendar_hours_scheduling_timezone(self):
     # user in timezone UTC-9 asks for work hours
     self.env.user.tz = 'US/Alaska'
     res = self.calendar.plan_hours(
         42,
         to_naive_utc(Datetime.from_string('2013-02-12 09:25:00'),
                      self.env.user))
     self.assertEqual(
         res,
         to_naive_utc(Datetime.from_string('2013-02-26 11:25:00'),
                      self.env.user))
示例#10
0
 def test_interval_remove(self):
     working_interval = self.calendar._interval_new(
         Datetime.from_string('2013-02-04 08:00:00'),
         Datetime.from_string('2013-02-04 18:00:00'))
     result = self.env['resource.calendar']._interval_remove_leaves(
         working_interval, self.intervals)
     self.assertEqual(len(result), 1)
     # First interval: 04, 14-17
     self.assertEqual(result[0][:2],
                      (Datetime.from_string('2013-02-04 14:00:00'),
                       Datetime.from_string('2013-02-04 17:00:00')))
示例#11
0
    def test_calendar_working_day_intervals_limited_attendances(self):
        """ Test attendances limited in time. """
        attendance = self.env['resource.calendar.attendance'].search([
            ('name', '=', 'Att3')
        ])
        attendance.write({
            'date_from': self.date2 + relativedelta(days=7),
            'date_to': False,
        })
        intervals = self.calendar._get_day_work_intervals(
            self.date2.date(), start_time=self.date2.time())
        self.assertEqual(len(intervals), 1)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-15 10:11:12'),
                          Datetime.from_string('2013-02-15 13:00:00')))

        attendance.write({
            'date_from': False,
            'date_to': self.date2 - relativedelta(days=7),
        })
        intervals = self.calendar._get_day_work_intervals(
            self.date2.date(), start_time=self.date2.time())
        self.assertEqual(len(intervals), 1)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-15 10:11:12'),
                          Datetime.from_string('2013-02-15 13:00:00')))

        attendance.write({
            'date_from': self.date2 + relativedelta(days=7),
            'date_to': self.date2 - relativedelta(days=7),
        })
        intervals = self.calendar._get_day_work_intervals(
            self.date2.date(), start_time=self.date2.time())
        self.assertEqual(len(intervals), 1)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-15 10:11:12'),
                          Datetime.from_string('2013-02-15 13:00:00')))

        attendance.write({
            'date_from': self.date2,
            'date_to': self.date2,
        })
        intervals = self.calendar._get_day_work_intervals(
            self.date2.date(), start_time=self.date2.time())
        self.assertEqual(len(intervals), 2)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-15 10:11:12'),
                          Datetime.from_string('2013-02-15 13:00:00')))
        self.assertEqual(intervals[1][:2],
                         (Datetime.from_string('2013-02-15 16:00:00'),
                          Datetime.from_string('2013-02-15 23:00:00')))
示例#12
0
    def test_calendar_working_day_intervals_no_leaves(self):
        # Test: day0 without leaves: 1 interval
        intervals = self.calendar._get_day_work_intervals(
            Date.from_string('2013-02-12'), start_time=time(9, 8, 7))
        self.assertEqual(len(intervals), 1)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-12 09:08:07'),
                          Datetime.from_string('2013-02-12 16:00:00')))
        self.assertEqual(intervals[0][2]['attendances'], self.att_1)

        # Test: day1, beginning at 10:30 -> work from 10:30 (arrival) until 16:00
        intervals = self.calendar._get_day_work_intervals(
            Date.from_string('2013-02-19'), start_time=time(10, 30, 0))
        self.assertEqual(len(intervals), 1)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-19 10:30:00'),
                          Datetime.from_string('2013-02-19 16:00:00')))
        self.assertEqual(intervals[0][2]['attendances'], self.att_1)

        # Test: day3 without leaves: 2 interval
        intervals = self.calendar._get_day_work_intervals(
            Date.from_string('2013-02-15'), start_time=time(10, 11, 12))
        self.assertEqual(len(intervals), 2)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-15 10:11:12'),
                          Datetime.from_string('2013-02-15 13:00:00')))
        self.assertEqual(intervals[1][:2],
                         (Datetime.from_string('2013-02-15 16:00:00'),
                          Datetime.from_string('2013-02-15 23:00:00')))
        self.assertEqual(intervals[0][2]['attendances'], self.att_2)
        self.assertEqual(intervals[1][2]['attendances'], self.att_3)
示例#13
0
 def test_interval_schedule_hours(self):
     cleaned_intervals = self.env['resource.calendar']._interval_merge(
         self.intervals)
     result = self.env['resource.calendar']._interval_schedule_hours(
         cleaned_intervals, 5.5)
     self.assertEqual(len(result), 2)
     # First interval: 03, 8-10 untouched
     self.assertEqual(result[0][:2],
                      (Datetime.from_string('2013-02-03 08:00:00'),
                       Datetime.from_string('2013-02-03 10:00:00')))
     # First interval: 04, 08-11:30
     self.assertEqual(result[1][:2],
                      (Datetime.from_string('2013-02-04 08:00:00'),
                       Datetime.from_string('2013-02-04 11:30:00')))
示例#14
0
    def test_in_date_5(self):
        """ Receive the same lot at different times, once they're in the same location, the quants
        are merged and only the earliest incoming date is kept.
        """
        stock_location = self.env.ref('stock.stock_location_stock')
        product1 = self.env['product.product'].create({
            'name': 'Product A',
            'type': 'product',
            'tracking': 'lot',
        })
        lot1 = self.env['stock.production.lot'].create({
            'name':
            'lot1',
            'product_id':
            product1.id,
        })

        in_date1 = datetime.now()
        self.env['stock.quant']._update_available_quantity(product1,
                                                           stock_location,
                                                           1.0,
                                                           lot_id=lot1,
                                                           in_date=in_date1)

        quant = self.env['stock.quant'].search([
            ('product_id', '=', product1.id),
            ('location_id', '=', stock_location.id),
        ])
        self.assertEqual(len(quant), 1)
        self.assertEqual(quant.quantity, 1)
        self.assertEqual(quant.lot_id.id, lot1.id)
        from izi.fields import Datetime
        self.assertEqual(quant.in_date, Datetime.to_string(in_date1))

        in_date2 = datetime.now() - timedelta(days=5)
        self.env['stock.quant']._update_available_quantity(product1,
                                                           stock_location,
                                                           1.0,
                                                           lot_id=lot1,
                                                           in_date=in_date2)

        quant = self.env['stock.quant'].search([
            ('product_id', '=', product1.id),
            ('location_id', '=', stock_location.id),
        ])
        self.assertEqual(len(quant), 1)
        self.assertEqual(quant.quantity, 2)
        self.assertEqual(quant.lot_id.id, lot1.id)
        self.assertEqual(quant.in_date, Datetime.to_string(in_date2))
示例#15
0
    def test_calendar_working_day_intervals_leaves_generic(self):
        # Test: day0 with leaves outside range: 1 interval
        intervals = self.calendar._get_day_work_intervals(
            Date.from_string('2013-02-12'),
            start_time=time(7, 0, 0),
            compute_leaves=True)
        self.assertEqual(len(intervals), 1)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-12 08:00:00'),
                          Datetime.from_string('2013-02-12 16:00:00')))

        # Test: day0 with leaves: 2 intervals because of leave between 9 and 12, ending at 15:45:30
        intervals = self.calendar._get_day_work_intervals(
            Date.from_string('2013-02-19'),
            start_time=time(8, 15, 0),
            end_time=time(15, 45, 30),
            compute_leaves=True)
        self.assertEqual(len(intervals), 2)
        self.assertEqual(intervals[0][:2],
                         (Datetime.from_string('2013-02-19 08:15:00'),
                          Datetime.from_string('2013-02-19 09:00:00')))
        self.assertEqual(intervals[1][:2],
                         (Datetime.from_string('2013-02-19 12:00:00'),
                          Datetime.from_string('2013-02-19 15:45:30')))
        self.assertEqual(intervals[0][2]['attendances'], self.att_1)
        self.assertEqual(intervals[0][2]['leaves'], self.leave1)
        self.assertEqual(intervals[1][2]['attendances'], self.att_1)
        self.assertEqual(intervals[0][2]['leaves'], self.leave1)
示例#16
0
    def _get_car_atn(self, acquisition_date, car_value, fuel_type, co2):
        # Compute the correction coefficient from the age of the car
        now = Datetime.from_string(Datetime.now())
        start = Datetime.from_string(acquisition_date)
        if start:
            number_of_month = (
                now.year - start.year) * 12.0 + now.month - start.month + int(
                    bool(now.day - start.day + 1))
            if number_of_month <= 12:
                age_coefficient = 1.00
            elif number_of_month <= 24:
                age_coefficient = 0.94
            elif number_of_month <= 36:
                age_coefficient = 0.88
            elif number_of_month <= 48:
                age_coefficient = 0.82
            elif number_of_month <= 60:
                age_coefficient = 0.76
            else:
                age_coefficient = 0.70
            car_value = car_value * age_coefficient
            # Compute atn value from corrected car_value
            magic_coeff = 6.0 / 7.0  # Don't ask me why
            if fuel_type == 'electric':
                atn = 0.0
            else:
                if fuel_type in ['diesel', 'hybrid']:
                    reference = 87.0
                else:
                    reference = 105.0

                if co2 <= reference:
                    atn = car_value * max(0.04,
                                          (0.055 - 0.001 *
                                           (reference - co2))) * magic_coeff
                else:
                    atn = car_value * min(0.18,
                                          (0.055 + 0.001 *
                                           (co2 - reference))) * magic_coeff
            return max(1280, atn) / 12.0
示例#17
0
    def test_work_days_count(self):
        # user in timezone UTC-9 asks for work hours
        self.env.user.tz = 'US/Alaska'

        res = self.test.get_work_days_count(
            to_naive_utc(Datetime.from_string('2013-02-12 06:00:00'),
                         self.env.user),
            to_naive_utc(Datetime.from_string('2013-02-22 23:00:00'),
                         self.env.user))
        self.assertEqual(res, 3.75)  # generic leaves, 3 hours

        res = self.test.get_work_days_count(
            to_naive_utc(Datetime.from_string('2013-02-12 06:00:00'),
                         self.env.user),
            to_naive_utc(Datetime.from_string('2013-02-22 20:00:00'),
                         self.env.user))
        self.assertEqual(res, 3.5)  # last day is truncated of 3 hours on 12)

        self.env['resource.calendar.leaves'].create({
            'name':
            'Timezoned Leaves',
            'calendar_id':
            self.test.resource_calendar_id.id,
            'resource_id':
            self.test.resource_id.id,
            'date_from':
            to_naive_utc(Datetime.from_string('2013-02-13 10:00:00'),
                         self.env.user),
            'date_to':
            to_naive_utc(Datetime.from_string('2013-02-17 12:00:00'),
                         self.env.user)
        })

        res = self.test.get_work_days_count(
            to_naive_utc(Datetime.from_string('2013-02-12 06:00:00'),
                         self.env.user),
            to_naive_utc(Datetime.from_string('2013-02-22 20:00:00'),
                         self.env.user))
        self.assertEqual(
            res, 2.5
        )  # one day is on leave and last day is truncated of 3 hours on 12)
示例#18
0
 def test_interval_merge(self):
     cleaned_intervals = self.env['resource.calendar']._interval_merge(
         self.intervals)
     self.assertEqual(len(cleaned_intervals), 3)
     # First interval: 03, unchanged
     self.assertEqual(cleaned_intervals[0][:2],
                      (Datetime.from_string('2013-02-03 08:00:00'),
                       Datetime.from_string('2013-02-03 10:00:00')))
     # Second interval: 04, 08-14, combining 08-12 and 11-14, 09-11 being inside 08-12
     self.assertEqual(cleaned_intervals[1][:2],
                      (Datetime.from_string('2013-02-04 08:00:00'),
                       Datetime.from_string('2013-02-04 14:00:00')))
     # Third interval: 04, 17-21, 18-19 being inside 17-21
     self.assertEqual(cleaned_intervals[2][:2],
                      (Datetime.from_string('2013-02-04 17:00:00'),
                       Datetime.from_string('2013-02-04 21:00:00')))
示例#19
0
 def test_calendar_hours_scheduling_timezone_2(self):
     # Call schedule_hours for a user in Autralia, Sydney (GMT+10)
     # Two cases:
     # - start at 2013-02-15 08:00:00 => 2013-02-14 21:00:00 in UTC
     # - start at 2013-02-15 11:00:00 => 2013-02-15 00:00:00 in UTC
     self.env.user.tz = 'Australia/Sydney'
     self.env['resource.calendar.attendance'].create({
         'name':
         'Day3 - 1',
         'dayofweek':
         '3',
         'hour_from':
         8,
         'hour_to':
         12,
         'calendar_id':
         self.calendar.id,
     })
     self.env['resource.calendar.attendance'].create({
         'name':
         'Day3 - 2',
         'dayofweek':
         '3',
         'hour_from':
         13,
         'hour_to':
         17,
         'calendar_id':
         self.calendar.id,
     })
     hours = 1.0 / 60.0
     for test_date in ['2013-02-15 08:00:00', '2013-02-15 11:00:00']:
         start_dt = Datetime.from_string(test_date)
         start_dt_utc = to_naive_utc(start_dt, self.env.user)
         res = self.calendar._schedule_hours(hours, start_dt_utc)
         self.assertEqual(
             [(start_dt_utc, start_dt_utc.replace(minute=1))], res,
             'resource_calendar: wrong schedule_hours computation')
示例#20
0
    def test_calendar_days_scheduling(self):
        res = self.calendar.plan_days(
            5, Datetime.from_string('2013-02-12 09:08:07'))
        self.assertEqual(res.date(),
                         Datetime.from_string('2013-02-26 00:00:00').date(),
                         'resource_calendar: wrong days scheduling')
        res = self.calendar.plan_days(
            -2, Datetime.from_string('2013-02-12 09:08:07'))
        self.assertEqual(res.date(),
                         Datetime.from_string('2013-02-08 00:00:00').date(),
                         'resource_calendar: wrong days scheduling')

        res = self.calendar.plan_days(
            5,
            Datetime.from_string('2013-02-12 09:08:07'),
            compute_leaves=True,
            resource_id=self.resource1_id)
        self.assertEqual(res.date(),
                         Datetime.from_string('2013-03-01 00:00:00').date(),
                         'resource_calendar: wrong days scheduling')
示例#21
0
    def test_work_days_count_timezones_ultra(self):
        # user in timezone UTC+4 is attached to the resource and create leaves
        self.test.resource_id.write({
            'user_id': self.lost_user.id,
        })
        reunion_leave = self.env['resource.calendar.leaves'].sudo(
            self.lost_user).create({
                'name':
                'Timezoned Leaves',
                'calendar_id':
                self.test.resource_calendar_id.id,
                'resource_id':
                self.test.resource_id.id,
                'date_from':
                to_naive_utc(Datetime.from_string('2013-02-12 10:00:00'),
                             self.lost_user),
                'date_to':
                to_naive_utc(Datetime.from_string('2013-02-12 12:00:00'),
                             self.lost_user)
            })
        self.assertEqual(reunion_leave.tz, 'Indian/Reunion')

        # user in timezone UTC-9 read and manipulate leaves
        self.env.user.tz = 'US/Alaska'
        res = self.test.get_work_days_data(
            to_naive_utc(Datetime.from_string('2013-02-12 06:00:00'),
                         self.env.user),
            to_naive_utc(Datetime.from_string('2013-02-12 20:00:00'),
                         self.env.user))
        self.assertEqual(res['days'], 0.75)
        self.assertEqual(res['hours'], 6.0)

        # user in timezone UTC+4 read and manipulate leaves
        res = self.test.sudo(self.lost_user).get_work_days_data(
            to_naive_utc(Datetime.from_string('2013-02-12 06:00:00'),
                         self.env.user),
            to_naive_utc(Datetime.from_string('2013-02-12 20:00:00'),
                         self.env.user))
        self.assertEqual(res['days'], 0.75)
        self.assertEqual(res['hours'], 6.0)
示例#22
0
    def test_calendar_hours_scheduling_forward(self):
        res = self.calendar._schedule_hours(
            40, day_dt=Datetime.from_string('2013-02-12 09:00:00'))
        self.assertEqual(res[0][:2],
                         (Datetime.from_string('2013-02-12 09:00:00'),
                          Datetime.from_string('2013-02-12 16:00:00')))
        self.assertEqual(res[1][:2],
                         (Datetime.from_string('2013-02-15 08:00:00'),
                          Datetime.from_string('2013-02-15 13:00:00')))
        self.assertEqual(res[2][:2],
                         (Datetime.from_string('2013-02-15 16:00:00'),
                          Datetime.from_string('2013-02-15 23:00:00')))
        self.assertEqual(res[3][:2],
                         (Datetime.from_string('2013-02-19 08:00:00'),
                          Datetime.from_string('2013-02-19 16:00:00')))
        self.assertEqual(res[4][:2],
                         (Datetime.from_string('2013-02-22 08:00:00'),
                          Datetime.from_string('2013-02-22 13:00:00')))
        self.assertEqual(res[5][:2],
                         (Datetime.from_string('2013-02-22 16:00:00'),
                          Datetime.from_string('2013-02-22 23:00:00')))
        self.assertEqual(res[6][:2],
                         (Datetime.from_string('2013-02-26 08:00:00'),
                          Datetime.from_string('2013-02-26 09:00:00')))

        td = timedelta()
        for item in res:
            td += item[1] - item[0]
        self.assertEqual(td.total_seconds() / 3600.0, 40.0)

        res = self.calendar.plan_hours(
            40, day_dt=Datetime.from_string('2013-02-12 09:00:00'))
        self.assertEqual(res, Datetime.from_string('2013-02-26 09:00:00'))
示例#23
0
 def _get_acquisition_date(self):
     self.ensure_one()
     return babel.dates.format_date(
         date=Datetime.from_string(self.acquisition_date),
         format='MMMM y',
         locale=self._context.get('lang') or 'en_US')
示例#24
0
 def _compute_atn(self):
     now = Datetime.now()
     for model in self:
         model.default_atn = self.env['fleet.vehicle']._get_car_atn(
             now, model.default_car_value, model.default_fuel_type,
             model.default_co2)
示例#25
0
 def test_04(self):
     """After 48 hours"""
     date = Datetime.to_string(Datetime.from_string('2014-01-03 00:00:00'))
     self.mock_datetime.now.return_value = date
     self.assertAlmostEqual(self.line.theoritical_amount, -2)
示例#26
0
 def test_06(self):
     """After 50 days"""
     date = Datetime.to_string(Datetime.from_string('2014-02-20 00:00:00'))
     self.mock_datetime.now.return_value = date
     self.assertAlmostEqual(self.line.theoritical_amount, -50)
示例#27
0
 def test_07(self):
     """After 182 days, exactly half of the budget line"""
     date = Datetime.to_string(Datetime.from_string('2014-07-02 00:00:00'))
     self.mock_datetime.now.return_value = date
     self.assertAlmostEqual(self.line.theoritical_amount, -182)
示例#28
0
 def setUp(self):
     super(TestIntervals, self).setUp()
     # Some data intervals
     #  - first one is included in second one
     #  - second one is extended by third one
     #  - sixth one is included in fourth one
     #  - fifth one is prior to other one
     # Once cleaned: 1 interval 03/02 8-10), 2 intervals 04/02 (8-14 + 17-21)
     self.intervals = [
         self.calendar._interval_new(
             Datetime.from_string('2013-02-04 09:00:00'),
             Datetime.from_string('2013-02-04 11:00:00')),
         self.calendar._interval_new(
             Datetime.from_string('2013-02-04 08:00:00'),
             Datetime.from_string('2013-02-04 12:00:00')),
         self.calendar._interval_new(
             Datetime.from_string('2013-02-04 11:00:00'),
             Datetime.from_string('2013-02-04 14:00:00')),
         self.calendar._interval_new(
             Datetime.from_string('2013-02-04 17:00:00'),
             Datetime.from_string('2013-02-04 21:00:00')),
         self.calendar._interval_new(
             Datetime.from_string('2013-02-03 08:00:00'),
             Datetime.from_string('2013-02-03 10:00:00')),
         self.calendar._interval_new(
             Datetime.from_string('2013-02-04 18:00:00'),
             Datetime.from_string('2013-02-04 19:00:00'))
     ]
示例#29
0
    def test_calendar_hours_scheduling_forward_leaves_resource(self):
        res = self.calendar._schedule_hours(
            40,
            day_dt=Datetime.from_string('2013-02-12 09:00:00'),
            compute_leaves=True,
            resource_id=self.resource1_id)
        self.assertEqual(res[0][:2],
                         (Datetime.from_string('2013-02-12 09:00:00'),
                          Datetime.from_string('2013-02-12 16:00:00')))
        self.assertEqual(res[1][:2],
                         (Datetime.from_string('2013-02-15 08:00:00'),
                          Datetime.from_string('2013-02-15 13:00:00')))
        self.assertEqual(res[2][:2],
                         (Datetime.from_string('2013-02-15 16:00:00'),
                          Datetime.from_string('2013-02-15 23:00:00')))
        self.assertEqual(res[3][:2],
                         (Datetime.from_string('2013-02-19 08:00:00'),
                          Datetime.from_string('2013-02-19 09:00:00')))
        self.assertEqual(res[4][:2],
                         (Datetime.from_string('2013-02-19 12:00:00'),
                          Datetime.from_string('2013-02-19 16:00:00')))
        self.assertEqual(res[5][:2],
                         (Datetime.from_string('2013-02-22 08:00:00'),
                          Datetime.from_string('2013-02-22 09:00:00')))
        self.assertEqual(res[6][:2],
                         (Datetime.from_string('2013-02-22 16:00:00'),
                          Datetime.from_string('2013-02-22 23:00:00')))
        self.assertEqual(res[7][:2],
                         (Datetime.from_string('2013-03-01 11:30:00'),
                          Datetime.from_string('2013-03-01 13:00:00')))
        self.assertEqual(res[8][:2],
                         (Datetime.from_string('2013-03-01 16:00:00'),
                          Datetime.from_string('2013-03-01 22:30:00')))

        td = timedelta()
        for item in res:
            td += item[1] - item[0]
        self.assertEqual(td.total_seconds() / 3600.0, 40.0)
示例#30
0
    def test_calendar_hours_scheduling_backward(self):
        res = self.calendar._schedule_hours(
            -40, day_dt=Datetime.from_string('2013-02-12 09:00:00'))
        # current day, limited at 09:00 because of day_dt specified -> 1 hour
        self.assertEqual(res[-1][:2],
                         (Datetime.from_string('2013-02-12 08:00:00'),
                          Datetime.from_string('2013-02-12 09:00:00')))
        # previous days: 5+7 hours / 8 hours / 5+7 hours -> 32 hours
        self.assertEqual(res[-2][:2],
                         (Datetime.from_string('2013-02-08 16:00:00'),
                          Datetime.from_string('2013-02-08 23:00:00')))
        self.assertEqual(res[-3][:2],
                         (Datetime.from_string('2013-02-08 08:00:00'),
                          Datetime.from_string('2013-02-08 13:00:00')))
        self.assertEqual(res[-4][:2],
                         (Datetime.from_string('2013-02-05 08:00:00'),
                          Datetime.from_string('2013-02-05 16:00:00')))
        self.assertEqual(res[-5][:2],
                         (Datetime.from_string('2013-02-01 16:00:00'),
                          Datetime.from_string('2013-02-01 23:00:00')))
        self.assertEqual(res[-6][:2],
                         (Datetime.from_string('2013-02-01 08:00:00'),
                          Datetime.from_string('2013-02-01 13:00:00')))
        # 7 hours remaining
        self.assertEqual(res[-7][:2],
                         (Datetime.from_string('2013-01-29 09:00:00'),
                          Datetime.from_string('2013-01-29 16:00:00')))

        # Compute scheduled hours
        td = timedelta()
        for item in res:
            td += item[1] - item[0]
        self.assertEqual(td.total_seconds() / 3600.0, 40.0)

        res = self.calendar.plan_hours(
            -40, day_dt=Datetime.from_string('2013-02-12 09:00:00'))
        self.assertEqual(res, Datetime.from_string('2013-01-29 09:00:00'))