I'm currently developing an application which serves all kind of sensor data to the user via a web page. Python-CGI is used to create the HTML and JavaScript code dynamically.
Before creating it the python script uses str.format() to insert some data into the html.
For the sake of simplicity I've omitted some code.
page_source = """
<!DOCTYPE html>
<html>
...
function print_array(code)
{
switch (code)
{
case '001':
SetValueVisibilty('Buttonspan', {0})
break
case '002':
SetValueVisibilty('Ultraspan', {1})
break
case '003':
SetValueVisibilty('Gasspan', {2})
break;
case '004':
SetValueVisibilty('Vib1span', {3})
break
case '005':
SetValueVisibilty('Vib2span', {4})
break
case '006':
SetValueVisibilty('Soundspan', {5})
break
case '007':
SetValueVisibilty('Lightspan', {6})
break
default:
alert('No Sensor');
break
}
}
</script>
<center>
<ul id='Sensors'>
<li id='Button'>
<INPUT type='button' value='Button' onMouseOver='return print_array('001')' onMouseOut='clearspan('Buttonspan')'/>
<span class='invisiblespans' id='Buttonspan'></span>
</li>
...
</body>
</html>""".format(get_five_entries("001"),get_five_entries("002"),get_five_entries("003"),get_five_entries("004"),get_five_entries("005"),get_five_entries("006"),get_five_entries("007"))
page_source = """
<!DOCTYPE html>
<html>
...
function print_array(code)
{
switch (code)
{
case '001':
SetValueVisibilty('Buttonspan', {0})
break
case '002':
SetValueVisibilty('Ultraspan', {1})
break
case '003':
SetValueVisibilty('Gasspan', {2})
break;
case '004':
SetValueVisibilty('Vib1span', {3})
break
case '005':
SetValueVisibilty('Vib2span', {4})
break
case '006':
SetValueVisibilty('Soundspan', {5})
break
case '007':
SetValueVisibilty('Lightspan', {6})
break
default:
alert('No Sensor');
break
}
}
</script>
<center>
<ul id='Sensors'>
<li id='Button'>
<INPUT type='button' value='Button' onMouseOver='return print_array('001')' onMouseOut='clearspan('Buttonspan')'/>
<span class='invisiblespans' id='Buttonspan'></span>
</li>
...
</body>
</html>""".format(get_five_entries("001"),get_five_entries("002"),get_five_entries("003"),get_five_entries("004"),get_five_entries("005"),get_five_entries("006"),get_five_entries("007"))
The function get_five_entries() returns a string.
I tried this both on a apache server and on the cli, but I'm always getting a KeyError:
KeyError: '\n margin'
I thought this could be caused by some misuse of quotes, so I've changed them all to single quotes, but still no success.
Could somebody please give me a hint to solve this?!
UPDATE:
def get_five_entries(column_code):
statusCodes = {'001':'Button', '002':'Ultra Sonic Sensor', '003':'Gas Sensor',
'004':'Vibration Sensor 1','005':'Vibration Sensor 2', '006':'Sound Sensor', '007':'Light Sensor'}
if column_code in statusCodes:
...
curs.execute("SELECT * FROM Log WHERE Code=:Code",{"Code":column_code})