From 153dacbf226b785b21a0e766a8f8559a005fb749 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 7 Aug 2015 20:42:50 +0300 Subject: [PATCH] Added update view & saving logic --- rigForms/models.py | 1 + rigForms/templates/rigForms/form_form.html | 19 ++++++++-- rigForms/urls.py | 6 ++- rigForms/views.py | 43 ++++++++++++++++++++-- 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/rigForms/models.py b/rigForms/models.py index fea53f3d..d0da2cbf 100644 --- a/rigForms/models.py +++ b/rigForms/models.py @@ -51,5 +51,6 @@ class Form(models.Model, RevisionMixin): class Meta: permissions = ( ('create_form', 'Can complete a form'), + ('update_form', 'Can change a form'), ) \ No newline at end of file diff --git a/rigForms/templates/rigForms/form_form.html b/rigForms/templates/rigForms/form_form.html index 6ab0eafd..916ae8f5 100644 --- a/rigForms/templates/rigForms/form_form.html +++ b/rigForms/templates/rigForms/form_form.html @@ -7,7 +7,9 @@ {% block content %}
-
+
+ +
{% endblock %} @@ -44,9 +46,18 @@ $scope.$broadcast('schemaFormValidate'); // Then we check if the form is valid - if (form.valid) { - // ... do whatever you need to do with your data. - console.log() + if (form.$valid) { + + //Submit the data in JSON form + var form = $('
' + "{% csrf_token %}" + + '' + + '
'); + + $('input[name="data"]', form).val(JSON.stringify($scope.model)); + + $('body').append(form); + + form.submit(); } } diff --git a/rigForms/urls.py b/rigForms/urls.py index 101dc2dc..928af8fd 100644 --- a/rigForms/urls.py +++ b/rigForms/urls.py @@ -5,7 +5,9 @@ from PyRIGS.decorators import permission_required_with_403 from rigForms import views urlpatterns = patterns('', - url(r'^create/(?P\d+)/for-event/(?P\d+)/$', permission_required_with_403('rigForms.create_form')(views.FormCreate.as_view()), - name='create_form'), + url(r'^create/(?P\d+)/for-event/(?P\d+)/$', permission_required_with_403('rigForms.create_form')(views.FormCreate.as_view()), + name='create_form'), + url(r'^(?P\d+)/$', permission_required_with_403('rigForms.update_form')(views.FormUpdate.as_view()), + name='update_form'), ) diff --git a/rigForms/views.py b/rigForms/views.py index dd29b934..8f6702b6 100644 --- a/rigForms/views.py +++ b/rigForms/views.py @@ -3,22 +3,57 @@ from django.views import generic from rigForms import models from django.shortcuts import get_object_or_404 +from django.http.response import HttpResponseRedirect +from django.core.urlresolvers import reverse_lazy, reverse, NoReverseMatch + +import RIGS class FormCreate(generic.CreateView): model = models.Form fields = ['data'] """ + Whenever this view is loaded, get the schema from the url Expects kwarg "type_pk" to contain PK of required type """ - def get_context_data(self, **kwargs): - context = super(FormCreate, self).get_context_data() - schemaType = get_object_or_404(models.Type, pk=self.kwargs['type_pk']) + def dispatch(self, *args, **kwargs): + schemaType = get_object_or_404(models.Type, pk=kwargs['type_pk']) currentSchema = models.Schema.objects.current_schema(schemaType) + self.schema = currentSchema + + self.event = get_object_or_404(RIGS.models.Event, pk=kwargs['event_pk']) + + return super(FormCreate, self).dispatch(*args, **kwargs) + + def get_context_data(self, **kwargs): + context = super(FormCreate, self).get_context_data() + context["object"] = { - "schema": currentSchema, + "schema": self.schema, + "event": self.event, "data": "{}" } return context + + def form_valid(self, form): + self.object = form.save(commit=False) + self.object.event = self.event + self.object.schema = self.schema + self.object.save() + return HttpResponseRedirect(self.get_success_url()) + + def get_success_url(self): + return reverse_lazy('update_form', kwargs={ + 'pk': self.object.pk, + }) + +class FormUpdate(generic.UpdateView): + model = models.Form + fields = ['data'] + + def get_success_url(self): + return reverse_lazy('update_form', kwargs={ + 'pk': self.object.pk, + })