Skip to content
Snippets Groups Projects
Unverified Commit 6a679153 authored by Fredrik Jonsson's avatar Fredrik Jonsson Committed by GitHub
Browse files

Merge pull request #770 from Parbhat/feature/733-wagtail-forms

Wagtail form Page and fix vagrant provision file
parents 4e1a4fd5 e6c399a1
No related branches found
No related tags found
No related merge requests found
default_app_config = 'opentech.public.forms.apps.FormsConfig'
from django.apps import AppConfig
class FormsConfig(AppConfig):
name = 'opentech.public.forms'
label = 'public_forms'
# Generated by Django 2.0.9 on 2018-12-18 08:58
from django.db import migrations, models
import django.db.models.deletion
import modelcluster.fields
import wagtail.core.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0040_page_draft_title'),
('images', '0003_customimage_drupal_id'),
]
operations = [
migrations.CreateModel(
name='FormField',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
('label', models.CharField(help_text='The label of the form field', max_length=255, verbose_name='label')),
('field_type', models.CharField(choices=[('singleline', 'Single line text'), ('multiline', 'Multi-line text'), ('email', 'Email'), ('number', 'Number'), ('url', 'URL'), ('checkbox', 'Checkbox'), ('checkboxes', 'Checkboxes'), ('dropdown', 'Drop down'), ('multiselect', 'Multiple select'), ('radio', 'Radio buttons'), ('date', 'Date'), ('datetime', 'Date/time'), ('hidden', 'Hidden field')], max_length=16, verbose_name='field type')),
('required', models.BooleanField(default=True, verbose_name='required')),
('choices', models.TextField(blank=True, help_text='Comma separated list of choices. Only applicable in checkboxes, radio and dropdown.', verbose_name='choices')),
('default_value', models.CharField(blank=True, help_text='Default value. Comma separated values supported for checkboxes.', max_length=255, verbose_name='default value')),
('help_text', models.CharField(blank=True, max_length=255, verbose_name='help text')),
],
options={
'ordering': ['sort_order'],
'abstract': False,
},
),
migrations.CreateModel(
name='FormPage',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')),
('to_address', models.CharField(blank=True, help_text='Optional - form submissions will be emailed to these addresses. Separate multiple addresses by comma.', max_length=255, verbose_name='to address')),
('from_address', models.CharField(blank=True, max_length=255, verbose_name='from address')),
('subject', models.CharField(blank=True, max_length=255, verbose_name='subject')),
('social_text', models.CharField(blank=True, max_length=255)),
('listing_title', models.CharField(blank=True, help_text='Override the page title used when this page appears in listings', max_length=255)),
('listing_summary', models.CharField(blank=True, help_text="The text summary used when this page appears in listings. It's also used as the description for search engines if the 'Search description' field above is not defined.", max_length=255)),
('intro', wagtail.core.fields.RichTextField(blank=True)),
('thank_you_text', wagtail.core.fields.RichTextField(blank=True)),
('header_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='images.CustomImage')),
('listing_image', models.ForeignKey(blank=True, help_text='Choose the image you wish to be displayed when this page appears in listings', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='images.CustomImage')),
('social_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='images.CustomImage')),
],
options={
'abstract': False,
},
bases=('wagtailcore.page', models.Model),
),
migrations.AddField(
model_name='formfield',
name='page',
field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='form_fields', to='public_forms.FormPage'),
),
]
from django.db import models
from modelcluster.fields import ParentalKey
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import (
FieldPanel, FieldRowPanel, MultiFieldPanel, InlinePanel
)
from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormField
from wagtail.search import index
from opentech.public.utils.models import BasePage
class FormField(AbstractFormField):
page = ParentalKey('FormPage', on_delete=models.CASCADE, related_name='form_fields')
class FormPage(AbstractEmailForm, BasePage):
subpage_types = []
intro = RichTextField(blank=True)
thank_you_text = RichTextField(blank=True)
search_fields = BasePage.search_fields + [
index.SearchField('intro'),
]
content_panels = BasePage.content_panels + [
FieldPanel('intro', classname="full"),
InlinePanel('form_fields', label="Form fields"),
FieldPanel('thank_you_text', classname="full"),
MultiFieldPanel([
FieldRowPanel([
FieldPanel('from_address', classname="col6"),
FieldPanel('to_address', classname="col6"),
]),
FieldPanel('subject'),
], "Email"),
]
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block content %}
<div>
<h1>{{ page.title }}</h1>
{{ page.intro|richtext }}
<form action="{% pageurl page %}" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit">
</form>
</div>
{% endblock %}
\ No newline at end of file
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block content %}
<div>
<h1>Thank you</h1>
<div>{{ page.thank_you_text|richtext }}</div>
</div>
{% endblock %}
from wagtail.core import hooks
from wagtail.contrib.modeladmin.options import ModelAdminGroup, ModelAdmin, modeladmin_register from wagtail.contrib.modeladmin.options import ModelAdminGroup, ModelAdmin, modeladmin_register
from opentech.public.news.models import NewsType from opentech.public.news.models import NewsType
...@@ -22,9 +21,3 @@ class TaxonomiesModelAdminGroup(ModelAdminGroup): ...@@ -22,9 +21,3 @@ class TaxonomiesModelAdminGroup(ModelAdminGroup):
modeladmin_register(TaxonomiesModelAdminGroup) modeladmin_register(TaxonomiesModelAdminGroup)
# Hide forms from the side menu, remove if adding public.forms back in
@hooks.register('construct_main_menu')
def hide_snippets_menu_item(request, menu_items):
menu_items[:] = [item for item in menu_items if item.name != 'forms']
...@@ -83,6 +83,7 @@ INSTALLED_APPS = [ ...@@ -83,6 +83,7 @@ INSTALLED_APPS = [
'opentech.public.projects', 'opentech.public.projects',
'opentech.public.search', 'opentech.public.search',
'opentech.public.standardpages', 'opentech.public.standardpages',
'opentech.public.forms',
'opentech.public.utils', 'opentech.public.utils',
'social_django', 'social_django',
......
...@@ -63,4 +63,5 @@ su - vagrant -c "sudo apt-get install -y nodejs" ...@@ -63,4 +63,5 @@ su - vagrant -c "sudo apt-get install -y nodejs"
# Build the static files # Build the static files
su - vagrant -c "sudo npm install -g gulp-cli" su - vagrant -c "sudo npm install -g gulp-cli"
su - vagrant -c "cd $PROJECT_DIR; npm install"
su - vagrant -c "cd $PROJECT_DIR; gulp deploy" su - vagrant -c "cd $PROJECT_DIR; gulp deploy"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment