示例#1
0
    def test_not_allowed_ext(self):
        filename = 'test.pdf'

        expected = None
        actual = archive_extension(filename)

        assert expected == actual
示例#2
0
    def test_tar_gz(self):
        filename = 'test.tar.gz'

        expected = '.tar.gz'
        actual = archive_extension(filename)

        assert expected == actual
示例#3
0
    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()