Esempio n. 1
0
    def test_cabinet_folders(self):
        c = self.login()

        response = c.get("/admin/cabinet/file/")
        self.assertContains(
            response, '<script type="text/template" id="cabinet-result-list">', 1
        )
        self.assertContains(
            response, '<script type="text/template" id="cabinet-folder-list">', 1
        )
        self.assertContains(
            response,
            """
<a href="/admin/cabinet/file/folder/add/?&amp;parent=" class="addlink">
    Add folder
</a>
            """,
            html=True,
        )
        self.assertNotContains(response, "Add file")

        response = c.get("/admin/cabinet/file/folder/add/")
        self.assertContains(response, "Add folder")
        self.assertNotContains(response, "_delete_folder")

        response = c.post("/admin/cabinet/file/folder/add/", {"name": "Test 1"})
        folder = Folder.objects.get()
        self.assertRedirects(
            response, "/admin/cabinet/file/?folder__id__exact=%s" % folder.id
        )

        response = c.get("/admin/cabinet/file/folder/%s/" % folder.id)
        self.assertContains(response, "_delete_folder")

        file = File(folder=folder)
        content = ContentFile("Hello")
        file.download_file.save("hello.txt", content)

        response = c.post(
            "/admin/cabinet/file/folder/%s/" % folder.id,
            {"name": folder.name, "_delete_folder": True},
        )
        self.assertRedirects(response, "/admin/cabinet/file/")
        self.assertEqual(Folder.objects.count(), 1)  # not deleted

        file.delete()

        # Create a subfolder, but deleting should succeed anyway
        Folder.objects.create(parent=folder, name="Anything")

        response = c.post(
            "/admin/cabinet/file/folder/%s/" % folder.id,
            {"name": folder.name, "_delete_folder": True},
        )

        self.assertRedirects(response, "/admin/cabinet/file/")
        self.assertEqual(Folder.objects.count(), 0)

        self.assertNoMediaFiles()
Esempio n. 2
0
    def test_invalid_files_no_admin_crash(self):
        folder = Folder.objects.create(name="Root")
        file = File(folder=folder)

        with io.open(self.image1_path, "rb") as image:
            image1_bytes = image.read()

        file.image_file.save("image.png", ContentFile(image1_bytes[:500]))

        File(folder=folder, file_size=0).save_base()  # No file at all

        c = self.login()
        response = c.get("/admin/cabinet/file/?folder__id__exact={}".format(
            folder.id))
        self.assertContains(response, '<span class="broken-image"></span>', 1)
Esempio n. 3
0
    def test_cabinet_foreign_key(self):
        folder = Folder.objects.create(name="Root")
        file = File(folder=folder)
        content = ContentFile("Hello")
        file.download_file.save("hello.txt", content)

        c = self.login()
        response = c.get("/admin/testapp/stuff/add/")

        self.assertContains(response, 'class="cabinet-inline-upload"')
        self.assertContains(response, 'type="file"')
        self.assertContains(
            response,
            'href="/admin/cabinet/file/?_to_field=id&amp;folder__id__exact=last"',
        )

        stuff = Stuff.objects.create(title="Test", file=file)
        response = c.get(
            reverse("admin:testapp_stuff_change", args=(stuff.id, )))

        self.assertContains(response, 'class="cabinet-inline-upload"')
        self.assertContains(response, 'type="file"')
        self.assertContains(
            response,
            'href="/admin/cabinet/file/?_to_field=id&amp;folder__id__exact={}"'
            .format(folder.id),
        )

        filefield = Stuff._meta.get_field("file")
        formfield = filefield.formfield()
        self.assertTrue(isinstance(formfield.widget, forms.Select))

        name, path, args, kwargs = filefield.deconstruct()
        self.assertEqual(path, "django.db.models.ForeignKey")
Esempio n. 4
0
    def test_ckeditor_filebrowser(self):
        folder = Folder.objects.create(name="Root")
        file = File(folder=folder)
        content = ContentFile("Hello")
        file.download_file.save("hello.txt", content)

        client = self.login()
        response = client.get(
            "/admin/cabinet/file/?_popup=1&CKEditor=editor&CKEditorFuncNum=1"
            "&langCode=en&folder__id__exact={}".format(folder.pk))
        self.assertContains(response, "data-ckeditor-function",
                            2)  # Icon and name
Esempio n. 5
0
    def test_overwrite_without_new(self):
        folder = Folder.objects.create(name="Root")
        file = File(folder=folder)
        content = ContentFile("Hello")
        file.download_file.save("hello.txt", content)

        c = self.login()
        response = c.post(
            reverse("admin:cabinet_file_change", args=(file.id, )),
            {
                "folder": folder.id,
                "caption": "Hello world",
                "image_ppoi": file.image_ppoi,
                "download_file": "",
                "image_file": "",
                "_overwrite": "on",
            },
        )
        self.assertRedirects(
            response,
            "/admin/cabinet/file/?folder__id__exact={}".format(folder.id))

        file.refresh_from_db()
        self.assertFalse(file._overwrite)
Esempio n. 6
0
    def test_two_files(self):
        folder = Folder.objects.create(name="Root")
        file = File(folder=folder)
        with io.open(self.image1_path, "rb") as image:
            file.image_file.save("hello.jpg", ContentFile(image.read()))

        file.full_clean()  # Everything well

        content = ContentFile("Hello")
        file.download_file.save("hello.txt", content, save=False)
        with self.assertRaises(ValidationError):
            file.full_clean()
Esempio n. 7
0
    def test_editing(self):
        folder = Folder.objects.create(name="Root")
        file = File(folder=folder)
        content = ContentFile("Hello")
        file.download_file.save("hello.txt", content)

        c = self.login()
        response = c.post(
            reverse("admin:cabinet_file_change", args=(file.id,)),
            {
                "folder": folder.id,
                "caption": "Hello world",
                "image_ppoi": file.image_ppoi,
                "download_file": "",
                "image_file": "",
            },
        )
        self.assertRedirects(
            response, f"/admin/cabinet/file/?folder__id__exact={folder.id}"
        )