def do_GET(self):
        try:
            if self.path.endswith("/hello"):
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()

                output = ""
                output += "<html><body>"
                output += "<h1>Hello!</h1>"
                output += '''<form method='POST' enctype='multipart/form-data' action='/hello'><h2>What would you like me to say?</h2><input name="message" type="text" ><input type="submit" value="Submit"> </form>'''
                output += "</body></html>"
                self.wfile.write(output)
                print output
                return
            if self.path.endswith("/hola"):
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()

                output = ""
                output += "<html><body>"
                output += "<h1>&#161 Hola !</h1>"
                output += hello_form_tmpl()
                output += "</body></html>"
                self.wfile.write(output)
                print output
                return
            if self.path.endswith("/restaurants"):
                session = db_session()
                restaurants = ds.fetch_restaurants(session)

                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()

                output = ""
                output += ''' <a href='/restaurants/new'> New Restaurant</a> </br> </br>'''

                for restaurant in restaurants:
                    output += restaurant.name + " <a href='restaurant/" + str(
                        restaurant.id) + "/edit'>edit</a>" + " <a href='restaurant/" + str(
                        restaurant.id) + "/delete'>delete</a>" + "</br>"

                self.wfile.write(output)
                return
            if self.path.endswith("/restaurants/new"):
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()

                output = ""
                output += "<html><body>"
                output += restaurant_form_tmpl()
                output += "</body></html>"
                self.wfile.write(output)
                return
            if self.path.endswith("/delete"):
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()

                session = db_session()

                path_c = self.path.split('/')
                r_id = path_c[2]
                restaurant = ds.fetch_restaurant(session, r_id)

                output = ""
                output += "<html><body>"

                if restaurant:
                    tmpl = restaurant_delete_tmpl()
                    output += tmpl.safe_substitute(name=restaurant.name, ID=str(restaurant.id))
                    output += self.path + " " + type(self.path).__name__ + " " + str(path_c[2]) + " " + str(path_c)
                else:
                    pass

                output += "</body></html>"
                self.wfile.write(output)
                return

            if edit_regex.search(self.path):
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()

                session = db_session()

                path_c = self.path.split('/')
                r_id = path_c[2]
                restaurant = ds.fetch_restaurant(session, r_id)

                output = ""
                output += "<html><body>"

                if restaurant:
                    tmpl = restaurant_edit_tmpl()
                    output += tmpl.safe_substitute(name=restaurant.name, ID=str(restaurant.id))

                output += "</body></html>"
                self.wfile.write(output)
                return

            else:
                output = ""
                match = edit_regex.search(self.path)
                print str(match)
                raise IOError

        except IOError:
            self.send_error(404, "File Not Found %s" % self.path)
    def do_POST(self):
        # noinspection PyBroadException
        try:
            if self.path.endswith("/hello"):
                self.send_response(301)
                self.end_headers()
                ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
                if ctype == 'multipart/form-data':
                    fields = cgi.parse_multipart(self.rfile, pdict)
                    message_content = fields.get('message')

                output = ""
                output += "<html><body>"
                output += " <h2> Okay, how about this: </h2>"
                output += "<h1> %s </h1>" % message_content[0]
                output += hello_form_tmpl()
                output += "</body></html>"
                self.wfile.write(output)
                print output

            if self.path.endswith("/restaurants/new"):

                session = db_session()

                ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
                if ctype == 'multipart/form-data':
                    fields = cgi.parse_multipart(self.rfile, pdict)
                    name = fields.get('name')
                    print type(name)
                    ds.create_restaurant(session, name[0])

                self.send_response(301)
                self.send_header('Content-type', 'text/html')
                self.send_header('Location', '/restaurants')
                self.end_headers()

                return

            if delete_regex.search(self.path):

                session = db_session()

                ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
                if ctype == 'multipart/form-data':
                    fields = cgi.parse_multipart(self.rfile, pdict)
                    message_content = fields.get('message')

                    restaurant = ds.fetch_restaurant(session, int(message_content[0]))

                    if restaurant:
                        ds.delete_restaurant(session, restaurant)

                self.send_response(301)
                self.send_header('Content-type', 'text/html')
                self.send_header('Location', '/restaurants')
                self.end_headers()

                return

            if edit_regex.search(self.path):

                session = db_session()

                ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
                if ctype == 'multipart/form-data':
                    fields = cgi.parse_multipart(self.rfile, pdict)
                    name_content = fields.get('name')
                    id_content = fields.get('ID')

                    restaurant = ds.update_restaurant(session, id_content[0], name_content[0])

                self.send_response(301)
                self.send_header('Content-type', 'text/html')
                self.send_header('Location', '/restaurants')
                self.end_headers()

                return

        except:
            pass