예제 #1
0
    def test_datetime_to_dtstr_to_datetime_with_tz(self):
        dt = timezone.make_aware(datetime.datetime(2015, 11, 9, 22, 15, 45, 125000), pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'igse2a5h')
        self.assertEqual(dtstr_to_datetime(dtstr, to_tz=pytz.timezone('Europe/Kiev')), dt)

        dt = timezone.make_aware(datetime.datetime(2015, 7, 9, 22, 15, 45, 125000), pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'ibwkrcdh')
        self.assertEqual(dtstr_to_datetime(dtstr, to_tz=pytz.timezone('Europe/Kiev')), dt)
예제 #2
0
    def test_datetime_to_dtstr_to_datetime(self):
        dt = datetime.datetime(2015, 11, 9, 22, 15, 45, 125000)
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'igsiclph')
        self.assertEqual(dtstr_to_datetime(dtstr), dt)

        dt = datetime.datetime(2015, 7, 9, 22, 15, 45, 125000)
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'ibwr6tph')
        self.assertEqual(dtstr_to_datetime(dtstr), dt)
예제 #3
0
    def test_datetime_to_dtstr_to_datetime(self):
        dt = datetime.datetime(2015, 11, 9, 22, 15, 45, 125000)
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'igsiclph')
        self.assertEqual(dtstr_to_datetime(dtstr), dt)

        dt = datetime.datetime(2015, 7, 9, 22, 15, 45, 125000)
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'ibwr6tph')
        self.assertEqual(dtstr_to_datetime(dtstr), dt)
예제 #4
0
    def test_datetime_to_dtstr_to_datetime_for_aware(self):
        dt1 = timezone.make_aware(datetime.datetime(2015, 11, 9, 22, 15, 45, 125000), pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt1)
        self.assertEqual(dtstr, 'igse2a5h')
        dt2 = timezone.make_aware(dtstr_to_datetime(dtstr), pytz.UTC).astimezone(pytz.timezone('Europe/Kiev'))
        self.assertEqual(dt2, dt1)

        dt1 = timezone.make_aware(datetime.datetime(2015, 7, 9, 22, 15, 45, 125000), pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt1)
        self.assertEqual(dtstr, 'ibwkrcdh')
        dt2 = timezone.make_aware(dtstr_to_datetime(dtstr), pytz.UTC).astimezone(pytz.timezone('Europe/Kiev'))
        self.assertEqual(dt2, dt1)
예제 #5
0
    def test_datetime_to_dtstr_to_datetime_with_tz(self):
        dt = timezone.make_aware(
            datetime.datetime(2015, 11, 9, 22, 15, 45, 125000),
            pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'igse2a5h')
        self.assertEqual(
            dtstr_to_datetime(dtstr, to_tz=pytz.timezone('Europe/Kiev')), dt)

        dt = timezone.make_aware(
            datetime.datetime(2015, 7, 9, 22, 15, 45, 125000),
            pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt)
        self.assertEqual(dtstr, 'ibwkrcdh')
        self.assertEqual(
            dtstr_to_datetime(dtstr, to_tz=pytz.timezone('Europe/Kiev')), dt)
예제 #6
0
def remove_old_tmp_files(profiles=None, max_lifetime=(7 * 24)):
    """
    Removes old temp files that is older than expiration_hours.
    If profiles is None then will be use all profiles.
    """
    assert isinstance(profiles, (list, tuple)) or profiles is None
    if profiles is None:
        profiles = dju_settings.DJU_IMG_UPLOAD_PROFILES.keys()
    profiles = set(('default', ) + tuple(profiles))
    total = removed = 0
    old_dt = datetime.datetime.utcnow() - datetime.timedelta(
        hours=max_lifetime)
    for profile in profiles:
        conf = get_profile_configs(profile=profile)
        root_path = os.path.join(settings.MEDIA_ROOT,
                                 dju_settings.DJU_IMG_UPLOAD_SUBDIR,
                                 conf['PATH'])
        for file_path in get_files_recursive(root_path):
            m = re_tmp.match(os.path.basename(file_path))
            if m is None:
                continue
            total += 1
            fdt = dtstr_to_datetime(m.group('dtstr'))
            if fdt and old_dt > fdt:
                os.remove(file_path)
                removed += 1
    return removed, total
