def all_restaurants_markup(): """Convenience function to return HTML output of all Restaurants.""" global SESSION if not SESSION: SESSION = establish_session() output = "" all_restaurants = SESSION.query(Restaurant).all() for restaurant in all_restaurants: output += """<div class='restaurant columns medium-12'> <h1>{0}</h1> <a href='/restaurants/{1}/edit' title='Edit' class='button round'>Edit</a> <a href='/restaurants/{1}/delete' title='Delete' class='button round'>Delete</a> </div>""".format(restaurant.name, restaurant.restaurant_id) return output
def do_POST(self): """Method to handle POST requests.""" global SESSION if not SESSION: SESSION = establish_session() try: if self.path.endswith("/restaurants/new"): ctype, pdict = cgi.parse_header(self.headers.getheader("content-type")) if ctype == "multipart/form-data": form_fields = cgi.parse_multipart(self.rfile, pdict) new_restaurant = form_fields.get("new_restaurant")[0] restaurant = get_or_create(SESSION, Restaurant, name=new_restaurant) base_post_response(self, "Restaurants",\ all_restaurants_markup(), "/restaurants") if re.search(RE_PATTERN_EDIT, self.path) is not None: ctype, pdict = cgi.parse_header(self.headers.getheader("content-type")) if ctype == "multipart/form-data": form_fields = cgi.parse_multipart(self.rfile, pdict) r_name = form_fields.get("restaurant_name")[0] r_id = form_fields.get("restaurant_id")[0] restaurant = SESSION.query(Restaurant)\ .filter_by(restaurant_id='{}'.format(r_id)).first() if restaurant: restaurant.name = r_name SESSION.add(restaurant) SESSION.commit() base_post_response(self, "Restaurants",\ all_restaurants_markup(), "/restaurants") if re.search(RE_PATTERN_DELETE, self.path) is not None: ctype, pdict = cgi.parse_header(self.headers.getheader("content-type")) if ctype == "multipart/form-data": form_fields = cgi.parse_multipart(self.rfile, pdict) r_id = form_fields.get("restaurant_id")[0] restaurant = SESSION.query(Restaurant)\ .filter_by(restaurant_id='{}'.format(r_id)).first() if restaurant: SESSION.delete(restaurant) SESSION.commit() base_post_response(self, "Restaurants",\ all_restaurants_markup(), "/restaurants") except IOError: self.send_error(404, "File Not Found: {}".format(self.path))
def do_GET(self): """Method to handle GET requests.""" global SESSION if not SESSION: SESSION = establish_session() try: if self.path.endswith("/"): output = """<a href=\"restaurants\" title=\"Restaurants\"> View Restaurants</a>""" base_response(self, "Welcome", output) if self.path.endswith("/restaurants"): output = """<div class='columns medium-12'> </div> <div class='columns medium-12'> <a href='/restaurants/new' class='button round' title='Add Restaurant'>Add Restaurant +</a> </div>""" output += all_restaurants_markup() base_response(self, "Restaurants", output) return if self.path.endswith("/restaurants/new"): output = """<h1>Add a New Restaurant</h1> <form method='POST' enctype='{}' action='/restaurants/new'> <input type='text' name='new_restaurant' placeholder='Restaurant Name'/> <input type='submit' class='button round' name='submit' value='Submit'/> </form>""".format(MULTI_FORM_DATA) base_response(self, "Add New Restaurant", output) return if re.search(RE_PATTERN_EDIT, self.path) is not None: r_id = self.path.split('/')[2] restaurant = SESSION.query(Restaurant)\ .filter_by(restaurant_id='{}'.format(r_id)).first() output = """<div class='restaurant columns medium-12'>""" if restaurant: output += """<h1>Editing {0}</h1> <form method='POST' enctype='{1}' action='/restaurants/{2}/edit'> <input type='hidden' name='restaurant_id' value='{2}'/> <input type='text' name='restaurant_name' placeholder='Restaurant Name' value='{0}'/> <input type='submit' class='button round' name='submit' value='Rename'/> <a href='/restaurants' class='button round secondary' title='Cancel'>Cancel</a> </form> """.format(restaurant.name, MULTI_FORM_DATA, r_id) else: output += """<h1>Restaurant not found.</h1> <p> <a href='/restaurants' class='button round' title='Back to Restaurants List'> Back to Restaurants List</a> </p>""" output += """</div>""" base_response(self, "Edit Restaurant", output) return if re.search(RE_PATTERN_DELETE, self.path) is not None: r_id = self.path.split('/')[2] restaurant = SESSION.query(Restaurant)\ .filter_by(restaurant_id='{}'.format(r_id)).first() output = """<div class='restaurant columns medium-12'>""" if restaurant: output += """<h1>Are you sure you want to delete {0}?</h1> <form method='POST' enctype='{1}' action='/restaurants/{2}/delete'> <input type='hidden' name='restaurant_id' value='{2}'/> <input type='submit' class='button round' name='submit' value='Delete'/> <a href='/restaurants' class='button round secondary' title='Cancel'>Cancel</a> </form> """.format(restaurant.name, MULTI_FORM_DATA, r_id) else: output += """<h1>Restaurant not found.</h1> <p> <a href='/restaurants' class='button round' title='Back to Restaurants List'> Back to Restaurants List</a> </p>""" output += """</div>""" base_response(self, "Delete Restaurant", output) return except IOError: self.send_error(404, "File Not Found: {}".format(self.path))