Example #1
0
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 })
Example #2
0
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 })