kopia lustrzana https://github.com/wagtail/wagtail
Ensure setting forms allow file uploads
rodzic
228088d33d
commit
44198daaf6
|
@ -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 }}
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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,
|
||||
})
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -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)
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue