Added update view & saving logic

This commit is contained in:
David Taylor
2015-08-07 20:42:50 +03:00
committed by Tom Price
parent 7a0746d1a4
commit 153dacbf22
4 changed files with 59 additions and 10 deletions

View File

@@ -51,5 +51,6 @@ class Form(models.Model, RevisionMixin):
class Meta: class Meta:
permissions = ( permissions = (
('create_form', 'Can complete a form'), ('create_form', 'Can complete a form'),
('update_form', 'Can change a form'),
) )

View File

@@ -7,7 +7,9 @@
{% block content %} {% block content %}
<div ng-controller="FormController"> <div ng-controller="FormController">
<form sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(myForm)"></form> <form name="theForm" sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(theForm)">
</form>
</div> </div>
{% endblock %} {% endblock %}
@@ -44,9 +46,18 @@
$scope.$broadcast('schemaFormValidate'); $scope.$broadcast('schemaFormValidate');
// Then we check if the form is valid // Then we check if the form is valid
if (form.valid) { if (form.$valid) {
// ... do whatever you need to do with your data.
console.log() //Submit the data in JSON form
var form = $('<form action="" method="post">' + "{% csrf_token %}" +
'<input style="display:none" type="text" name="data" value="" />' +
'</form>');
$('input[name="data"]', form).val(JSON.stringify($scope.model));
$('body').append(form);
form.submit();
} }
} }

View File

@@ -5,7 +5,9 @@ from PyRIGS.decorators import permission_required_with_403
from rigForms import views from rigForms import views
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^create/(?P<type_pk>\d+)/for-event/(?P<event_pk>\d+)/$', permission_required_with_403('rigForms.create_form')(views.FormCreate.as_view()), url(r'^create/(?P<type_pk>\d+)/for-event/(?P<event_pk>\d+)/$', permission_required_with_403('rigForms.create_form')(views.FormCreate.as_view()),
name='create_form'), name='create_form'),
url(r'^(?P<pk>\d+)/$', permission_required_with_403('rigForms.update_form')(views.FormUpdate.as_view()),
name='update_form'),
) )

View File

@@ -3,22 +3,57 @@ from django.views import generic
from rigForms import models from rigForms import models
from django.shortcuts import get_object_or_404 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): class FormCreate(generic.CreateView):
model = models.Form model = models.Form
fields = ['data'] fields = ['data']
""" """
Whenever this view is loaded, get the schema from the url
Expects kwarg "type_pk" to contain PK of required type Expects kwarg "type_pk" to contain PK of required type
""" """
def get_context_data(self, **kwargs): def dispatch(self, *args, **kwargs):
context = super(FormCreate, self).get_context_data() schemaType = get_object_or_404(models.Type, pk=kwargs['type_pk'])
schemaType = get_object_or_404(models.Type, pk=self.kwargs['type_pk'])
currentSchema = models.Schema.objects.current_schema(schemaType) 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"] = { context["object"] = {
"schema": currentSchema, "schema": self.schema,
"event": self.event,
"data": "{}" "data": "{}"
} }
return context 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,
})