views.py 1.94 KB
Newer Older
1 2 3 4
import json

import xml.etree.ElementTree

5 6
from django.http import Http404
from django.http import HttpResponse
David Baumgold committed
7
from edxmako.shortcuts import render_to_response
8

9
from .models import ServerCircuit
10

11

12
def circuit_line(circuit):
13
    ''' Returns string for an appropriate input element for a circuit.
14
        TODO: Rename. '''
15 16 17 18 19 20 21 22 23 24 25 26 27 28
    if not circuit.isalnum():
        raise Http404()
    try:
        sc = ServerCircuit.objects.get(name=circuit)
        schematic = sc.schematic
    except:
        schematic = ''

    circuit_line = xml.etree.ElementTree.Element('input')
    circuit_line.set('type', 'hidden')
    circuit_line.set('class', 'schematic')
    circuit_line.set('width', '640')
    circuit_line.set('height', '480')
    circuit_line.set('name', 'schematic')
29 30
    circuit_line.set('id', 'schematic_' + circuit)
    circuit_line.set('value', schematic)  # We do it this way for security -- guarantees users cannot put funny stuff in schematic.
31 32
    return xml.etree.ElementTree.tostring(circuit_line)

33

34 35 36 37 38 39 40 41
def edit_circuit(request, circuit):
    try:
        sc = ServerCircuit.objects.get(name=circuit)
    except:
        sc = None

    if not circuit.isalnum():
        raise Http404()
42 43
    response = render_to_response('edit_circuit.html', {'name': circuit,
                                                        'circuit_line': circuit_line(circuit)})
44 45 46
    response['Cache-Control'] = 'no-cache'
    return response

47

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
def save_circuit(request, circuit):
    if not circuit.isalnum():
        raise Http404()
    print dict(request.POST)
    schematic = request.POST['schematic']
    print schematic
    try:
        sc = ServerCircuit.objects.get(name=circuit)
    except:
        sc = ServerCircuit()
        sc.name = circuit
    sc.schematic = schematic
    print ":", sc.schematic
    sc.save()
    json_str = json.dumps({'results': 'success'})
    response = HttpResponse(json_str, mimetype='application/json')
    response['Cache-Control'] = 'no-cache'
    return response