Beispiel #1
0
 def processing(self, request, folder, rqst, msg):
     # Умови при яких зміни не відбудуться:
     if False: # Тут вставити перевірку на право завантаження теки
         msg.title   = rqst.name
         msg.type    = msgType.Forbidden
         msg.message = "У Вас немає доступу для завантаження обраної теки."
         response = HttpResponse()
     else:
         response, zipFilename, msg_message = \
                                 response_for_download_zip(folder)
         msg.title   = zipFilename
         msg.type    = msgType.Normal
         msg.message = msg_message or "Вміст теки успішно завантажено!"
     return folder, msg, response
 def processing(self, request, folder, rqst, msg):
     # Умови при яких зміни не відбудуться:
     if False: # Тут вставити перевірку на право завантаження теки
         msg.title   = rqst.name
         msg.type    = msgType.Forbidden
         msg.message = "У Вас немає доступу для завантаження обраної теки."
         response = HttpResponse()
     else:
         response, zipFilename, msg_message = \
                                 response_for_download_zip(folder)
         msg.title   = zipFilename
         msg.type    = msgType.Normal
         msg.message = msg_message or "Вміст теки успішно завантажено!"
     return folder, msg, response
    def test_response_for_download_zip_gives_proper_value(self):
        zipFilename = "%s.zip" % self.root.name
        fn = ' filename="%s";' % transliterate(zipFilename)
        fns = " filename*=utf-8''%s;" % urlquote(zipFilename)
        expected_content_disposition = 'attachment' + fn + fns

        resp, zipFilename, msg = response_for_download_zip(self.root)

        self.assertEqual(zipFilename, 'Тека файлів.zip')
        self.assertEqual(msg, "")
        self.assertEqual(resp.get('Content-Disposition'), expected_content_disposition)
        self.assertEqual(resp.get('Content-Length'), '232')
        self.assertEqual(resp.get('Content-Type'), 'application/zip')
        expected_namelist = ['Тека файлів/Текстовий файл.txt']
        bio = BytesIO()  # Open ByteIO to grab in-memory file
        bio.write(resp.content)         # записуємо вміст у "файл"
        zipFile = zipfile.ZipFile(bio)  # "файл" як zipfile
        self.assertIsNone(zipFile.testzip())
        self.assertEqual(zipFile.namelist(), expected_namelist)
    def test_response_for_download_zip_gives_proper_value_3(self):
        file2 = SimpleUploadedFile("file2.txt", b"file_content")
        report2 = DummyFolder().create_dummy_report(self.root, file=file2)

        zipFilename = "%s.zip" % self.root.name
        fn = ' filename="%s";' % transliterate(zipFilename)
        fns = " filename*=utf-8''%s;" % urlquote(zipFilename)
        expected_content_disposition = 'attachment' + fn + fns

        resp, zipFilename, msg = response_for_download_zip(self.root, 15)

        self.assertEqual(zipFilename, 'Тека файлів.zip')
        self.assertEqual(msg, 'Завеликий zip. Решту файлів відкинуто')
        self.assertEqual(resp.get('Content-Disposition'), expected_content_disposition)
        self.assertEqual(resp.get('Content-Length'), '232')
        self.assertEqual(resp.get('Content-Type'), 'application/zip')
        # self.assertEqual(resp.content, b'file_content')

        report2.file.delete()
    def test_response_for_download_zip_gives_proper_value_3(self):
        file2 = SimpleUploadedFile("file2.txt", b"file_content")
        report2 = DummyFolder().create_dummy_report(self.root, file=file2)

        zipFilename = "%s.zip" % self.root.name
        fn = ' filename="%s";' % transliterate(zipFilename)
        fns = " filename*=utf-8''%s;" % urlquote(zipFilename)
        expected_content_disposition = 'attachment' + fn + fns

        resp, zipFilename, msg = response_for_download_zip(self.root, 15)

        self.assertEqual(zipFilename, 'Тека файлів.zip')
        self.assertEqual(msg, 'Завеликий zip. Решту файлів відкинуто')
        self.assertEqual(resp.get('Content-Disposition'),
                         expected_content_disposition)
        self.assertEqual(resp.get('Content-Length'), '232')
        self.assertEqual(resp.get('Content-Type'), 'application/zip')
        # self.assertEqual(resp.content, b'file_content')

        report2.file.delete()
    def test_response_for_download_zip_gives_proper_value(self):
        zipFilename = "%s.zip" % self.root.name
        fn = ' filename="%s";' % transliterate(zipFilename)
        fns = " filename*=utf-8''%s;" % urlquote(zipFilename)
        expected_content_disposition = 'attachment' + fn + fns

        resp, zipFilename, msg = response_for_download_zip(self.root)

        self.assertEqual(zipFilename, 'Тека файлів.zip')
        self.assertEqual(msg, "")
        self.assertEqual(resp.get('Content-Disposition'),
                         expected_content_disposition)
        self.assertEqual(resp.get('Content-Length'), '232')
        self.assertEqual(resp.get('Content-Type'), 'application/zip')
        expected_namelist = ['Тека файлів/Текстовий файл.txt']
        bio = BytesIO()  # Open ByteIO to grab in-memory file
        bio.write(resp.content)  # записуємо вміст у "файл"
        zipFile = zipfile.ZipFile(bio)  # "файл" як zipfile
        self.assertIsNone(zipFile.testzip())
        self.assertEqual(zipFile.namelist(), expected_namelist)
 def test_response_for_download_zip_gives_error_if_no_file(self):
     DummyFolder().create_dummy_report(parent=self.root)
     with self.assertRaises(ValueError):
         response_for_download_zip(self.root)
 def test_response_for_download_zip_gives_error_if_no_file(self):
     DummyFolder().create_dummy_report(parent=self.root)
     with self.assertRaises(ValueError):
         response_for_download_zip(self.root)
Beispiel #9
0
def folderDownload(request, *args, **kwargs):
    # Завантаження zip-файла, який складається з всіх файлів теки
    folder_id = kwargs.get("pk")
    folder = Folder.objects.get(id=folder_id)
    response, zipFilename, msg = response_for_download_zip(folder)
    return response