def post(self, api=None, list_id=None): """ POST request handler """ current_user = User.getUser(self.user_email) if api is not None: try: if list_id is None: list_name = self.request.get('name', None) new_list = ShoppingList.create_list(current_user, list_name) self._api_display_list_(new_list) except (ValueError) as exc: self.set_error(constants.STATUS_BAD_REQUEST) if list_id is not None: # Add item to list try: current_list = ShoppingList.get_by_id(int(list_id), current_user) if current_list is None: raise ValueError item = current_list.add_item(self.request.get('description', None), self.request.get('key', None), int(self.request.get('quantity', 1))) self.response.out.write(json.dumps(item.to_dict())) self.response.headers['Content-Type'] = 'application/json' self.ok('/Lists/'+str(list_id)) except (TypeError, ValueError, BadKeyError, BadValueError, ProtocolBufferEncodeError) as exc: logging.error('Exception: ' + str(exc)) error_message = self.gettext("There's not such list, sorry.") self.set_error(constants.STATUS_BAD_REQUEST, message=error_message, url="/")