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/?&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()
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)
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&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&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")
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
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)
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()
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}" )