def datatype(request, viewid, id, operationid=False): ''' dataype.html display fields and values of a DataType instance (content). ''' perspective = Perspective().find(database, viewid) datatype = DataType().find(database, perspective.datatype.id) content = LegoDocument().content(database, datatype.id, id) form = None operation = None if operationid: operation = Operation().find(database, operationid) # If the form has been submitted... if request.method == 'POST': form = operation.form(post=request.POST) if form.is_valid(): for field in datatype.fields: if field.id in form.cleaned_data.keys(): content._data[field.id] = form.cleaned_data[field.id] database.save(content._data) return HttpResponseRedirect('/datatype/%s/%s' % (perspective.id, content.id)) # Build the form corresponding to the current operation else: form = operation.form(content=content) # Build a non editable form to display the values of the content fields else: form = Operation().form(fields=datatype.fields) return render_to_response('explorer/datatype.html', { 'perspective' : perspective, 'operation' : operation, 'datatype' : datatype, 'content' : content, 'form' : form })
def operation(request, viewid, id): ''' operation.html display an operation form. ''' perspective = Perspective().find(database, viewid) operation = Operation().find(database, id) # If the form has been submitted... if request.method == 'POST': form = operation.form(post=request.POST) if form.is_valid(): operation.datatype.build(database, form.cleaned_data) return HttpResponseRedirect('/perspective/%s' % viewid) else: form = operation.form() return render_to_response('explorer/operation.html', { 'form' : form, 'perspective' : perspective, 'operation' : operation })