def post(self): user = users.get_current_user() if not user: self.error(401) return # Load the json from the request try: new_project = json.loads(self.request.body) # If we get a malformed json send 400 - Bad Request and stop execution except ValueError: self.error(400) return # Try to parse the request json to useful project data # Stop execution and server error 400 if anything goes wrong try: # First check that we didn't get any empty values if new_project['title'] is None: raise ValueError('No title') if new_project['description'] is None: raise ValueError('No description') if new_project['location'] is None: raise ValueError('No location') if new_project['requested_amount'] is None: raise ValueError('No requested amount') if new_project['category'] is None: raise ValueError('No category') if new_project['due_date'] is None: raise ValueError('No due date') if new_project['tags'] is None: raise ValueError('No tags') # Try to construct a Project object from the given data project = Anna_Project() project.user_id = user.user_id() project.title = new_project['title'] project.description = new_project['description'] project.category = new_project['category'] project.tags = new_project['tags'] project.location = new_project['location'] project.requested_amount = int(new_project['requested_amount']) # DateTime format ex. 24122016 (24th of January, 2016), %d%m%Y project.due_date = datetime.datetime.strptime(new_project['due_date'], "%d%m%Y") # Request data was somehow wrong (Datetime didnt match the specified format or something similar) except ValueError: self.error(400) return # Something else broke in trying to parse the new project data from the request except Exception, e: self.error(400) return