Example #1
0
def parse_duration(s):
    bits = re.split('[^0-9]+', s)
    if len(bits) == 2:
        return timedelta(hours=int(bits[0]), minutes=int(bits[1]))
    elif len(bits) == 3:
        return timedelta(hours=int(bits[0]),
                         minutes=int(bits[1]),
                         seconds=int(bits[2]))
Example #2
0
def get_current_next(group, howmany=2, delta=datetime_tz.timedelta()):
    if group in data:
        now = datetime_tz.datetime_tz.utcnow(
        )  #+ datetime_tz.timedelta(hours=13, days=7, minutes=75)
        return islice(ifilter(lambda x: x['end'] > now, data[group]), howmany)
    else:
        return []
Example #3
0
def get_current_next(group, howmany=2, delta=datetime_tz.timedelta()):
    if group in data:
        now = datetime_tz.datetime_tz.utcnow()
        return islice(
            ifilter(
                lambda x: x['end'] > now,
                data[group]
            ),
            howmany
        )
    else:
        return []
Example #4
0
  def testBetween(self):
    iterate = datetime_tz.iterate

    tz = pytz.utc
    start = datetime_tz.datetime_tz.smartparse("2008/05/12 11:45", tz)
    end = datetime_tz.datetime_tz.smartparse("2008/05/16 11:46", tz)

    result = []
    for dt in iterate.between(start, datetime_tz.timedelta(days=1), end):
      result.append(dt.strftime("%Y/%m/%d %H:%M"))

    self.assertEqual(result, ["2008/05/12 11:45", "2008/05/13 11:45",
                              "2008/05/14 11:45", "2008/05/15 11:45",
                              "2008/05/16 11:45"])

    start = datetime_tz.datetime_tz.smartparse("2008/05/12 11:45", tz)
    end = datetime_tz.datetime_tz.smartparse("2008/05/16 11:45", tz)

    result = []
    for dt in iterate.between(start, datetime_tz.timedelta(days=1), end):
      result.append(dt.strftime("%Y/%m/%d %H:%M"))

    self.assertEqual(result, ["2008/05/12 11:45", "2008/05/13 11:45",
                              "2008/05/14 11:45", "2008/05/15 11:45"])
Example #5
0
  def testBetween(self):
    iterate = datetime_tz.iterate

    tz = pytz.utc
    start = datetime_tz.datetime_tz.smartparse("2008/05/12 11:45", tz)
    end = datetime_tz.datetime_tz.smartparse("2008/05/16 11:46", tz)

    result = []
    for dt in iterate.between(start, datetime_tz.timedelta(days=1), end):
      result.append(dt.strftime("%Y/%m/%d %H:%M"))

    self.assertEqual(result, ["2008/05/12 11:45", "2008/05/13 11:45",
                              "2008/05/14 11:45", "2008/05/15 11:45",
                              "2008/05/16 11:45"])

    start = datetime_tz.datetime_tz.smartparse("2008/05/12 11:45", tz)
    end = datetime_tz.datetime_tz.smartparse("2008/05/16 11:45", tz)

    result = []
    for dt in iterate.between(start, datetime_tz.timedelta(days=1), end):
      result.append(dt.strftime("%Y/%m/%d %H:%M"))

    self.assertEqual(result, ["2008/05/12 11:45", "2008/05/13 11:45",
                              "2008/05/14 11:45", "2008/05/15 11:45"])
Example #6
0
def json_feed(request, group):
    config = CONFIG.config(group)

    tzinfo = None
    if config['schedule-timezone']:
        tzinfo = pytz.timezone(config['schedule-timezone'])

    delta = datetime_tz.timedelta(seconds=int(request.GET.get('delta', 0)))
    two_elements = list(get_current_next(group, delta=delta))

    for index, element in enumerate(two_elements):
        element = dict(element)
        for key in ('start', 'end'):
            element[key] = str(element[key].astimezone(tzinfo))
        two_elements[index] = element

    return http.HttpResponse(json.dumps(two_elements), content_type='text/javascript')
Example #7
0
def json_feed(request, group):
    config = CONFIG.config(group)

    tzinfo = None
    if config['schedule-timezone']:
        tzinfo = pytz.timezone(config['schedule-timezone'])

    delta = datetime_tz.timedelta(seconds=int(request.GET.get('delta', 0)))
    two_elements = list(get_current_next(group, delta=delta))

    for index, element in enumerate(two_elements):
        element = dict(element)
        for key in ('start', 'end'):
            element[key] = str(element[key].astimezone(tzinfo))
        two_elements[index] = element

    return http.HttpResponse(json.dumps(two_elements),
                             content_type='text/javascript')
