def post(self, trailId = None): if(trailId is None): try: uploadedFiles = self.get_uploads('file') # 'file' is file upload field in the form blobInfo = uploadedFiles[0] blobReader = blobInfo.open() parser = KmlParser() trailInfo = parser.parseKml(blobReader) logging.debug(trailInfo) blobInfo.delete() #parse tags, if any. It is assumed that they are separated by commas. tags = self.request.get('tags').split(',') #store entry entry = Trail(title = self.request.get('title'), militaryMap = self.request.get('militaryMap'), nearestCity = self.request.get('nearestCity'), timeDurationHours = self.request.get('timeDurationHours'), extension = trailInfo['extension'], slope = trailInfo['slope'], startPoint = trailInfo['startPoint'], points = simplejson.dumps(trailInfo['points'])) entry.put() self.redirect('/trails') except: logging.exception("Unexpected creating trail: %s", sys.exc_info()[0]) self.error(500) else: self._updateTrail(trailId)
def get(self): #Get the latest N trails numTrails = self.request.get("n") if self.request.get("n") else self.defaultNum trails = Trail.query().order(Trail.creationDate) if(self.request.get("remote") and self.request.get("callback")): #JSONP request. Render the content as json and wrap it in a function call trails = map(self._jsonEncoder, trails) jsonpContent = self.request.get("callback") + "(" + simplejson.dumps(trails) + ")" self.response.headers["Content-Type"] = "text/javascript" self.response.out.write(jsonpContent) elif(self.request.headers['accept'] in ["application/json", "text/json"]): #Ajax request. Dump the list as json trails = map(self._jsonEncoder, trails) self.response.headers["Content-Type"] = "application/json" self.response.out.write(trails) else: #render the default view path = os.path.join('default/', 'trails.html') uploadUrl = blobstore.create_upload_url('/trail') logging.warning("Upload url: " + self.request.get('link')) context = {'trails': trails, 'uploadUrl': uploadUrl, 'logoutUrl': users.create_logout_url("/"), 'dialogId': "newTrailDialog", 'formId': "newTrailForm" } self.render_template(path, **context)