Пример #1
0
 def test_range(self):
     day = dt.hday(2020, 2, 2)
     time = dt.time(21, 20)
     base = dt.datetime.from_day_time(day, time)
     range = dt.Range(base, base + dt.timedelta(minutes=30))
     range_str = range.format(default_day=day)
     self.assertEqual(range_str, "21:20 - 21:50")
     range = dt.Range(None, base)
     range_str = range.format(default_day=day)
     self.assertEqual(range_str, "-- - 21:20")
Пример #2
0
 def test_range(self):
     day = dt.hday(2020, 2, 2)
     time = dt.time(21, 20)
     base = dt.datetime.from_day_time(day, time)
     range = dt.Range(base, base + dt.timedelta(minutes=30))
     range_str = range.format(default_day=day)
     self.assertEqual(range_str, "21:20 - 21:50")
     range = dt.Range(None, base)
     range_str = range.format(default_day=day)
     self.assertEqual(range_str, "-- - 21:20")
     # issue #576
     start = dt.datetime(2020, 3, 8, 17, 7)
     end = dt.datetime(2020, 3, 8, 18, 6)
     range = dt.Range.from_start_end(start, end)
     self.assertEqual(range.start, start)
     self.assertEqual(range.end, end)
     # check passthrough
     range2 = dt.Range.from_start_end(range)
     self.assertEqual(range2.start, range.start)
     self.assertEqual(range2.end, range.end)
Пример #3
0
def from_dbus_fact_json(dbus_fact):
    """Convert D-Bus JSON to Fact."""
    d = loads(dbus_fact)
    range_d = d['range']
    # should use pdt.datetime.fromisoformat,
    # but that appears only in python3.7, nevermind
    start_s = range_d['start']
    end_s = range_d['end']
    range = dt.Range(start=dt.datetime.parse(start_s) if start_s else None,
                     end=dt.datetime.parse(end_s) if end_s else None)
    d['range'] = range
    return Fact(**d)
Пример #4
0
    def __init__(self,
                 activity="",
                 category=None,
                 description=None,
                 tags=None,
                 range=None,
                 start=None,
                 end=None,
                 start_time=None,
                 end_time=None,
                 id=None,
                 activity_id=None):
        """Homogeneous chunk of activity.

        The category, description and tags must be passed explicitly.

        To provide the whole fact information as a single string,
        please use Fact.parse(string).

        range (dt.Range): time spanned by the fact. For convenience,
                          the `start` and `end` arguments can be given instead.
        start (dt.datetime); Start of the fact range.
                             Mutually exclusive with `range`.
        end (dt.datetime); End of the fact range.
                           Mutually exclusive with `range`.
        start_time (dt.datetime): Deprecated. Same as start.
        end_time (dt.datetime): Deprecated. Same as end.

        id (int): id in the database.
                  Should be used with extreme caution, knowing exactly why.
                  (only for very specific direct database read/write)
        """

        self.activity = activity
        self.category = category
        self.description = description
        self.tags = tags or []
        if range:
            assert not start, "range already given"
            assert not end, "range already given"
            assert not start_time, "range already given"
            assert not end_time, "range already given"
            self.range = range
        else:
            if start_time:
                assert not start, "use only start, not start_time"
                start = start_time
            if end_time:
                assert not end, "use only end, not end_time"
                end = end_time
            self.range = dt.Range(start, end)
        self.id = id
        self.activity_id = activity_id
Пример #5
0
 def test_range(self):
     t1 = dt.datetime(2020, 1, 15, 13, 30)
     t2 = dt.datetime(2020, 1, 15, 15, 30)
     range = dt.Range(t1, t2)
     fact = Fact(range=range)
     self.assertEqual(fact.range.start, t1)
     self.assertEqual(fact.range.end, t2)
     fact = Fact(start=t1, end=t2)
     self.assertEqual(fact.range.start, t1)
     self.assertEqual(fact.range.end, t2)
     # backward compatibility (before v3.0)
     fact = Fact(start_time=t1, end_time=t2)
     self.assertEqual(fact.range.start, t1)
     self.assertEqual(fact.range.end, t2)