Beispiel #1
0
    def test_shortcut_dict_representation(self):
        """If precision is the default value, to_dict should return a string"""
        date_str = "2013-11-17T01:03:05"
        d = DateTimeWithPrecision()
        d.precision = "second"
        d.value = date_str

        self.assertEqual(str, type(d.to_dict()))
        self.assertEqual(datetime.datetime, type(d.value))
        self.assertEqual(date_str, d.to_dict())

        d2 = round_trip(d, output=True)
        self.assertEqual(d.to_dict(), d2.to_dict())
    def test_shortcut_dict_representation(self):
        """If precision is the default value, to_dict should return a string"""
        date_str = "2013-11-17T01:03:05"
        d = DateTimeWithPrecision()
        d.precision = "second"
        d.value = date_str

        self.assertEqual(str, type(d.to_dict()))
        self.assertEqual(datetime.datetime, type(d.value))
        self.assertEqual(date_str, d.to_dict())

        d2 = round_trip(d, output=True)
        self.assertEqual(d.to_dict(), d2.to_dict())
Beispiel #3
0
def convert_time_item_to_datetime(incident_time_item):
    day_item = incident_time_item.get("day")
    month_item = incident_time_item.get("month")
    time_item = incident_time_item.get("time")
    year_item = incident_time_item.get("year")
    if not time_item:
        time_item = "00:00:00"
        precision = "day"
    if not day_item:
        day_item = 1
        precision = "month"
    if not month_item:
        month_item = 1
        precision = "year"
    if not year_item:
        error("Required 'year' item is missing in 'incident' item, skipping item")
        return None
    dateTime = DateTimeWithPrecision()
    dateTime.precision = precision
    value = convert_items_to_datetime(year_item, month_item, day_item, time_item)
    if not value:
        return None
    dateTime.value = value
    return dateTime
Beispiel #4
0
    def test_construction(self):
        d = DateTimeWithPrecision()
        d.precision = "hour"
        d.value = datetime.datetime(2014, 2, 4, 8, 21, 33)

        self.assertEqual(self._full_dict, d.to_dict())
Beispiel #5
0
def convert_value_unit_to_datetime(item, incident_date_time, fieldname):
    unit_item = item.get("unit")
    if unit_item == "Unknown":
        warn("'%s' item contains 'Unknown'", fieldname)
        return None
    value_item = item.get("value")
    # if no values, assume an half-way point to the next largest unit, except for years - 2 chosen somewhat arbitrarily
    if not value_item:
        imprecise = True
        if unit_item == "Seconds":
            value_item = 30           
            warn("'%s' item contains only 'Seconds' as unit information - assuming value is 30 seconds", fieldname)
        elif unit_item == "Minutes":
            value_item = 30
            warn("'%s' item contains only 'Minutes' as unit information - assuming value is 30 minutes", fieldname)
        elif unit_item == "Hours":
            value_item = 12
            warn("'%s' item contains only 'Hours' as unit information - assuming value is 12 hours", fieldname)
        elif unit_item == "Days":
            value_item = 3
            warn("'%s' item contains only 'Days' as unit information - assuming value is 3 days", fieldname)
        elif unit_item == "Weeks":
            value_item = 2
            warn("'%s' item contains only 'Weeks' as unit information - assuming value is 2 weeks", fieldname)
        elif unit_item == "Months":
            value_item = 6
            warn("'%s' item contains only 'Months' as unit information - assuming value is 6 months", fieldname)
        elif unit_item == "Years":
            value_item = 2
            warn("'%s' item contains only 'Years' as unit information - assuming value is 2 years", fieldname)
        elif unit_item ==  "Never":
            warn("'%s' item contains 'Never' as unit information - returning 0", fieldname)
            return 0
        elif unit_item == "NA":
            warn("'%s' item contains 'NA' as unit information - returning 0", fieldname)
            return 0
    else:
        imprecise = False
    if unit_item == "Seconds":
        if imprecise:
            precision = "minute"
        else:
            precision = "second"
        delta = timedelta(0, value_item)
    elif unit_item == "Minutes":
        if imprecise:
            precision = "hour"
        else:
            precision = "minute"
        delta = timedelta(0, 0, 0, 0, value_item)
    elif unit_item == "Hours":
        if imprecise:
            precision = "day"
        else:
            precision = "hour"
        delta = timedelta(0, 0, 0, 0, 0, value_item)
    elif unit_item == "Days":
        precision = "day"
        delta = timedelta(value_item)
    elif unit_item == "Weeks":
        precision = "month"
        delta = timedelta(0, 0, 0, 0, 0, 0, value_item)
    elif unit_item == "Months":
        if imprecise:
            precision = "year"
        else:
            precision = "month"
        delta = timedelta(0, 0, 0, 0, 0, 0, value_item * 4)
    elif unit_item == "Years":
        precision = "year"
        delta = timedelta(value_item * 365)
    elif unit_item ==  "Never":
        warn("'%s' item contains 'Never' as unit information, but also a value, skipping", fieldname)
        return None
    elif unit_item == "NA":
        warn("'%s' item contains 'NA' as unit information, but also a value, skipping", fieldname)
        return None
    dateTime = DateTimeWithPrecision()
    dateTime.precision = precision
    if fieldname == "compromise":
        dateTime.value = incident_date_time.value - delta
    else:
        dateTime.value = incident_date_time.value + delta
    return dateTime
    def test_construction(self):
        d = DateTimeWithPrecision()
        d.precision = "hour"
        d.value = datetime.datetime(2014, 2, 4, 8, 21, 33)

        self.assertEqual(self._full_dict, d.to_dict())