def test_not_allowed_ext(self): filename = 'test.pdf' expected = None actual = archive_extension(filename) assert expected == actual
def test_tar_gz(self): filename = 'test.tar.gz' expected = '.tar.gz' actual = archive_extension(filename) assert expected == actual
def test_zip(self): filename = 'test.zip' expected = '.zip' actual = archive_extension(filename) assert expected == actual
def _unique_filename(filename, from_addr='', date='', count=0): if filename.startswith('='): charset, encoding, encoded_filename = filename.split('?')[1:4] if encoding in ('b', 'B'): filename = base64.b64decode(encoded_filename).decode(charset) elif encoding in ('q', 'Q'): filename = encoded_filename match = QUOTED_PRINTABLE_ENCODED_REGEX.search(filename) while match: filename = filename[:match.start()] + chr( int(match.group()[1:], 16)) + filename[match.end():] match = QUOTED_PRINTABLE_ENCODED_REGEX.search(filename) filename = filename.strip().replace(' ', '_') ext = archive_extension(filename) basename = archive_basename(filename) hash_obj = hashlib.sha256() hash_obj.update(from_addr.encode('utf-8')) hash_obj.update(date.encode('utf-8')) hash_obj.update(str(count).encode('utf-8')) hash_val = hash_obj.hexdigest()[:6] return '{basename}_{hash_val}{ext}'.format(basename=basename, hash_val=hash_val, ext=ext).lower()