Skip to content
Snippets Groups Projects
Commit f9581d0c authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Update the submission to use a JSON field to store data

parent 57599f18
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
# Generated by Django 1.11.8 on 2018-01-22 09:40 # Generated by Django 1.11.8 on 2018-01-22 09:40
from __future__ import unicode_literals from __future__ import unicode_literals
import django.contrib.postgres.fields.jsonb
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
...@@ -18,7 +19,7 @@ class Migration(migrations.Migration): ...@@ -18,7 +19,7 @@ class Migration(migrations.Migration):
name='ApplicationSubmission', name='ApplicationSubmission',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('form_data', models.TextField()), ('form_data', django.contrib.postgres.fields.jsonb.JSONField()),
('submit_time', models.DateTimeField(auto_now_add=True, verbose_name='submit time')), ('submit_time', models.DateTimeField(auto_now_add=True, verbose_name='submit time')),
('page', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.Page')), ('page', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.Page')),
], ],
......
from datetime import date from datetime import date
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.contrib.postgres.fields import JSONField
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q
from django.http import Http404 from django.http import Http404
...@@ -56,6 +57,13 @@ class FundType(AbstractStreamForm): ...@@ -56,6 +57,13 @@ class FundType(AbstractStreamForm):
def get_submission_class(self): def get_submission_class(self):
return ApplicationSubmission return ApplicationSubmission
def process_form_submission(self, form):
# Handle passing to JSONField
return self.get_submission_class().objects.create(
form_data=form.cleaned_data,
page=self,
)
@property @property
def workflow_class(self): def workflow_class(self):
return WORKFLOW_CLASS[self.get_workflow_display()] return WORKFLOW_CLASS[self.get_workflow_display()]
...@@ -189,8 +197,22 @@ class Round(AbstractStreamForm): ...@@ -189,8 +197,22 @@ class Round(AbstractStreamForm):
class ApplicationSubmission(AbstractFormSubmission): class ApplicationSubmission(AbstractFormSubmission):
form_data = JSONField()
def get_data(self):
# Updated for JSONField
form_data = self.form_data
form_data.update({
'submit_time': self.submit_time,
})
return form_data
def __getattr__(self, item): def __getattr__(self, item):
# fall back to values defined on the data # fall back to values defined on the data
if item in REQUIRED_BLOCK_NAMES: if item in REQUIRED_BLOCK_NAMES:
return self.get_data()[item] return self.get_data()[item]
return super().__getattr__(item) return super().__getattr__(item)
def __str__(self):
return str(super().__str__())
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