Skip to content

Instantly share code, notes, and snippets.

@MajorGressingham
Last active August 29, 2015 14:01
Show Gist options
  • Save MajorGressingham/aee7d956f4bc590b4763 to your computer and use it in GitHub Desktop.
Save MajorGressingham/aee7d956f4bc590b4763 to your computer and use it in GitHub Desktop.
Building a Bottle Application Part 2
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Building a Bottle Application Part 2<br/>\n",
"#============================\n",
"###A Basic Application for Retrieving and Adding Records from/to a Database\n",
"###------------------------------------------------------------------------------------------------------------------\n",
"\n",
"\n",
"**Author**: Rory Creedon (rcreedon@poverty-action.org)<br/>\n",
"**Date**: May 2014<br/>\n",
"**Purpose**: Building on \u201cBuilding a Bottle Application Part 1\u201d, this notebook shows how to build a simple application that will display records selected by the user and add new records. \n",
"\n",
"In the last notebook we built an SQL database of factory records from a .csv file. In this notebook we will see how to use that Database to display records to a user in a web application. \n",
"\n",
"Please note, that this notebook assumes you have worked though the Introduction to Bottle notebook. In particular no further comment will be made on the techniques of writing templates nor the use of dynamic routes. \n",
"\n",
"Additionally, no assistance with understanding the HMTL code is offered here. For HTML references (it\u2019s really quite simple) I use w3Schools: http://www.w3schools.com/html/. That being said, where there are useful HTML tags and options that might not be totally obvious I will discuss them and why they are helpful.\n",
"\n",
"\n",
"All files (including the .csv file and complete copies of the code files and templates) can be downloaded from here: https://www.dropbox.com/sh/j4u608mlc3fhfm3/AABDk-_MnPOFGuchkaybAUbka"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.core.display import Image\n",
"Image(r'C:\\Users\\rcreedon\\Dropbox\\Rory Notes\\Notes\\Bottle\\Intro_To_Bottle\\Beerbottles.jpg')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"jpeg": "/9j/4AAQSkZJRgABAgEASABIAAD/4RE3RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA\nAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodp\nAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dz\nADIwMDg6MDk6MDQgMTE6MTE6NDkAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACP6ADAAQAAAAB\nAAABOQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA\nAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABABAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG\nAAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL\nCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN\nDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM\nDAwM/8AAEQgAVwCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH\nCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh\nEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi\nZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE\nBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy\ngwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX\nZ3eHl6e3x//aAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkHMymYmM/IsBc1kSGxOpDf8I5jPzv30Lpv\n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\nHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAA\nAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEA\nWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP//////////////////\n//////////8D6AAAAAD/////////////////////////////A+gAAAAA////////////////////\n/////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQAAAAAAAACAAA4QklN\nBAIAAAAAAAYAAAAAAAA4QklNBDAAAAAAAAMBAQEAOEJJTQQtAAAAAAAGAAEAAAAGOEJJTQQIAAAA\nAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0kAAAAGAAAAAAAA\nAAAAAAE5AAACPwAAAAoAVQBuAHQAaQB0AGwAZQBkAC0AMQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA\nAQAAAAAAAAAAAAACPwAAATkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA\nAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxv\nbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAATkAAAAAUmdodGxvbmcAAAI/AAAA\nBnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAA\nAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRv\nR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpj\nAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRv\nbWxvbmcAAAE5AAAAAFJnaHRsb25nAAACPwAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAA\nAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hU\nTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VI\nb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAA\nAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25l\nAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRz\nZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE/8AAAAAAA\nADhCSU0EFAAAAAAABAAAAAY4QklNBAwAAAAAEB0AAAABAAAAoAAAAFcAAAHgAACjIAAAEAEAGAAB\n/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwI\nCAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM\nDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwM\nDAwMDAwMDAwMDAwMDP/AABEIAFcAoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAA\nAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggF\nAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNU\nZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH\n1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNT\nFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaW\nprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APVUkkklKSSSSUpJBzMpmJjPyLAXNZEhsTqQ\n3/COYz8799C6b1KnqNVllLXMFVrqXBxYfc2NWupfazb7v30lNtJJJJSkkkklKSSSSUpJJJJSkkkk\nlKSXKfWr69t+rvVcbpxwXZX2ittptDyzaHWejtYz0rfWf7XP2sd/58XVpX+CrUkkkkp//9D1VZje\nsW/tD7I7Fc2s3GluRuaWmGG7ds/nPzdi01gOdF1bzr/lA/i99KBU7Gc+xmFkPrd6djanljwA7aQ0\n7X7Xe121VumuzBkX15Nz7Q1lRZvbW2CfUa9zTR/pPT/P+gj9SJGDaBy4bf8AOIZ/35CpeR1HZ2so\nJ/zH/wDqZLqpL1BjbMV1bgCHloIOoI3NlVeh1NpGZW0Bo9feA0AfTqpeXQP3rN6uZEOLGeEvPwAL\nf+qcqeK5tHVrK3GG5dLDV4Gyk2Nvb/X9GzGd/wBuf6NFSbrWQ/G6Pn5NbxU+jGusbY6YaWMc9r3b\nfd7YXBf4ovrB1fqmT1OjqubZlOrZS6llzi5wANrbHV/yda/V/wCtrqfr/ksx/qf1MutFTrqTTX4u\ndYRWKh/xm7b/AFF5v/ilyKKfrhYLXhjsnEtqqB/Ps9Sm/wBNv/WqrbP7CBOoHdfGFwlL90j8X2le\nT/4u80v+v/UN1ji3Lx7rGM12y+zHyQ4y536T0925epZeTj4mNblZNgpopaX2Wu0DWgauXi3+LzFz\ncL62dM6hmyzDv341eYTNL7XUvbVityP5t125npenu/nmekkdwiPyy+j6p9dLnU/VjPcxxY8saxjg\nSPc97KmN3VlljWuc/a7Y7esH/E/mX5f1XufkXPvtbmWNLrHOc4DZQ4Dc8u/eV7/GblVVfVPIx/VF\neVlWUMxa5973tvosc2prfe7axu72LG/xQtODT1PpOZuxupMubc7BtBZYKjXW0Xhj/pMc793/AIP/\nAEtaKKHDd63s9D9dvrVb9WMGjKqxvtRusNe0lwAhrn/SY2zwWx0jOPUelYXUC0VnMx6rywGQ31WN\nt27iG7tu9cT/AI3RZZh9PorBdLrrHAcwwVs3bf3W+suq+qD2v+qnRy0ggYOO0x4tqYx7f7LmpoNy\nkO1Mk8dYsc6+cz/5nCj+t31kd9W+mMzm4v2x1lzKG07/AE/ph79+/Zd9H0/3Fb6D1U9Y6Pi9TNX2\nc5LN5p3b9pktLPU2s3fR/cXM/wCNcj9iYDT3zmn7qMpan+L4k/VHCnXa69vybkXtb/0Qhxevh/q8\nTX4z7hh/VEvxeb/xg3f5as2804LXDyIdk2/98YvRQQQCNQdQV5F9Zeou6t13qWRiMFmM5v2al5cR\nuFbH0WWextn6J1z7PS/0la9I+q3U6+qdCxMluljaxVkMJksurHp3sP8Abb7P36tlihwEe9nojWUe\nvaNLcZ9c/N5vo/Wur3fXSzEvzX2YZycylmMWsDQKt3pN3NaHfo/SXdLzDotzT9eWWdj1POAP9YZz\nGr09P5eUpCfEbqc4/QFby8pSjPiN1knH6Av/0fUrra6Kn3WHaytpc4+Q1WQ/GBxWudZX9qbc3IcB\nu9ORb9pexv8AhPofo9//AIF/g1e6yJ6Tmj/gLP8AqXKi5pNUR2P5CmlIbOVm417catpL68tvrsLe\nHVs9N/0v5bralG/Kpx7acktIl7McxxFz2VMn/rzq1nY4ayjoTB2wHAfANw0TqziMak+GXhn/ANma\nEDup2j/OPHkPu1QbWs9aguAltksJ7EssZ7f7D3oj3RkOA52tP4vCE54+00g6kvMfHa9PQ+af43uo\nXnreJ0575xGYoyGUyQPVssupdc7b9Nza6dle7+b33f6VecPtsx7WXUWGu2twfXYwlrmuadzLK3t9\nzHsd+cu2/wAdLi361YpH/cCv/wA/ZS8/c4u5TOH1XbP70fZ9vh9Wuvm+2fXzq+cz6o9F6hua23Iv\nxrL2gSwuNFuTt2O/Mbcz1Gfy2VrzHNzfXsvyHtabLw7fDRHuHZv0fZ/g/wBxegf4xZ/8b7oRHPq4\nv/trevMmVW3NLeJ0CjygcQldU3eQkfanAYxOUiRtfTZ6T66dazLrcA5bxc/I6Phne9oc5ptb6+Tb\nTu/mrrrP5y5n6TZ+jWZ9Ss23H+tPSK8V5bOZWDIB9tv6vkNDo3fpaXbE/wBeGluR0dvJHR8EGPKp\nVPqX/wCK3o//AIcp/wCrapq1u3PMyI8BiNLF16nrc/rFuY+3PybB9ty/WpvsMP2Uh1mO3CxPUrd9\nmpaz1Nzqv0l3q2ep/OWLb/xb9Rub1+7pVLwMJ2D9pdS3dtFzLKqvVra5zm1OvZf+sel7LLPevPrb\nXmy0CSBbbHzsscur/wAUrnP+t+YXct6eQP8At3HVTDCQzyJmTrPTwv0uvzpxf6PxVACRGM3W0pR4\npO1/jSyxlZWB0mhzS/GLsnIJMbd7XU47PaH+936Z/wDU9P8A0i0P8XfUAOj5HSLCGZOKbLqoM7qb\nnOsbazRv83e62uz9z9H/AKRcr9eT6f1zzjH02UH/AMDa3/vq0P8AF67f9YLSeR020D531lEZJfei\nNOGuH/unmI5JfeiNKrh+nzOF0bJrGPjQ2NK/++rrfq51R3Svq19Y8+lsux86z02fmhxqxa2Oj91r\n3+9cP0mi/wCzY5MCAz/vq6vp1Lz9S/rUw6l2bY4f5uL/AORUHKADNlIPQrsR1l5GmqzFw8eluTjm\n1mTjOOTVcXEu9Zv6X1Xy7bZ6r3P9VjvZZ6j16b03MGf07FzmtNYy6a7ww6losa2zb/Z3Lzg47jiu\nBIBLHCD/AFV3/wBXWln1f6Yw8tw6AflWxM+EZJS94GRlqJeo8XzcXEw/D5k+4CT0lqb1lfEX/9L0\n3qDd+BkN/erePwKEK27ZP+ui5G7M/wAbllNjH9O6W0FpEhzwdf3f1rb/AJyicz/Gz/5XdK/znf8A\nvWmlIemrx2hnTf8AgsUsA+Ix/wD0mpZtDbaWMPHrUO/zLarP++LkvX/xshlDW4PTf0de1p3mS0hu\nrt2Tt3e1v0ErMj/G44NDsHpoAew6OiYcHQduRu2fvpEKezyLXjMewhoYK2Fr51JJt3scP5G2vZ/x\niHXYDl0B8avO3U87LP8Avq5R2R/jVdY5z+ndJ3GN0vf24/7VqJu/xp7mO/Z3SSWuDmje/wCl2/7V\npyHlf8dX/ipxNP8AtBX/AOfspefld39eek/XPq3VacjrONi05TcdrGtxnw30w+1zS71bbffvfYuc\nP1S60ASa2aa/zjP/ACSSrfSv8YpDPqF0Oe12Lof/AAtevNRm7Guc2JAMfcu1+smD9fM76uYuDn4X\nT2YNHo/Zn02H1PYw107TZkPZ/NOd+YuQr+qvXhO6qstgyH2NiPk5RzxiZ1bnK87PBAxiDqbtN9dS\n5+R0eNT+x8Gf+2pVX6mhw+tvRy6R+uU/9W1afXfq99ZMq/HdfRjVurxaKqxRbI9Gtnp4rnerZZ73\nUtQeifVv6x43V8PJoppfkU3MfQ260bDY07qt/pvY/wCmP309q2K63+C9IsfU+xtYJc9+n9pxldT/\nAIqZP1qzHEbduDt++2pcpb9W/rPxVXW2uTtFdjSIk8F7nPW99S+m/Xjpmbff0zFwrsl9QY45T9RX\nua79GKbqf8Ixigx4jHIZkg2Ts6XNc8MvLDBwzHAIeox/c7ur9eW1D61XOe2ZpqP4OH8Fa+oXpP65\ncWN2kYNonyN1RWH9YsD/ABgZnVH5GVi4bMlzGBwoeNsDds9uRdZ7lL6v4P8AjCxMuyzFxcN1rqHV\nuF1gA9Nzmus/o91f5zWqD2ZDmfcsVfy8Xq/xXnhhkOY9y41e1+ty8DJLaKQWnhn8F13RLt/1R+s1\nkafabCP8ylcaOi/X1u0VVtDRGwNNJGn0ed3/AElsYOD/AIw6+hdRxhjYZqybN2XZY8NuDgGbdraL\nWUNbp/okcWAwlKVwPED8sr3ZY4yL1BsEbuhdnzju9vuDHfkXofQjPROnnxxaf/PbF4wek/4xS0gs\nG2DM+hx8YXa9Oyf8a+P07Foxun9MfRVSxlTnPeXbGta2svP2pvu2pvw/lDy5ncoy4q+Q8SzlcBxG\nRMoy4gPl8H//0/Urf5p/wKjpCm8Sxw8QVHbokpGOKf6n/kE9mjQf5Tf+qCkGaV/yWx/1Kd7JAHm0\n/cQUFMXsJtLjG2BHjPumVFtY9RhPYyPjBR41lNGoPgip5n6z4fr9QrfExSB/0nrHf0z2O07FdjnY\n3rXNdHDY/EqucAQdElIut4wu6TiVx9F9Z+5jwsQ9KBaQB2K6zKp349bP3SPwBCrDDI7JpDLjmAKI\ncDqPT5tx4H0cWhv+a1wUOnYBb1HFeR9G1p+5dHfib3MMcVtb9yanD23Vuj6LgU5jvo4deC5rC0Aa\nOd+Uq99X8X0eo2uPekD/AKQV/wCx86dz+VGw8f0r3P8AFsfimRjRJZ8mXixiPk53VcYWdQe4/utH\n5UTpGMKspxHepw/6TVdyMffe53iApY1Hp2F38kj8U3g9fE0+D18Tz1WAdjPKFo4uLs6bnV/vvdH3\nNVtmMQ0CEZtMUXN/ecT+RKMKJ8kiLlOwPYfGCtrEbtxaW/u1tH3AIPo6cKzWIraPAAfghhx8N+KM\nceG3/9T1VMvlZJJT9U6JaL5WSSU/VSS+VUklP1SdvdNDPJfK6SSn6pMRrwm9nkvldJJT9Ue3yS9v\nkvldJJT9Ue3yTjbOi+VkklP1SdvdIR2Xyskkp+qPb5J9IP4r5WSSU/VOiS+VkklP/9kAOEJJTQQh\nAAAAAABVAAAAAQEAAAAPAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwAAAAEwBBAGQAbwBi\nAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAgAEMAUwAyAAAAAQA4QklNBAYAAAAAAAcACAAAAAEBAP/h\nOrFodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0i\nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6\nbWV0YS8iIHg6eG1wdGs9IjMuMS4xLTExMSI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDov\nL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3Jp\ncHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcv\nZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvanBlZzwvZGM6Zm9y\nbWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6\nYWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x\nLjAvIj4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIFdpbmRv\nd3M8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDktMDRU\nMTE6MTE6NDkrMDE6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+\nMjAwOC0wOS0wNFQxMToxMTo0OSswMTowMDwveGFwOk1vZGlmeURhdGU+CiAgICAgICAgIDx4YXA6\nTWV0YWRhdGFEYXRlPjIwMDgtMDktMDRUMTE6MTE6NDkrMDE6MDA8L3hhcDpNZXRhZGF0YURhdGU+\nCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91\ndD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w\nL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu\nMC9zVHlwZS9SZXNvdXJjZVJlZiMiPgogICAgICAgICA8eGFwTU06RG9jdW1lbnRJRD51dWlkOjUw\nMDc2NUQ5Njk3QUREMTE5QTgyRjRFMTU3MDJDODlFPC94YXBNTTpEb2N1bWVudElEPgogICAgICAg\nICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOjUxMDc2NUQ5Njk3QUREMTE5QTgyRjRFMTU3MDJDODlF\nPC94YXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eGFwTU06RGVyaXZlZEZyb20gcmRmOnBhcnNl\nVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD51dWlkOjBERUUz\nNDk2Njc3QUREMTE5QTgyRjRFMTU3MDJDODlFPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAg\nICA8c3RSZWY6ZG9jdW1lbnRJRD51dWlkOjBERUUzNDk2Njc3QUREMTE5QTgyRjRFMTU3MDJDODlF\nPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICA8L3hhcE1NOkRlcml2ZWRGcm9tPgogICAgICA8\nL3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAg\nICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAg\nICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlm\nZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0\naWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAg\nPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRp\nZmY6TmF0aXZlRGlnZXN0PjI1NiwyNTcsMjU4LDI1OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwy\nODIsMjgzLDI5NiwzMDEsMzE4LDMxOSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMz\nNDMyOzVGRjJCNzgxMEYyMUYyQTAzNzY5QjQ1NkNBNUYxMTZBPC90aWZmOk5hdGl2ZURpZ2VzdD4K\nICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0\nPSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAv\nIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjU3NTwvZXhpZjpQaXhlbFhEaW1lbnNp\nb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMTM8L2V4aWY6UGl4ZWxZRGltZW5z\naW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAg\nICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYy\nLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0\nODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0\nLDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQx\nNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5\nLDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUs\nNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywy\nOCwzMDtFNjBBRDgxRDE0QUI1QzQwQTM0MjA1QzVCNjY5N0Y5ODwvZXhpZjpOYXRpdmVEaWdlc3Q+\nCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91\ndD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhv\ndG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICAgICA8cGhv\ndG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9z\naG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgog\nICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhM\naW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAA\nAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE\nAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQA\nAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl\nY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29w\neXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdC\nIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZ\nWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY\n2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAA\nAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig\nY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig\nY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\ncmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJl\nbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAA\nAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2\nAAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA\ndwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH\nAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB\n0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV\nAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE\nLQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXF\nBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wH\nvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7\nChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4M\npwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+W\nD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT\nAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay\nFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p\nH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k\nfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ\nKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Ev\nxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9\nNjc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ8\n4z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD\nREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL\n4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2\nVEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc\n1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXn\nZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv\n0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnn\nekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE\n44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG\nkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c\nHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\nqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1\nirYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lb\nw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR\nPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v\n4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv\nQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c\n/23////uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMD\nAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIATkCPwMBEQACEQED\nEQH/3QAEAEj/xAGiAAAABgIDAQAAAAAAAAAAAAAHCAYFBAkDCgIBAAsBAAAGAwEBAQAAAAAAAAAA\nAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1AQIDBBEFEgYhBxMiAAgxFEEyIxUJUUIWYSQz\nF1JxgRhikSVDobHwJjRyChnB0TUn4VM2gvGSokRUc0VGN0djKFVWVxqywtLi8mSDdJOEZaOzw9Pj\nKThm83UqOTpISUpYWVpnaGlqdnd4eXqFhoeIiYqUlZaXmJmapKWmp6ipqrS1tre4ubrExcbHyMnK\n1NXW19jZ2uTl5ufo6er09fb3+Pn6EQACAQMCBAQDBQQEBAYGBW0BAgMRBCESBTEGACITQVEHMmEU\ncQhCgSORFVKhYhYzCbEkwdFDcvAX4YI0JZJTGGNE8aKyJjUZVDZFZCcKc4OTRnTC0uLyVWV1VjeE\nhaOzw9Pj8ykalKS0xNTk9JWltcXV5fUoR1dmOHaGlqa2xtbm9md3h5ent8fX5/dIWGh4iJiouMjY\n6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/2gAMAwEAAhEDEQA/AN/j37r3Xvfuvde9+691\n737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf\nuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69\n1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv\nfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6\n91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X\nvfuvde9+691//9Df49+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737\nr3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd\ne9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173\n7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv\nde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917\n37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf//R3+Pfuvde9+691737r3Xvfuvde9+6\n91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X\nvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+\n691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3\nXvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9\n+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r\n3X//0t/j37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917\n37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu\nvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691\n737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf\nuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69\n1737r3Xvfuvde9+691737r3Xvfuvde9+691//9Pf49+691737r3Xvfuvde9+691737r3Xvfuvde9\n+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r\n3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde\n9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737\nr3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd\ne9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf//U3+Pf\nuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69\n1737r3Xvfuvde9+690G9d3H1JjN7nrPIdnbAo+xhRU+SbYFRu/ARb0XHVccs1LXvtdq8ZtKOphhd\n45TAEdEJBIBPv3XuonYXePTHUeGXcfa/bHXPWG3mqaSi/j3Ym9NvbJwq1lfKtPQ0smV3LkMZQRVN\nbUOscKNIGkkYKoLEA+690JNFW0WSo6TI46rpchj6+mgraCvoqiKqo62jqoknpaukqoHkgqaapgdX\njkRmR1IIJB9+691K9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r\n3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde\n9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737\nr3UasnelpKqpjpaitkp6aeeOipPD91VvDE0i0tN9xNT0/wBxUMuhNciJqI1MBcjx691pCTf8K/e0\nKzfO/NpY7+W9tvbz7C3huPZ+Wxe+PlwKXdNNkduZSTFVlJlKHbvQ2cxdBkaepheOdIaqrhjmVlSW\nRVDuB+YuerHluSGO7s55GkFQY1xQ182K5x5DoL71zPDsrxxyWUsrMK9gwOPEmn+bocuif+FSva3a\nPyQ+MXRG4P5e2Cig+S/ZOK6+xFV1x8oxureWGir8gmMqs9BtvePSfXO3s9FQsZKhaePNQmdIHhEi\nz6FavLHPm3c1zXsO32dwjW+nUZFABLGgClWc1HmGC+WaZ6d2XmSDe2kWC0kjZAK66Uz6FSc/aB1u\nJex10I+ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6/9Xf49+69173\n7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv\nde9+691737r3Wv73j8cdl9lfN35Sbt3NV5yPZG+tnbB2zunC7C3TuXY9fWZ7aOA21QY7cs+f2xVY\n3NUG6qpcfXY2rqaOoglnxuLoYHZooir+691Vd/Mp+HfxO6i+EXyL7CweK7lkqdsbMTJzndXyA7d3\ntj6am/jeMWpqFw2+Nz7hwa1sNOWanmNKZIZtLowIHv3Xutsj4h4Sj2z8Wvj1tfHrTij2t09sDa8M\ntJTQ0dPWDbe28fhGyUVJAzx0q5R6E1PjvdDLY8g+/de6MX7917r3v3Xuve/de697917r3v3Xuve/\nde697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917\nr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve\n/de697917r3v3Xuve/de697917r3v3XugW+SWY7N298du+s/0rt+q3b3JhOmO0Mv1Ntahekjrdyd\nl47ZGcrNi4Gjkr5qehSqy+6IaWnjM0kcWuQa2VbkUk1aH0Huoafb1VtWltPxUx18YnaubXbdG+A3\n5s9H3Ti6qvpc9HuvA0dZnYs9FUSrl1y0mRp561cqMisv3HlPk82rV6r+8cea9p3K73i9ubTd5kVn\n4JLIgpXGARinUA8wWW9Pu95Nb7hKsbOTRZGApX0BGOh82Rn91ydj/ETK/Fvac+Y+TuL732zmeudk\nbLwMNLuHJb42n2JtjcPWpxhjgoaSaXJ5uJ4fRNpAiby6VuS97f7dvdlzJey3l9NLZ0TQzyM41FCr\nqAWJ46TkcaU6NuULLdotyt5pbuWRfPW7MOBFKEn5U/l19l6FpHhieZPFK0UbSxXDeORlBdNQJDaG\nJFx9feRfU1dZffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf//W3+Pf\nuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69\n1737r3Xvfuvde9+691rwfKP4ZdJdvfNn5Sb63PtWnkiqdidC0uch2pvPtbYtTlN9U+392tJuLc1H\nsjfO28BmdyR7Vq8fTQ1zUprEoVWJpSvA917qqf8AmEfy7utcb8JPlhluqqLdGK3hhuiN97hxQy/a\nfcG7sRUUu2sFVZrPUD7e3jvjc2DknymCx1RDFK9MzwSuJImjcBx7r3W3R8O8LtzbvxL+MmG2jRYX\nHbaouguolw1Ltz7w4JaKbYWBqI5cXJkamtyVRSVRmMqzVU89VNr1zSSSMzn3XujH+/de697917r3\nv3Xuve/de6aNwbgwO08Dm907pzWJ21tjbWIyWf3HuLP5Gjw+CwGCw9HNkcvms1lshNT0GLxOLx9P\nJPUVE8iQwwozuwUEjwBJoOPXuq15v51n8o+CWSF/5jXxAZ4mdGMPeGyKmIlG0sY56fKSwTKT9GRm\nVhyCR7qWA9f2HqwUnzH7R/n6g03873+URV5OkxEP8xX4oCrramGkgkm7b25S44TTuqRmpzFTUQ4i\nigDONUs08cUYuWYAE+9hgeFf2HrxUiuR+0f5+rSY5Ip4454njmikRZIZo2WSOSORQySRyKSrJIpB\nBBsR731XrJ7917r3v3Xuve/de697917qon+c/wDNj5GfBL4v7K7S+MnXu3uyd/bw7swPWFXhM0aO\nSvpMJmthdjblky+3KPKZvAYipylBkto0zSmqlmiiojO3gc2eJPcyNHHVXCn1P2H5H/B0qs4DcTLG\nIy3DAIB4gcTjz8yOtMzdn/Cnz+b70nvSXGb5pemJ1raGLMU+0+zesME+Ro6SteYQJTZXqPLY2iel\nVqdkj8sk0w0kuzXHsFf1jv0nlhJEmlqVULT7TqKHqfrT2p2rcNos7+KKRHZTqrIT3AZSgDAMPMiq\n0oR6dbFn/Cfn+cf8zf5ovYfyW2h8l+q+itjYHpbZvWe5MVW7Bj3ttbf0WR7FnyhwcGU2vuPLbqw2\n6dn7lxGEraumy1HV4ubHS0iU81JUirSeAaWE31Vn9Q0qM2qnaCPI1qCTQjhSp+R6hTmPaW2bdLix\nNtJEFpQOyuaHzDKAGU0JU0B8iAQetn32p6Iuve/de697917oBvlJ2/nvj78b+9O9Ns7Ih7JzvUHV\nW9+yMfsaq3VQbHotySbO2/XZ6WgyO78nSZCk23jBT0LyVNYaaqkhp0do4J5AkT7ABOWAHqf9jPVl\nUuyqOJNOtKvfv/Cvn5L7CrMXJV/BDrz+D5zGyZLGVO8t5dq9VJWRa49JwVZuzY08u66WCORTJU09\nHDCxddBI5JPebvDZTiKRHaoqNKkn8wDgfM0+zobbZyRf7ttwu7UBZAxDeIwRBQVwSpJPyp5EgmnR\nsP5VX/Cn3uv+YN82ekviVvH4YbP2Nje5K/sqkG/dqdmZqemwNF1919uLflRl8QNy4GmoN8vD/Alp\na6ggloqmnhmNVG0xT7VjG1mW6iEqmmK0IoR8iM0PQa3TbZtsmEE0TBsgnihp/AwADD1xg463Hfb3\nRZ1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3\nXvfuvde9+691737r3SO7E3PSbI6/31vSvqloaHaOztz7nra511JR0mAwldlaiqdbHUtPDSFyLG4H\nursFRmPAAnrRIAJPAdfLh6O64gl2FgarIYqiqa3IYqjyeSmloKZpKivyMCV1dPKWgIMlRVzs7m3J\nN/fIj3E5surjmnd3S/loLhwDrbgGKjz9B1iFP4099d3DO2pnY8T6noc62ixvXPYPwN7NpsPFTv1v\n8oestzibGU8NLkIafa3yB2JnqhKKoESLTzyQSSqpvb1erg+5L9iuYLtObdjMt7KVlkYEaj3ELwOc\n+XH/ACdCjlp5rTddgcua+MFbJp3Gn+Dr6bnvpd1kt1737r3Xvfuvde9+690hN59pdZdc/b/6Quxt\nibE+7hkqaX++e7tv7X+5p4qmlo5Z6f8AjeQofNDHV1sMTOt1EkyKTqdQallWgZgCeqsyrQswA+fS\nLqPk18bqSSaGq+QXSFNLTQfc1EVR2vsOGSCm1+P7iZJM+rRQeT062AW/F/ba3Fu7aFnQvStAwrT7\nK9UE8LNoWZS/pUV/Z0Nkckc0cc0MiSxSoskUsbK8ckbqGSSN1JV0dSCCDYj29071z9+691737r3X\nvfuvde9+691//9ff49+691737r3Xvfuvde9+691jkliiF5ZEjBvy7Kg4FzyxA4HvxwKnh17rqOeC\nX/NTRSXvbxyI97WvbST9L+6h0PBwfz63QjiOsvu3Wuve/de697917r3v3XuqDf5rO6vkynyg+GvX\nvx57x3PsCq3f2bs2TIbTpt1bi2xs7IRba2V8jt/5gbuxWzaBszv7bWYoNjQVOSpaquoaSlqMDi6W\n8kOXrEJPuN34EmlptMegVzQjUwUMD9uOGOtqrsaItT0KWO2//Mxefz1fyp6LdRS1Mj0a/H/f4eWV\nqOQRO0idzR6LTsGsqKvIsBwAUm+fT+ldj85Kk/yx0rEarHSSM6v9Xn00/wAlrcHcD7I7+6/7s7W3\nb2FuzrDuXsjZsVBuvcm993vRUeE7q7ix6ZbGZrsKprtw0GKamgp8Rj8SlRUU9Dg8PjpDNNPUzSsc\n7bcNO06ux1qEx6VWvH5/LHSVhQ8MHq7b2a9V697917r3v3Xuve/de6quqIaXP76+T2649Mv8c7jq\n8AJVcyAwdcbF2RsZogzKLCDMYutUotgr6hybk+690DPZexaXd/XfYm0poVqKXdnXe9tr1ETgMkkG\n4dtZTDSqQwFwyVh4+n49+690af8AlIbph3f/ACwvgRk454p5sb8U+ltnZJopDII8517sjE7C3BTS\nFlVlqKPObbqIpVIukiMv49+691Yh7917r3v3Xuve/de697917oj/APMu7a6/6K/l8fM7tftLamE3\n9sTaHxu7aqM7sDckME+A3+Mls7KYTG7DzMNTHLBJjt6ZjJ0+MlDI40VR9J+hegLCZGUkFTX9mT/I\ndaPDr4eUrQJ4jT3ZjGDP5EQqJSBrCKV0hA17cXt7SKHYv4mBXFMY6WM8MUcBgAMpB1agCK1xQEEc\nOnbamcp9tbr21uWsweJ3NSYDcGGzlVtrOwGfBbhp8VkaavnweZpkKmbE5aKnNPUICC0MjD8+3lOg\nqR5Hz6SsdZJIGfTH+Dr7v3QfaOze7+jOme5+u4lg2B231V172XsinWnjpBTbS3ztPE7m27TfaRKk\nVKafE5OFDEqgRldIAtb3twQzAmpr1roWfdevde9+691737r3XvfuvdaxX/CnXsPs7rHon4sbl231\n9kexOvpO7d04XP4rb2cxGO3NF2Xluts3H1vLSY/LKq1+IXacO72q5EkXwSLAGB8gIT3ANBkaSCDW\nv7eHAAHj69KLaSWKVXhrrBHDr5oHzA7W3f2Z3HX5PMbXzWwZ8bhcRh1wOXmhrq+KOjp3l+4mq8bA\n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\n8uu56JXP0/H4/wB6/Pu+jPXivWfG0op2mIFtem/+w1f8V9uqKdWXh06HkEf4e7dW6T0NAEA9P9Pb\nEiaj0wyVJ6likH9P9t7ZMPy6r4VfLrl9qP8AUn/efevBHXvC+XXTUotbTb/X9+EOeHXvD+XXVHSi\nKqaUD6wsv+3dD/xHtVGukU6djXSD07+3OnOve/de697917r/1N/j37r3Xvfuvde9+691737r3Xvf\nuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69\n1737r3Xvfuvde9+691737r3XvfuvddWH9B/th7917r1h/Qf7Ye/de69Yf0H+2Hv3XuvWH9B/th79\n17r1h/Qf7Ye/de69Yf0H+2Hv3Xuu/fuvde9+6911Yf0H+2Hv3XuvWH9B/tvfuvdesP6D/be/deqf\nXr1h/Qf7Ye/de69Yf0H+2Hv3Xuu7W+nv3XuurD+g/wBt7917r1h/Qf7Ye/de69Yf0H+2Hv3XuvWH\n9B/th7917r1h/Qf7Ye/de69YD6AD37r3XrD+g9+6916w/oP9t791up9evWH9B/tvfuvVPr16w/oP\n9t7916p9evWH9B791qp9evWH9B/tvfuvdd+/de697917r319+6911Yf0Hv3Xuu7D37r1B16w9+69\nQddWH1sPfuvdd+/de66sD9QPfuvdesP6D/bD37r3XrD+g/23v3Xuu7D37r1B11YH8D37r3XdgPoL\ne/de697917rqw/oP9t7917ruw9+69QdesPfuvUHXrD37r1B16w/p7917r3v3Xuve/de697917r//\n1d/j37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3\nXvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9\n+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r\n3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde\n9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737\nr3Xvfuvde9+691737r3Xvfuvde9+691//9bf49+691737r3Xvfuvde9+691737r3Xvfuvde9+691\n737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf\nuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69\n1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv\nfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6\n91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf//Z\n",
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"<IPython.core.display.Image at 0x34e5430>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Contents:\n",
"\n",
"+ The Basic Application\n",
"+ Welcome Page\n",
"+ UID Search Result\n",
"+ Add a Record\n",
"+ Verify Inputs\n",
"+ Commit to Record"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#The Basic Application\n",
"\n",
"The application will have two basic functions:\n",
"\n",
"1. User to search the database 'factories.db' by entering a UID. Once verified as part of the database, the records associated with the UID will be displayed to the user.\n",
"\n",
"2. User to add a record to the database 'factories.db'\n",
"\n",
"In order to achieve this, the application will use the five URLs. A description of what type of content each URL points to is given below:\n",
"\n",
"| | |\n",
"|---|---|\n",
"|**URL** | **Content** |\n",
"| /welcome | landing page, UID search box, 'add record' button |\n",
"| /welcome/result | result of UID search (display records if valid UID, notify of error if invalid UID) |\n",
"| /add/`<uid>` | form for inputting the details of a new record |\n",
"| /add/ `<uid>`/validate | form for validation of inputs for creating new record |\n",
"| /add/`<uid>`/validate/commit | commit the new record to database and display new record |\n",
"\n",
"**NB** Some of the bottle templates I create as content for these pages are displayed here, but the IPython rendering of the HTML is not great as the html includes python code, which bottle can handle but IPython cannot. So don't be put off if things look a bit odd. They won't if you download the files and runt his for yourself. \n",
"\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import bottle as bt\n",
"import webbrowser as wb\n",
"import re, sqlite3\n",
"from IPython.core.display import HTML"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Welcome Page\n",
"\n",
"Our welcome page will display a welcome message, and give the user the option to either call up a record by entering a UID or to add a record to the database. We will use a simple template that looks as follows:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"welcome_html = \\\n",
"\t\"\"\"\n",
" % URL = \"http://localhost:8080/add/\" + new_uid\n",
" \n",
"\t<!DOCTYPE html>\n",
"\t<html>\n",
"\t<head>\n",
"\t<title>Bottle Micro-Web Test Application</title>\n",
"\t</head>\n",
"\t\t<body>\n",
"\t\t\t<div style=\"text-align:center;\">\n",
"\t\t\t\t<h1>Welcome to the Factory Database Test Micro-Web Application</h1>\n",
"\t\t\t\t</br>\n",
"\t\t\t<div/>\n",
"\t\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h2>To call up a record please enter a valid UID in the box below:</h2>\n",
"\t\t\t<FORM action=\"/welcome/result\" method=\"post\">\n",
"\t\t\t\tUID: <INPUT type=\"text\" name=\"UID\"><br/>\n",
"\t\t\t\t<INPUT value=\"Get Records\" type=\"submit\">\n",
"\t\t\t</FORM>\n",
"\t\t\t</div>\n",
"\t\t\t</br>\n",
"\t\t\t</br/>\n",
"\t\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h2>To add a record to the Database of Factories please click below:</h2>\n",
"\t\t\t\t<FORM ACTION= {{URL}}>\n",
"\t\t\t\t\t<INPUT type=\"submit\" value=\"Add Record\">\n",
"\t\t\t\t</FORM>\n",
"\t\t\t</div>\n",
"\t\t\t<body>\n",
"\t<html>\n",
"\t\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"HTML(welcome_html)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
" % URL = \"http://localhost:8080/add/\" + new_uid\n",
" \n",
"\t<!DOCTYPE html>\n",
"\t<html>\n",
"\t<head>\n",
"\t<title>Bottle Micro-Web Test Application</title>\n",
"\t</head>\n",
"\t\t<body>\n",
"\t\t\t<div style=\"text-align:center;\">\n",
"\t\t\t\t<h1>Welcome to the Factory Database Test Micro-Web Application</h1>\n",
"\t\t\t\t</br>\n",
"\t\t\t<div/>\n",
"\t\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h2>To call up a record please enter a valid UID in the box below:</h2>\n",
"\t\t\t<FORM action=\"/welcome/result\" method=\"post\">\n",
"\t\t\t\tUID: <INPUT type=\"text\" name=\"UID\"><br/>\n",
"\t\t\t\t<INPUT value=\"Get Records\" type=\"submit\">\n",
"\t\t\t</FORM>\n",
"\t\t\t</div>\n",
"\t\t\t</br>\n",
"\t\t\t</br/>\n",
"\t\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h2>To add a record to the Database of Factories please click below:</h2>\n",
"\t\t\t\t<FORM ACTION= {{URL}}>\n",
"\t\t\t\t\t<INPUT type=\"submit\" value=\"Add Record\">\n",
"\t\t\t\t</FORM>\n",
"\t\t\t</div>\n",
"\t\t\t<body>\n",
"\t<html>\n",
"\t"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"<IPython.core.display.HTML at 0x30e1a50>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember that this is a bottle template and therefore lines that are preceded by the `%` are in fact python code. The IPython notebook does not recognize this `%` magic symbol, and therefore when rendering these templates in this notebook, such statements will appear as regular text (just like above). Also, any objects in `{{obj}}` double curly braces is a python object, and this will not be read by the IPython HMTL renderer. \n",
"\n",
"There are a couple of important things to note about the HTML template. Firstly notice the use of the `FORM` tag to create input boxes and submit buttons. \n",
"\n",
">Secondly, notice that within the `FORM` tag it is possible to provide an `ACTION` option and in both cases of the use above, the action is a URL. \n",
"\n",
"This means that once the user has pressed that button the application will be directed to the URL specified by the `ACTION` option. This is the key method I use to controlling the *flow* of the application. \n",
"\n",
"If the user presses the 'Get Records' button he is directed to /welcome/result.\n",
"\n",
"If the user presses the 'Add Record' button he is directed to the rather mysterious `{{URL}}`. Recall that objects in curly braces within html code are read as python objects. Therefore there is a python object called `URL` in this template, and indeed it is generated by the expression:\n",
"\n",
"`% URL = \"http://localhost:8080/add/\" + new_uid`\n",
"\n",
"In order to understand what is happening here it is necessary to look at the function to which the URL /welcome is bound:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"@bt.route('/welcome', method = 'GET')\n",
"def welcome():\n",
"\t\"\"\"\n",
"\treturns\t: bt.template\n",
"\t\n",
"\tFunction bound to http://localhost:8080/welcome. Returns HMTL template. \n",
"\tFunction calls get_new_uid() to generate the next UID in the series. This value\n",
"\tis passed to the template. \n",
"\t\"\"\"\n",
"\tnew_uid = get_new_uid()\n",
"\treturn bt.template(welcome_html, new_uid = get_new_uid())\n",
"\n",
"\n",
"def get_new_uid():\n",
"\t\"\"\"\n",
"\tresturns\t: string\n",
"\t\n",
"\tFunction returns next UID in series\n",
"\t\"\"\"\n",
"\t#Create connction with database and get 'last' UID\n",
"\tconn = sqlite3.connect('factories.db')\n",
"\tc = conn.cursor()\n",
"\tc.execute(\"SELECT uid FROM factories ORDER BY uid DESC LIMIT 0, 1\")\n",
"\tlast_uid = int(c.fetchall()[0][0].replace('M', ''))\n",
"\tconn.close()\n",
"\t\n",
"\t#Convert result to integer, modify and reformat to UID type string\n",
"\tnew_uid = str(last_uid + 1)\n",
"\twhile len(new_uid) != 3:\n",
"\t\tnew_uid = '0' + new_uid\n",
"\tnew_uid = 'M' + new_uid\n",
"\treturn new_uid\t"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`welcome()` is the function to which the URL /welcome is bound. When the application starts and the URL http://localhost:8080/welcome is navigated to this is the function that will be called. The function returns a bottle template, the `welcome_html` template displayed above, and a single variable `new_uid` is passed to the template. \n",
"\n",
"The `new_uid` variable value is the next UID in the series as per the last uid in the database. This variable is calculated by calling the `get_new_id()` function which creates a connection to the database and retrieves the last (largest) uid, by ordering the uid column in descending order using the SQL syntax:\n",
"\n",
"> `\"\"SELECT uid FROM factories ORDER BY uid DESC LIMIT 0, 1\"` \n",
"\n",
"The value retrieved is then manipulated to an integer, the value increased by one, and then converted back to a string that conforms to the UID style ('M???' - where ? is a digit). So if the value retrieved from the database is M065, the `new_uid` value will be 'M066'. \n",
"\n",
"But why do this? Well remember that python expression in the `welcome_html` template:\n",
"\n",
"> `% URL = \"http://localhost:8080/add/\" + new_uid`\n",
"\n",
"The new_uid value is passed to the template, and this expression will then evaluate to `http://localhost:8080/add/M066`. This value is assigned to the python object `URL` and this python object is inserted in the `FORM` as the `ACTION` to undertake when the 'Add Record' button is pressed. \n",
"\n",
"I will say more about adding records below, but for now let's focus on the simpler case of retrieving records.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#UID Search Result\n",
"\n",
"On the welcome page if the user enters a UID value and presses the 'Get Records' button the application is directed to `http://localhost:8080/welcome/result`. This URL will link to one of three types of content:\n",
"\n",
"1. An error message if the entered UID was not in the correct format\n",
"2. An error message if the UID was in the correct format but does not exist in the database\n",
"3. The records relating to the UID when entered in correct format and the UID exists in the database\n",
"\n",
"We will use a different template for each type of content.\n",
"\n",
"Firstly, `Result1`, when the UID is not in the correct format:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result1 = \\\n",
"\t\"\"\"\n",
"\t<!DOCTYPE html>\n",
"\t<html>\n",
"\t<head>\n",
"\t<title>Bottle Micro-Web Test Application</title>\n",
"\t</head>\n",
"\t\t<body>\n",
"\t\t\t<font size=\"6\" color=\"red\">That was an invalid UID!</font>\n",
"\t\t\t<p> You entered <b> {{uid}} </b> </p>\n",
"\t\t\t<p> A valid UID has the form M001</p>\n",
"\t\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Back\">\n",
"\t\t\t</form>\n",
"\t\t<body>\n",
"\t<html>\n",
"\t\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"HTML(result1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"\t<!DOCTYPE html>\n",
"\t<html>\n",
"\t<head>\n",
"\t<title>Bottle Micro-Web Test Application</title>\n",
"\t</head>\n",
"\t\t<body>\n",
"\t\t\t<font size=\"6\" color=\"red\">That was an invalid UID!</font>\n",
"\t\t\t<p> You entered <b> {{uid}} </b> </p>\n",
"\t\t\t<p> A valid UID has the form M001</p>\n",
"\t\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Back\">\n",
"\t\t\t</form>\n",
"\t\t<body>\n",
"\t<html>\n",
"\t"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"<IPython.core.display.HTML at 0x317ac90>"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Secondly `Result2` where the UID does not exist in the database:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result2 = \\\n",
"\t\"\"\"\n",
"\t<!DOCTYPE html>\n",
"\t<html>\n",
"\t<head>\n",
"\t<title>Bottle Micro-Web Test Application</title>\n",
"\t</head>\n",
"\t\t<body>\n",
"\t\t\t<font size=\"6\" color=\"red\">The UID {{uid}} does not exist in the database</font>\n",
"\t\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Back\">\n",
"\t\t\t</form>\n",
"\t\t<body>\n",
"\t<html>\n",
"\t\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"HTML(result2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"\t<!DOCTYPE html>\n",
"\t<html>\n",
"\t<head>\n",
"\t<title>Bottle Micro-Web Test Application</title>\n",
"\t</head>\n",
"\t\t<body>\n",
"\t\t\t<font size=\"6\" color=\"red\">The UID {{uid}} does not exist in the database</font>\n",
"\t\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Back\">\n",
"\t\t\t</form>\n",
"\t\t<body>\n",
"\t<html>\n",
"\t"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"<IPython.core.display.HTML at 0x317afb0>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As both of these templates are pretty basic, and not too lengthy I include them in the .py file itself as objects, just like they are now objects in this notebook. That means that when returning these templates I write syntax like:\n",
"\n",
"> `bt.template(result1)`\n",
"\n",
"However, as templates get longer and more complex it is less mess in your .py file if you write them in a separate text editor and save them as `.tpl` files in the same directory as the .py file that contains the meat of the application (as well as the database). \n",
"\n",
"When templates are stored as .tpl files the syntax is ever so slightly different. For example if I have a template `record.tpl` file saved (which I do) then the syntax for rendering the template is:\n",
"\n",
"> `bt.template('record')`\n",
"\n",
"The difference is that when the object exists in the .py file it can be passed to the bt.tempalte engine without `''` marks. When the template is .tpl file the name of the file (minus the extension) is passed within `''` marks.\n",
"\n",
"However, it is not possible for me to display these .tpl files and their contents in IPython, therefore I will re-create exactly the contents of the .tpl templates as an object for display purposes only.\n",
"\n",
"The third type of content we want for the /welcome/result URL is a display of records successfully identified by the UID that the user input. The records will be displayed in table format. The contents of the record.tpl file as follows:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"record = \\\n",
"\"\"\"\n",
"% fact_name = record[1]\n",
"% fact_adress = record[2]\n",
"% fact_number = record[3]\n",
"% fact_contact = record[4]\n",
"<!DOCTYPE html>\n",
"<html>\n",
"<head>\n",
"<title>Bottle Micro-Web Test Application</title>\n",
"</head>\n",
"\t<body>\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h2>The Records for {{uid}} are as Follows:</h2>\n",
"\t\t<div/>\n",
"\t\t\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t<table border = \"3\">\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td width = 175 align = 'center'><b>Field</b></td>\n",
"\t\t\t\t\t<td align = 'center'><b>Value</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Name</td>\n",
"\t\t\t\t\t<td>{{fact_name}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Address</td>\n",
"\t\t\t\t\t<td>{{fact_adress}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Telephone Number</td>\n",
"\t\t\t\t\t<td>{{fact_number}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Contact Name</td>\n",
"\t\t\t\t\t<td>{{fact_contact}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t</table>\n",
"\t\t</div>\n",
"\t\t\n",
"\t\t\n",
"\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Start Over\">\n",
"\t\t</form>\t\t\n",
"\t<body>\n",
"<html>\n",
"\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"HTML(record)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"% fact_name = record[1]\n",
"% fact_adress = record[2]\n",
"% fact_number = record[3]\n",
"% fact_contact = record[4]\n",
"<!DOCTYPE html>\n",
"<html>\n",
"<head>\n",
"<title>Bottle Micro-Web Test Application</title>\n",
"</head>\n",
"\t<body>\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h2>The Records for {{uid}} are as Follows:</h2>\n",
"\t\t<div/>\n",
"\t\t\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t<table border = \"3\">\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td width = 175 align = 'center'><b>Field</b></td>\n",
"\t\t\t\t\t<td align = 'center'><b>Value</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Name</td>\n",
"\t\t\t\t\t<td>{{fact_name}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Address</td>\n",
"\t\t\t\t\t<td>{{fact_adress}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Telephone Number</td>\n",
"\t\t\t\t\t<td>{{fact_number}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Contact Name</td>\n",
"\t\t\t\t\t<td>{{fact_contact}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t</table>\n",
"\t\t</div>\n",
"\t\t\n",
"\t\t\n",
"\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Start Over\">\n",
"\t\t</form>\t\t\n",
"\t<body>\n",
"<html>\n"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": [
"<IPython.core.display.HTML at 0x3186030>"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the `result1` and `result2` template there is only one variable that needs to be passed to the tempalte: `uid`.\n",
"\n",
"In the `record` template two variables need to be passed: `uid` and `record`. \n",
"\n",
"Before looking in detail at the templates it will be useful to see the function to which the URL /welcome/result is bound:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"@bt.route('/welcome/result', method = 'POST')\n",
"def report_welcome():\n",
"\t\"\"\"\n",
"\treturns\t: function\n",
"\t\n",
"\tFunction bound to http://localhost:8080/welcome/result. \n",
"\tReturns check_user_input function with a value of UID taken from FORM \n",
"\ton /welcome HTML page.\n",
"\t\"\"\"\n",
"\tuid = bt.request.forms.get('UID')\n",
"\treturn check_user_input(uid)\n",
"\n",
"\n",
"def check_user_input(uid):\n",
"\t\"\"\"\n",
"\tuid \t: string\n",
"\treturns\t: bt.template\n",
"\t\n",
"\tFunction checks validity of form of the `uid` argument or the presence of the \n",
"\tuid in the 'factories' database if the form is correct and returns the \n",
"\trelevant template.\n",
"\t\"\"\"\n",
"\t#Check UID matches UID format (e.g. M000)\n",
"\tuid_pattern = re.compile(\"[Mm]\\d\\d\\d\")\n",
"\tif not uid_pattern.match(uid):\n",
" \n",
"\t\t#UID not in correct format\n",
"\t\treturn bt.template(result1, uid = uid)\n",
"\n",
"\t#Check if UID in Database\n",
"\tuid = uid.upper()\n",
"\tconn = sqlite3.connect('factories.db')\n",
"\tc = conn.cursor()\n",
"\tresult = tuple(c.execute(\"SELECT uid FROM factories WHERE uid = ?\", (uid,)))\n",
"\tif not result:\n",
" \n",
"\t\t#UID not in database\n",
"\t\treturn bt.template(result2, uid = uid)\n",
"\telse:\n",
" \n",
" #UID in database\n",
"\t\tc.execute(\"SELECT * FROM factories WHERE uid = ?\", (uid,))\n",
"\t\trecord = c.fetchone()\n",
"\t\tconn.close()\n",
"\t\treturn bt.template(\"record\", record = record, uid = uid)\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The function to which the URL welcome/result is bound (`report_welcome()`) is very simple and serves only one purpose and that is to retrieve the value of the UID entered by the user in the `INPUT` box called \"UID\" in the `FORM` on the /welcome page. \n",
"\n",
"If you look again at the `welcome_html` template you will see that within the `FORM` tag is the following:\n",
"\n",
"> `<INPUT type=\"text\" name=\"UID\">`\n",
"\n",
"The `INPUT` tag creates the text box, and by assigning it a name, the value entered in that box can be retrieved using the syntax seen in the `report_welcome()` function:\n",
"\n",
"> ` bt.request.forms.get('UID')`\n",
"\n",
"where the name of the element is passed as argument to the `bt.request.forms.get()` method. \n",
"\n",
"So all this function does is get the user value, and then return the `check_user_input()` function with the retrieved `UID` value as argument. \n",
"\n",
"The `check_user_input()` function is longer, but there is nothing particularly complex about it. Its purpose is to take the uid input by the user, and use it to determine which template to return. Recall that our three templates are for:\n",
"\n",
"1. Displaying an error message if the entered UID was not in the correct format\n",
"2. Displaying an error message if the UID was in the correct format but does not exist in the database\n",
"3. Displaying the records relating to the UID when entered in correct format and the UID exists in the database.\n",
"\n",
"The function firstly uses a simple regular expression technique to evaluate if the uid is of the correct format. If it is not then the `result1` template is returned, and the variable `uid` is passed to the template, so that it can be used in the curly braces.\n",
"\n",
"If the UID is of the correct format a connection to the database is made, and a SELECT request is made and the result of this is bound to a variable called `result`. If there were not records then `result` will be null. If this is the case then the function returns `result2` template with the variable `uid` passed to the template, so that it can be used in the curly braces.\n",
"\n",
"Lastly if the `result` is not null, meaning that the uid does exist in the database, then the result of fetching that query is bound to the variable `record` and the connection closed. Now the function returns the `record` template with the `uid`, and the `record` being passed to the template. \n",
"\n",
"Once received by the template, the `record` variable is unpacked to four python objects in the template, by writing python expressions (preceded as ever with the `%` symbol):\n",
"\n",
">% fact_name = record[1]<br/>\n",
"% fact_adress = record[2]<br/>\n",
"% fact_number = record[3]<br/>\n",
"% fact_contact = record[4]<br/>\n",
"\n",
"The variables are then used in the template inside curly braces, in order to populate the results table.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Add A Record\n",
"\n",
"Things are about to get marginally more complex as we now deal with how the user can add a record. If the user presses the 'Add Record' button the application is directed to a URL /add/`<uid>`.\n",
"\n",
"The UID inside the pointy braces means that this is a dynamic route. In other words the function bound to this URL will be called any time a URL is navigated to that matches the pattern /add/string. The dynamic UID part of the path will accept any characters up to the next forward slash. \n",
"\n",
"That means that the function bound to this URL will be called in all of the following cases:\n",
"\n",
"+ `http://localhost:8080/add/M057`\n",
"+ `http://localhost:8080/add/M000000`\n",
"+ `http://localhost:8080/add/RORY`\n",
" \n",
"Normally we would not want the user to be able to specify any old kind of dynamic route, and we would therefore apply a filter to ensure that the dynamic part passed is in accordance with some pre-defined rules. This is of course hugely important in this case as we want to make sure that the user is adding records by using UIDs that conform to the format of the UIDs in the databse: e.g. M001.\n",
"\n",
"However, we do not in fact have to check the dynamic part of the URL as we will retain complete control over it as the UID to be used is determined not by the user, but by the `get_new_uid()` function that is called as part of the routine associated with the /welcome URL. The result of this function is then passed as the dynamic part of the URL when the 'Add Record' button is pressed. This is achieved as you may recall by the line of python code in the `welcome_html` template:\n",
"\n",
"> `% URL = \"http://localhost:8080/add/\" + new_uid`\n",
"\n",
"The URL created by this expression is guaranteed to have a dynamic portion of the URL in keeping with the UID format, as the variable `new_uid` is generated by the `get_new_uid()` function and passed to the `welcome_html` template which then creates an appropriate URL and assigns it to the `ACTION` tag within the `FORM` tag that contain the 'Add Records' button. \n",
"\n",
"This method of passing the `UID` as part of a dynamic route is incredibly useful as the dynamic part of the URL is automatically passed as an argument to the function to which it is bound. This means that the UID that will be added can be passed from page to page and its value maintained within the application *without* having to resort to the use of global variables within the functions. \n",
"\n",
"This may all seem rather abstract so let's look at the code. Firstly the content of the /add/`<uid>` URL is saved in a .tpl file called `add_record.tpl`. For display purposes only here is the template:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"add_record = \\\n",
"\"\"\"\n",
"% URL = \"http://localhost:8080/add/\" + uid + \"/validate\"\n",
"\n",
"<!DOCTYPE html>\n",
"<html>\n",
"<head>\n",
"<title>Bottle Micro-Web Test Application</title>\n",
"</head>\n",
"\t<body>\n",
"\t\t<div style=\"text-align:center;\">\n",
"\t\t\t\t<h1>Add New Factory to the Factory Database</h1>\n",
"\t\t\t\t<h2> Record will be added with UID: {{uid}} </h2>\n",
"\t\t<div/>\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h3>Please input all fields in the table below:</h3>\n",
"\t\t<div/>\n",
"\t\t\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t<form method = \"post\" action = {{URL}}>\n",
"\t\t\t<table border = \"3\">\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td width = 175 align = 'center'><b>Field</b></td>\n",
"\t\t\t\t\t<td align = 'center'><b>Input</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Name</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_name\" REQUIRED><br/>\n",
"\t\t\t\t\t</td>\n",
"\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Address</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_address\" REQUIRED><br/>\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Telephone Number</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_num\" REQUIRED><br/>\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Contact Name</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"contact_name\" REQUIRED><br/>\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t</table>\n",
"\t\t<input type = \"submit\" value = \"Validate Inputs\">\n",
"\t\t</form>\n",
"\t\t</div>\t\n",
"\t<body>\n",
"<html>\n",
"\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sadly I cannot display this template, as the IPython rendering engine goes mental when I convert these notebooks to HTML. I suggest you download the .ipynb files from the dropbox to get a better idea. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In terms of the html code there is nothing here that we have not seen already. However, there are couple of important points to note about using tables to structure a form in this manner. Firstly, the `FORM` tag must be called before the `TABLE` tag. That is the rows and columns of the table are part of one form, rather than their being one form per row/column of the table,. \n",
"\n",
"Secondly, notice the following syntax:\n",
"\n",
"> `<input size = 100 type=\"text\" name=\"fact_num\" REQUIRED><br/>`\n",
"\n",
"The `REQUIRED` option means that the user cannot submit the form until that field has some values. This is very handy if you do not want users to be able to leave any fields blank (as we do not in this case). \n",
"\n",
"Lastly note that the uid passed to the template is again used to create the next URL /add/`<uid>`/validate in the following line of python code:\n",
"\n",
">` % URL = \"http://localhost:8080/add/\" + uid + \"/validate\"`\n",
"\n",
"which is then passed to the `ACTION` tag within the `FORM` tag, which is executed when the user presses the 'Validate Inputs' button.\n",
"\n",
"The function to which this is bound looks as follows:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"@bt.route('/add/<uid>', method = 'GET')\n",
"def add_record(uid):\n",
"\t\"\"\"\n",
"\tuid\t\t: string (passed automatically from the dynamic portion of the route)\n",
"\treturns\t: bt.template\n",
"\t\n",
"\tFunction bound to http://localhost:8080/add/<uid>\n",
"\tFunction returns the 'add_record' tempalte and passes it the value of uid\n",
"\twhich is passed to the function automatically by the dynamic part of the URL\n",
"\tto which this function is bound. \n",
"\t\"\"\"\n",
"\treturn bt.template('add_record', uid = uid)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This could not be simpler. Note that the dynamic part of the URL (`<uid>`) is passed automatically to the function, and that uid is then passed to the template that the function returns. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Validating the Inputs\n",
"\n",
"Obviously we don't just want the user to be able to enter any old garbage. By setting REQUIRED we can prevent them from entering nothing. However this would not stop the user just from entering a white space, as whitespace is not technically nothing. Therefore we want to validate the fields in the `add_record` template according to the following rules:\n",
"\n",
"| | |\n",
"|---|---|\n",
"|**Field** | **Rule** |\n",
"| Factory Name | Only alphanumeric characters, not nothing\n",
"| Factory Address | Only alphanumeric characters and commas, not nothing\n",
"| Factory Number | Only digits, not nothing\n",
"| Contact Name | Only alphanumeric characters, not nothing\n",
"\n",
"We do not need to be concerned about whitespace or case, as we can strip out multiple whitespace and convert everything to upper case when we store the record. \n",
"\n",
"Rather than looking first at the template, on this occasion we will look directly at the functions. The strategy is write a function that will collect the values entered by the user on the `FORM` at /add/`<`uid`>`, create a dictionary of those values, and then pass that to a function that validates the inputs and creates a dictionary of validation messages. Both of these dictionaries will then be passed to the template on which the validation occurs.\n",
"\n",
"When the user presses 'Validate Inputs' button she is directed to /add/`<`uid`>`/validate, and this is the route to which the functions are bound. \n",
"\n",
"The functions are as follows:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"@bt.route('/add/<uid>/validate', method = 'post')\t\n",
"def get_new_record(uid):\n",
"\t\"\"\"\n",
" uid\t\t: string (passed automatically from the dynamic portion of the route)\n",
"\treturns\t: function\n",
"\t\n",
"\tFunction bound to /add/<uid>/validate. \n",
"\tFunction collects values from FORM on /add/<uid> and creates a dictionary\n",
"\tof values which is then passed as argument to the return check_new_record()\n",
"\tfunction call.\n",
"\t\"\"\"\n",
"\t#Get values from FORM\n",
"\tfact_name = bt.request.forms.get(\"fact_name\")\n",
"\tfact_address = bt.request.forms.get(\"fact_address\")\n",
"\tfact_num = bt.request.forms.get(\"fact_num\")\n",
"\tcontact_name = bt.request.forms.get(\"contact_name\")\n",
" \n",
"\t#Put values in dictionary\n",
"\tinput_dict = {'uid'\t\t\t\t: uid,\n",
"\t\t\t\t 'fact_name' \t\t: fact_name,\n",
"\t\t\t\t 'fact_address'\t: fact_address,\n",
"\t\t\t\t 'fact_num'\t\t: fact_num,\n",
"\t\t\t\t 'contact_name'\t: contact_name}\n",
"\treturn check_new_record(input_dict)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def check_new_record(input_dict):\n",
"\t\"\"\"\n",
"\tinput_dict\t: dict\n",
"\treturns\t\t: bt.template\n",
"\t\n",
"\tFunction validates the values of the input dict and creates a validation dict of\n",
"\tmessages that can be displayed to the user on the template that this function\n",
"\treturns.\n",
"\t\"\"\"\n",
"\t#Create validation dictionary\n",
"\tvalidation_dict = {'fact_name' \t\t: None,\n",
" 'fact_address'\t: None,\n",
"\t\t\t\t\t 'fact_num'\t\t: None,\n",
" 'contact_name'\t: None}\n",
"\t\t\t\t\t \n",
"\tuid = input_dict['uid']\n",
"\t\n",
"\t#Check factory name input\n",
"\tif not input_dict['fact_name'] or input_dict['fact_name'].strip() == \"\":\n",
"\t\tvalidation_dict['fact_name'] = \"Please do not leave factory name blank\"\n",
"\telif not input_dict['fact_name'].replace(' ', '').isalnum():\n",
"\t\tvalidation_dict['fact_name'] = \"Please only use letters and numbers, no other characters\"\n",
"\t\t\n",
"\t#Check factory address input\n",
"\tif not input_dict['fact_address'] or input_dict['fact_address'].strip() == \"\":\n",
"\t\tvalidation_dict['fact_address'] = \"Please do not leave factory address blank\"\n",
"\telif not input_dict['fact_address'].replace(' ', '').replace(',', '').isalnum():\n",
"\t\tvalidation_dict['fact_address'] = \"Please only use letters and numbers, no other characters\"\n",
"\t\n",
"\t#Check factory number input\n",
"\tif not input_dict['fact_num'] or input_dict['fact_num'].strip() == \"\":\n",
"\t\tvalidation_dict['fact_num'] = \"Please do not leave factory telephone number blank\"\n",
"\telif not input_dict['fact_num'].replace(' ', '').isdigit():\n",
"\t\tvalidation_dict['fact_num'] = \"Please only use numbers, no other characters\"\n",
"\t\n",
"\t#Check contact name input\n",
"\tif not input_dict['contact_name'] or input_dict['contact_name'].strip() == \"\":\n",
"\t\tvalidation_dict['contact_name'] = \"Please do not leave contact name blank\"\n",
"\telif not input_dict['contact_name'].replace(' ', '').isalnum():\n",
"\t\tvalidation_dict['contact_name'] = \"Please only use letters and numbers, no other characters\"\n",
"\t\n",
"\t#Modify validation dictionary if value is still None after the validation routine\n",
"\tfor key in validation_dict:\n",
"\t\tif not validation_dict[key]:\n",
"\t\t\tvalidation_dict[key] = 'OK'\n",
"\t\t\t\n",
"\treturn bt.template('validate_record', input_dict = input_dict, validation_dict = validation_dict, uid = uid)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `get_new_record()` should by now be familiar. It is simply harvesting values from the form. As we are using a dynamic route as previously the dynamic part of the route is automatically passed as argument to the function. \n",
"\n",
"The `check_new_record()` is long and unwieldy, but it does nothing beyond input validation using very standard python string techniques. The template that it returns is passed both the `input_dict` and the `validation_dict`. \n",
"\n",
"The template that this function returns, the `validate_record` template is somewhat more complex, but only in that it involves using more python inside the template. Of course this is saved as a .tpl file, however, for display purposes I include it below:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"validate_record = \\\n",
"\"\"\"\n",
"% fact_name = input_dict['fact_name']\n",
"% fact_address = input_dict['fact_address']\n",
"% fact_num\t= input_dict['fact_num']\n",
"% contact_name = input_dict['contact_name']\n",
"% valid_fact_name = validation_dict['fact_name']\n",
"% valid_fact_address = validation_dict['fact_address']\n",
"% valid_fact_num\t= validation_dict['fact_num']\n",
"% valid_contact_name = validation_dict['contact_name']\n",
"\n",
"% if all([validation_dict[key] == 'OK' for key in validation_dict]):\n",
"\t%URL = \"http://localhost:8080/add/\" + uid + \"/validate/commit\"\n",
"%else:\n",
"\t%URL = \"http://localhost:8080/add/\" + uid + \"/validate\"\n",
"%end\n",
"\n",
"<!DOCTYPE html>\n",
"<html>\n",
"<head>\n",
"<title>Bottle Micro-Web Test Application</title>\n",
"</head>\n",
"<body>\n",
"\t<div style=\"text-align:center;\">\n",
"\t\t<h1>Review New Record Details</h1>\n",
"\t\t<h2> Record will be added with UID: {{uid}} </h2>\n",
"\t<div/>\n",
"\t<div style=\"text-align:left;\">\n",
"\t\t<h3>Please review the submitted inputs, and make corrections as indicated:</h3>\n",
"\t\t<h3>If you would like to make changes to verified fields, hit the browser 'Back' button.</h3>\n",
"\t<div/>\n",
"\t\t\n",
"\t<div style=\"text-align:left;\">\n",
"\t\t<form method = \"post\" action = {{URL}}>\n",
"\t\t\t<table border = \"3\">\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td width = 175 align = 'center'><b>Field</b></td>\n",
"\t\t\t\t\t<td align = 'center'><b>Input</td>\n",
"\t\t\t\t\t<td align = 'center'><b>Validation</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Name</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_fact_name == 'OK':\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_name\" value = \"{{fact_name}}\" readonly>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_name\" value = \"{{fact_name}}\" required>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_fact_name == 'OK':\n",
"\t\t\t\t\t\t\t<p> <b>OK</b> </p>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<font color = 'red' ><p> {{valid_fact_name}} </p></font>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t\t<td>Factory Address</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_fact_address == 'OK':\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_address\" value = \"{{fact_address}}\" readonly>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_address\" value = \"{{fact_address}}\" required>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_fact_address == 'OK':\n",
"\t\t\t\t\t\t\t<p> <b>OK</b> </p>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<font color = 'red' ><p> {{valid_fact_address}} </p></font>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Telephone Number</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_fact_num == 'OK':\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_num\" value = \"{{fact_num}}\" readonly>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"fact_num\" value = \"{{fact_num}}\" required>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_fact_num == 'OK':\n",
"\t\t\t\t\t\t\t<p> <b>OK</b> </p>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<font color = 'red' ><p> {{valid_fact_num}} </p></font>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Contact Name</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_contact_name == 'OK':\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"contact_name\" value = \"{{contact_name}}\" readonly>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<input size = 100 type=\"text\" name=\"contact_name\" value = \"{{contact_name}}\" required>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t\t<td>\n",
"\t\t\t\t\t\t%if valid_contact_name == 'OK':\n",
"\t\t\t\t\t\t\t<p> <b>OK</b> </p>\n",
"\t\t\t\t\t\t%else:\n",
"\t\t\t\t\t\t\t<font color = 'red' ><p> {{valid_contact_name}} </p></font>\n",
"\t\t\t\t\t\t%end\n",
"\t\t\t\t\t</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t</table>\n",
"\t\t% if all([validation_dict[key] == 'OK' for key in validation_dict]):\n",
"\t\t\t<input type = \"submit\" value = \"Commit to Record\" onclick=\"return confirm('Are you sure you wish to commit the record?')\">\n",
"\t\t%else:\n",
"\t\t\t<input type = \"submit\" value = \"Re-Validate\">\n",
"\t\t%end\n",
"\t\t</form>\n",
"\t</div>\n",
"<body>\n",
"<html>\n",
"\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I am not going to display an HTML rendering as it is so chaotic as to be more harmful than instructive. \n",
"\n",
"Let's look at some of the features of the template. \n",
"\n",
"Firstly, let's think about the general strategy of the tempalte. The key strategy is to prompt the user to modify inputs until all values of the `validation_dict` are equal to 'OK'.\n",
"\n",
"At opposite ends of the template we have the following syntax:\n",
"\n",
"```html\n",
"% if all([validation_dict[key] == 'OK' for key in validation_dict]):\n",
"\t%URL = \"http://localhost:8080/add/\" + uid + \"/validate/commit\"\n",
"%else:\n",
"\t%URL = \"http://localhost:8080/add/\" + uid + \"/validate\"\n",
"%end\n",
"```\n",
"\n",
"and\n",
"\n",
"```html\n",
"% if all([validation_dict[key] == 'OK' for key in validation_dict]):\n",
" <input type = \"submit\" value = \"Commit to Record\" \n",
" onclick=\"return confirm('Are you sure you wish to commit the record?')\" >\n",
"%else:\n",
"\t<input type = \"submit\" value = \"Re-Validate\">\n",
"```\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is really the key part of the strategy. If all values of the `validation_dict` are 'OK' as per the first syntax, the URL will direct the application to:\n",
"\n",
"> /add/`<`uid`>`/validate/commit\n",
"\n",
"If one or more of the values is not 'OK' in the `validation_dict` then the URL will simply be. \n",
"\n",
"> /add/`<`uid`>`/validate\n",
"\n",
"And the URL is bound to the button at the end of the form. That means that if all the inputs are OK, then the user may submit the inputs to the final page of the application. If however, some of the inputs need editing then the when pressing the 'Re-Validate' button, the `get_new_record()` function is called as it is bound to add/`<`uid`>`/validate, and this in turn re-validates the inputs and returns the template.\n",
"\n",
"The user can keep on editing until all the inputs are verified. \n",
"\n",
"Notice that using python syntax we can completely control what is on the page. If all inputs are 'OK' then as per the snippet highlighted above, the button at the bottom of the form will say 'Commit to Record' whereas if the inputs are not all 'OK' it will say 'Re-Validate'. Notice here the `ONCLICK` option. This generates a pop up when the user hits \"Commit to Record\" that asks them to confirm that they wish to proceed. \n",
"\n",
"Within the TABLE structure of the template notice the following structures:\n",
"\n",
"```html\n",
"%if valid_contact_name == 'OK':\n",
"\t<input size = 100 type=\"text\" name=\"contact_name\" value = \"{{contact_name}}\" readonly>\n",
"%else:\n",
"\t<input size = 100 type=\"text\" name=\"contact_name\" value = \"{{contact_name}}\" required>\n",
"%end\n",
"```\n",
"\n",
"If a particular input has been confirmed as 'OK' then the value of that input is put in a text `INPUT` tag, but it is *read only*, that is it cannot be edited without the user hitting the browser back button. If the input is not 'OK' then the `INPUT` tag includes the text originally inserted, but it is editable. \n",
"\n",
"Lastly and similarly, this is how the Validation messages are displayed to the user within the table:\n",
"\n",
"```html\n",
"%if valid_contact_name == 'OK':\n",
"\t<p> <b>OK</b> </p>\n",
"%else:\n",
"\t<font color = 'red' ><p> {{valid_contact_name}} </p></font>\n",
"%end\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Commit to Record\n",
"The process of committing the records to the database once verified add nothing new in terms of techniques. As such the functions and template are shown here for the sake of completeness, but they are not discussed further. Note that the template in my code is not a python object but a .tpl file. It is objectified here for display purposes only."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"@bt.route('/add/<uid>/validate/commit', method = 'post')\n",
"def insert_new_record(uid):\n",
"\t\"\"\"\n",
"\tuid\t\t: string (passed automatically from the dynamic portion of the route)\n",
"\treturns\t: bt.template\n",
"\t\n",
"\tFunction bound to /add/<uid>/validate/commit.\n",
"\tFunction gets values from FORM on /add/<uid>/validate and adds the values to\n",
"\tthe database. The valus are then retrieved and dispalyed in the template\n",
"\tthat is returned.\n",
"\t\"\"\"\n",
"\t\n",
"\t#Create Input Tuple\n",
"\tfact_name = \" \".join(bt.request.forms.get(\"fact_name\").strip().upper().split())\n",
"\tfact_address = \" \".join(bt.request.forms.get(\"fact_address\").strip().upper().split())\n",
"\tfact_num = \" \".join(bt.request.forms.get(\"fact_num\").strip().split())\n",
"\tcontact_name = \" \".join(bt.request.forms.get(\"contact_name\").strip().upper().split())\n",
"\tinput_tuple = (uid, fact_name, fact_address, fact_num, contact_name)\n",
"\t\n",
"\t#Add record to DB\n",
"\tconn = sqlite3.connect('factories.db')\n",
"\tc = conn.cursor()\n",
"\tc.execute(\"INSERT INTO factories VALUES (?,?,?,?,?)\", input_tuple)\n",
"\tconn.commit()\n",
"\tc.execute(\"SELECT * FROM factories WHERE uid = ?\", (uid,))\n",
"\trecord = c.fetchone()\n",
"\tconn.close()\n",
"\treturn bt.template(\"new_record_display\", record = record, uid = uid)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_record_display = \\\n",
"\"\"\"\n",
"% fact_name = record[1]\n",
"% fact_adress = record[2]\n",
"% fact_number = record[3]\n",
"% fact_contact = record[4]\n",
"\n",
"<!DOCTYPE html>\n",
"<html>\n",
"<head>\n",
"<title>Bottle Micro-Web Test Application</title>\n",
"</head>\n",
"\t<body>\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t\t<h1>You Have Successfully Created a New Record</h1> \n",
"\t\t\t\t<h2>The Records for {{uid}} are as Follows:</h2>\n",
"\t\t<div/>\n",
"\t\t\n",
"\t\t<div style=\"text-align:left;\">\n",
"\t\t\t<table border = \"3\">\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td width = 175 align = 'center'><b>Field</b></td>\n",
"\t\t\t\t\t<td align = 'center'><b>Value</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Name</td>\n",
"\t\t\t\t\t<td>{{fact_name}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Factory Address</td>\n",
"\t\t\t\t\t<td>{{fact_adress}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Telephone Number</td>\n",
"\t\t\t\t\t<td>{{fact_number}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t\t<tr>\n",
"\t\t\t\t\t<td>Contact Name</td>\n",
"\t\t\t\t\t<td>{{fact_contact}}</td>\n",
"\t\t\t\t</tr>\n",
"\t\t\t</table>\n",
"\t\t</div>\n",
"\t\t\n",
"\t\t\n",
"\t\t<form action=\"http://localhost:8080/welcome\">\n",
"\t\t\t<input type=\"submit\" value=\"Start Over\">\n",
"\t\t</form>\t\t\n",
"\t<body>\n",
"<html>\n",
"\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This last snippet, when run will automatically open a broswer at the /welcome page, and you can navigate through the application from there. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def main():\t\t\n",
"\twb.open('http://localhost:8080/welcome')\n",
"\tbt.run(host = 'localhost', port = 8080, debug = True)\n",
"\t\n",
"if __name__ == \"__main__\":\n",
"\n",
" main()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"Bottle v0.11.6 server starting up (using WSGIRefServer())...\n",
"Listening on http://localhost:8080/\n",
"Hit Ctrl-C to quit.\n",
"\n"
]
}
],
"prompt_number": 20
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment