Skip to content
Snippets Groups Projects
Commit bbc20f02 authored by Parbhat Puri's avatar Parbhat Puri
Browse files

Wagtail form Page and fix vagrant provision file

parent 4e1a4fd5
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 = AbstractEmailForm.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 %}
...@@ -22,9 +22,3 @@ class TaxonomiesModelAdminGroup(ModelAdminGroup): ...@@ -22,9 +22,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