Ensure setting forms allow file uploads

pull/2518/head
Tim Heap 2016-03-30 18:06:35 +11:00 zatwierdzone przez Matt Westcott
rodzic 228088d33d
commit 44198daaf6
5 zmienionych plików z 49 dodań i 9 usunięć

Wyświetl plik

@ -26,7 +26,7 @@
</div>
</header>
<form action="{% url 'wagtailsettings:edit' opts.app_label opts.model_name site.pk %}" method="POST">
<form action="{% url 'wagtailsettings:edit' opts.app_label opts.model_name site.pk %}" method="POST"{% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
{% csrf_token %}
{{ edit_handler.render_form_content }}

Wyświetl plik

@ -7,7 +7,7 @@ from django.test import TestCase
from django.utils.text import capfirst
from wagtail.contrib.settings.registry import SettingMenuItem
from wagtail.tests.testapp.models import IconSetting, TestSetting
from wagtail.tests.testapp.models import FileUploadSetting, IconSetting, TestSetting
from wagtail.tests.utils import WagtailTestUtils
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.models import Page, Site
@ -45,16 +45,17 @@ class TestSettingMenu(TestCase, WagtailTestUtils):
class BaseTestSettingView(TestCase, WagtailTestUtils):
def get(self, site_pk=1, params={}):
url = self.edit_url('tests', 'testsetting', site_pk=site_pk)
def get(self, site_pk=1, params={}, setting=TestSetting):
url = self.edit_url(setting=setting, site_pk=site_pk)
return self.client.get(url, params)
def post(self, site_pk=1, post_data={}):
url = self.edit_url('tests', 'testsetting', site_pk=site_pk)
def post(self, site_pk=1, post_data={}, setting=TestSetting):
url = self.edit_url(setting=setting, site_pk=site_pk)
return self.client.post(url, post_data)
def edit_url(self, app, model, site_pk=1):
return reverse('wagtailsettings:edit', args=[app, model, site_pk])
def edit_url(self, setting, site_pk=1):
args = [setting._meta.app_label, setting._meta.model_name, site_pk]
return reverse('wagtailsettings:edit', args=args)
class TestSettingCreateView(BaseTestSettingView):
@ -82,6 +83,11 @@ class TestSettingCreateView(BaseTestSettingView):
self.assertEqual(setting.title, 'Edited site title')
self.assertEqual(setting.email, 'test@example.com')
def test_file_upload_multipart(self):
response = self.get(setting=FileUploadSetting)
# Ensure the form supports file uploads
self.assertContains(response, 'enctype="multipart/form-data"')
class TestSettingEditView(BaseTestSettingView):
def setUp(self):
@ -102,7 +108,7 @@ class TestSettingEditView(BaseTestSettingView):
self.assertContains(response, "menu-active")
def test_non_existant_model(self):
response = self.client.get(self.edit_url('test', 'foo'))
response = self.client.get(reverse('wagtailsettings:edit', args=['test', 'foo', 1]))
self.assertEqual(response.status_code, 404)
def test_edit_invalid(self):

Wyświetl plik

@ -84,6 +84,7 @@ def edit(request, app_name, model_name, site_pk):
'setting_type_name': setting_type_name,
'instance': instance,
'edit_handler': edit_handler,
'form': form,
'site': site,
'site_switcher': site_switcher,
})

Wyświetl plik

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.4 on 2016-03-31 00:31
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wagtailcore', '0028_merge'),
('tests', '0003_onetoonepage'),
]
operations = [
migrations.CreateModel(
name='FileUploadSetting',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('file', models.FileField(upload_to='')),
('site', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.Site')),
],
options={
'abstract': False,
},
),
]

Wyświetl plik

@ -560,6 +560,11 @@ class NotYetRegisteredSetting(BaseSetting):
pass
@register_setting
class FileUploadSetting(BaseSetting):
file = models.FileField()
class BlogCategory(models.Model):
name = models.CharField(unique=True, max_length=80)