예제 #7
0
 def test_datetime_to_dtstr_without_dt(self):
     now = datetime.datetime.utcnow()
     now = now.replace(
         microsecond=int(int(now.microsecond / 1e3) *
                         1e3))  # because 1s = 1000ms in timestamp
     dtstr = datetime_to_dtstr()
     self.assertTrue(now <= dtstr_to_datetime(dtstr) < now +
                     datetime.timedelta(seconds=5))
예제 #8
0
    def test_datetime_to_dtstr_to_datetime_for_aware(self):
        dt1 = timezone.make_aware(
            datetime.datetime(2015, 11, 9, 22, 15, 45, 125000),
            pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt1)
        self.assertEqual(dtstr, 'igse2a5h')
        dt2 = timezone.make_aware(dtstr_to_datetime(dtstr),
                                  pytz.UTC).astimezone(
                                      pytz.timezone('Europe/Kiev'))
        self.assertEqual(dt2, dt1)

        dt1 = timezone.make_aware(
            datetime.datetime(2015, 7, 9, 22, 15, 45, 125000),
            pytz.timezone('Europe/Kiev'))
        dtstr = datetime_to_dtstr(dt1)
        self.assertEqual(dtstr, 'ibwkrcdh')
        dt2 = timezone.make_aware(dtstr_to_datetime(dtstr),
                                  pytz.UTC).astimezone(
                                      pytz.timezone('Europe/Kiev'))
        self.assertEqual(dt2, dt1)
예제 #9
0
def remove_old_tmp_files(profiles=None, max_lifetime=(7 * 24)):
    """
    Removes old temp files that is older than expiration_hours.
    If profiles is None then will be use all profiles.
    """
    assert isinstance(profiles, (list, tuple)) or profiles is None
    if profiles is None:
        profiles = dju_settings.DJU_IMG_UPLOAD_PROFILES.keys()
    profiles = set(('default',) + tuple(profiles))
    total = removed = 0
    old_dt = datetime.datetime.utcnow() - datetime.timedelta(hours=max_lifetime)
    for profile in profiles:
        conf = get_profile_configs(profile=profile)
        root_path = os.path.join(settings.MEDIA_ROOT, dju_settings.DJU_IMG_UPLOAD_SUBDIR, conf['PATH'])
        for file_path in get_files_recursive(root_path):
            m = re_tmp.match(os.path.basename(file_path))
            if m is None:
                continue
            total += 1
            fdt = dtstr_to_datetime(m.group('dtstr'))
            if fdt and old_dt > fdt:
                os.remove(file_path)
                removed += 1
    return removed, total
예제 #10
0
 def test_dtstr_to_datetime_with_error(self):
     self.assertIsNone(dtstr_to_datetime('abcdefg!'))
     with self.assertRaises(ValueError):
         dtstr_to_datetime('abcdefg!', fail_silently=False)
예제 #11
0
 def test_datetime_to_dtstr_without_dt(self):
     now = datetime.datetime.utcnow()
     now = now.replace(microsecond=int(int(now.microsecond / 1e3) * 1e3))  # because 1s = 1000ms in timestamp
     dtstr = datetime_to_dtstr()
     self.assertTrue(now <= dtstr_to_datetime(dtstr) < now + datetime.timedelta(seconds=5))
예제 #12
0
 def test_dtstr_to_datetime_with_error(self):
     self.assertIsNone(dtstr_to_datetime('abcdefg!'))
     with self.assertRaises(ValueError):
         dtstr_to_datetime('abcdefg!', fail_silently=False)