mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Added update view & saving logic
This commit is contained in:
@@ -51,5 +51,6 @@ class Form(models.Model, RevisionMixin):
|
||||
class Meta:
|
||||
permissions = (
|
||||
('create_form', 'Can complete a form'),
|
||||
('update_form', 'Can change a form'),
|
||||
)
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
|
||||
{% block content %}
|
||||
<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>
|
||||
|
||||
{% 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 = $('<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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@ from PyRIGS.decorators import permission_required_with_403
|
||||
from rigForms import views
|
||||
|
||||
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()),
|
||||
name='create_form'),
|
||||
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'),
|
||||
url(r'^(?P<pk>\d+)/$', permission_required_with_403('rigForms.update_form')(views.FormUpdate.as_view()),
|
||||
name='update_form'),
|
||||
)
|
||||
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user