diff --git a/wagtail/tests/testapp/migrations/0011_filepage.py b/wagtail/tests/testapp/migrations/0011_filepage.py
new file mode 100644
index 000000000..5d5876b66
--- /dev/null
+++ b/wagtail/tests/testapp/migrations/0011_filepage.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('wagtailcore', '0019_verbose_names_cleanup'),
+ ('tests', '0010_mtibasepage_mtichildpage'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='FilePage',
+ fields=[
+ ('page_ptr', models.OneToOneField(to='wagtailcore.Page', serialize=False, auto_created=True, primary_key=True, parent_link=True)),
+ ('file_field', models.FileField(upload_to='')),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=('wagtailcore.page',),
+ ),
+ ]
diff --git a/wagtail/tests/testapp/models.py b/wagtail/tests/testapp/models.py
index 277832b85..0f29731b6 100644
--- a/wagtail/tests/testapp/models.py
+++ b/wagtail/tests/testapp/models.py
@@ -130,6 +130,17 @@ class PageWithOldStyleRouteMethod(Page):
return self.serve(request)
+# File page
+class FilePage(Page):
+ file_field = models.FileField()
+
+
+FilePage.content_panels = [
+ FieldPanel('title', classname="full title"),
+ FieldPanel('file_field'),
+]
+
+
# Event page
class EventPageCarouselItem(Orderable, CarouselItem):
diff --git a/wagtail/wagtailadmin/tests/test_pages_views.py b/wagtail/wagtailadmin/tests/test_pages_views.py
index 41cac0c6d..3298b65ed 100644
--- a/wagtail/wagtailadmin/tests/test_pages_views.py
+++ b/wagtail/wagtailadmin/tests/test_pages_views.py
@@ -7,11 +7,12 @@ from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group, Permission
from django.core import mail
from django.core.paginator import Paginator
+from django.core.files.base import ContentFile
from django.db.models.signals import pre_delete, post_delete
from django.utils import timezone
from wagtail.tests.testapp.models import (
- SimplePage, EventPage, EventPageCarouselItem,
+ SimplePage, FilePage, EventPage, EventPageCarouselItem,
StandardIndex, StandardChild,
BusinessIndex, BusinessChild, BusinessSubIndex,
TaggedPage, Advert, AdvertPlacement)
@@ -226,6 +227,20 @@ class TestPageCreation(TestCase, WagtailTestUtils):
self.assertContains(response, 'Content')
self.assertContains(response, 'Promote')
+ def test_create_multipart(self):
+ """
+ Test checks if 'enctype="multipart/form-data"' is added and only to forms that require multipart encoding.
+ """
+ # check for SimplePage where is no file field
+ response = self.client.get(reverse('wagtailadmin_pages:add', args=('tests', 'simplepage', self.root_page.id)))
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'wagtailadmin/pages/create.html')
+
+ # check for FilePage which has file field
+ response = self.client.get(reverse('wagtailadmin_pages:add', args=('tests', 'filepage', self.root_page.id)))
+ self.assertEqual(response.status_code, 200)
+ self.assertContains(response, 'enctype="multipart/form-data"')
+
def test_create_page_without_promote_tab(self):
"""
Test that the Promote tab is not rendered for page classes that define it as empty
@@ -529,6 +544,18 @@ class TestPageEdit(TestCase, WagtailTestUtils):
child_page.save_revision().publish()
self.child_page = SimplePage.objects.get(id=child_page.id)
+ # Add file page
+ fake_file = ContentFile("File for testing multipart")
+ fake_file.name = 'test.txt'
+ file_page = FilePage(
+ title="File Page",
+ slug="file-page",
+ file_field=fake_file,
+ )
+ self.root_page.add_child(instance=file_page)
+ file_page.save_revision().publish()
+ self.file_page = FilePage.objects.get(id=file_page.id)
+
# Add event page (to test edit handlers)
self.event_page = EventPage()
self.event_page.title = "Event page"
@@ -543,6 +570,21 @@ class TestPageEdit(TestCase, WagtailTestUtils):
response = self.client.get(reverse('wagtailadmin_pages:edit', args=(self.event_page.id, )))
self.assertEqual(response.status_code, 200)
+ def test_edit_multipart(self):
+ """
+ Test checks if 'enctype="multipart/form-data"' is added and only to forms that require multipart encoding.
+ """
+ # check for SimplePage where is no file field
+ response = self.client.get(reverse('wagtailadmin_pages:edit', args=(self.event_page.id, )))
+ self.assertEqual(response.status_code, 200)
+ self.assertNotContains(response, 'enctype="multipart/form-data"')
+ self.assertTemplateUsed(response, 'wagtailadmin/pages/edit.html')
+
+ # check for FilePage which has file field
+ response = self.client.get(reverse('wagtailadmin_pages:edit', args=(self.file_page.id, )))
+ self.assertEqual(response.status_code, 200)
+ self.assertContains(response, 'enctype="multipart/form-data"')
+
def test_page_edit_bad_permissions(self):
# Remove privileges from user
self.user.is_superuser = False