def parse_pytimedelta(s):
    """
    Parses a str(datetime.timedelta).  Ignores microseconds.
    """
    days = 0
    if 'day' in s:
        day_index = s.index(' day')
        # Parse out days first
        days = int(s[0:day_index])
        
        # Drop the bit before there
        s = s[day_index+4:]
        
        # Handle plural
        if s.startswith('s'):
            s = s[1:]
        
        # Strip out the comma
        assert s.startswith(', '), 'Unexpected string format'
        s = s[2:]

    # Parse out the remainder
    hours, minutes, seconds = (int(x) for x in s.split(':'))
    return timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
Example #9
0
def parse_pytimedelta(s):
    """
    Parses a str(datetime.timedelta).  Ignores microseconds.
    """
    days = 0
    if 'day' in s:
        day_index = s.index(' day')
        # Parse out days first
        days = int(s[0:day_index])

        # Drop the bit before there
        s = s[day_index + 4:]

        # Handle plural
        if s.startswith('s'):
            s = s[1:]

        # Strip out the comma
        assert s.startswith(', '), 'Unexpected string format'
        s = s[2:]

    # Parse out the remainder
    hours, minutes, seconds = (int(x) for x in s.split(':'))
    return timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
Example #10
0
  def testAroundDst(self):
    # Testing going backwards into daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 10, 27, 6, 10, 0, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-10-27 01:10:00 EST-0500")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-10-27 01:00:00 EST-0500")

    before = loc_dt - datetime_tz.timedelta(minutes=20)
    self.assertEqual(before.strftime(FMT), "2002-10-27 01:50:00 EDT-0400")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-10-27 01:20:00 EST-0500")

    # Testing going forwards out of daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 10, 27, 5, 50, 0, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-10-27 01:50:00 EDT-0400")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-10-27 01:00:00 EST-0500")

    after = loc_dt + datetime_tz.timedelta(minutes=20)
    self.assertEqual(after.strftime(FMT), "2002-10-27 01:10:00 EST-0500")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-10-27 01:40:00 EDT-0400")

    # Test going backwards out of daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 4, 7, 7, 10, 00, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-04-07 03:10:00 EDT-0400")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-04-07 03:00:00 EDT-0400")

    before = loc_dt - datetime_tz.timedelta(minutes=20)
    self.assertEqual(before.strftime(FMT), "2002-04-07 01:50:00 EST-0500")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-04-07 03:20:00 EDT-0400")

    # Test going forwards into daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 4, 7, 6, 50, 00, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-04-07 01:50:00 EST-0500")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-04-07 03:00:00 EDT-0400")

    after = loc_dt + datetime_tz.timedelta(minutes=20)
    self.assertEqual(after.strftime(FMT), "2002-04-07 03:10:00 EDT-0400")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-04-07 01:40:00 EST-0500")
def parse_duration(s):
    bits = re.split('[^0-9]+', s)
    if len(bits) == 2:
        return timedelta(hours=int(bits[0]), minutes=int(bits[1]))
    elif len(bits) == 3:
        return timedelta(hours=int(bits[0]), minutes=int(bits[1]), seconds=int(bits[2]))
Example #12
0
  def testAroundDst(self):
    # Testing going backwards into daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 10, 27, 6, 10, 0, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-10-27 01:10:00 EST-0500")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-10-27 01:00:00 EST-0500")

    before = loc_dt - datetime_tz.timedelta(minutes=20)
    self.assertEqual(before.strftime(FMT), "2002-10-27 01:50:00 EDT-0400")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-10-27 01:20:00 EST-0500")

    # Testing going forwards out of daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 10, 27, 5, 50, 0, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-10-27 01:50:00 EDT-0400")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-10-27 01:00:00 EST-0500")

    after = loc_dt + datetime_tz.timedelta(minutes=20)
    self.assertEqual(after.strftime(FMT), "2002-10-27 01:10:00 EST-0500")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-10-27 01:40:00 EDT-0400")

    # Test going backwards out of daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 4, 7, 7, 10, 00, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-04-07 03:10:00 EDT-0400")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-04-07 03:00:00 EDT-0400")

    before = loc_dt - datetime_tz.timedelta(minutes=20)
    self.assertEqual(before.strftime(FMT), "2002-04-07 01:50:00 EST-0500")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-04-07 03:20:00 EDT-0400")

    # Test going forwards into daylight savings
    utc_dt = datetime_tz.datetime_tz(2002, 4, 7, 6, 50, 00, tzinfo=pytz.utc)
    loc_dt = utc_dt.astimezone(pytz.timezone("US/Eastern"))
    self.assertEqual(loc_dt.strftime(FMT), "2002-04-07 01:50:00 EST-0500")

    after = loc_dt + datetime_tz.timedelta(minutes=10)
    self.assertEqual(after.strftime(FMT), "2002-04-07 03:00:00 EDT-0400")

    after = loc_dt + datetime_tz.timedelta(minutes=20)
    self.assertEqual(after.strftime(FMT), "2002-04-07 03:10:00 EDT-0400")

    before = loc_dt - datetime_tz.timedelta(minutes=10)
    self.assertEqual(before.strftime(FMT), "2002-04-07 01:40:00 EST-0500")