def getImages(self, request): stream = Stream.get_by_id(request.stream_id, getStreamKey()) if not stream: return ResponseImages() return ResponseImages(images=[ getImageInfo(x) for x in Image.query(ancestor=stream.key).order(-Image.create_time) ])
def getNearbyImages(self, request): if request.latitude < -90.0 or request.latitude > 90.0 or request.longitude < -180.0 or request.longitude > 180.0: return ResponseImages() images = filter( lambda x: x.longitude >= -180.0 and x.longitude <= 180.0, Image.query(Image.latitude >= -90.0, Image.latitude <= 90.0).fetch()) return ResponseImages(images=[ getImageInfo(img) for img in sorted(images, key=lambda x: HaversineDistance( (request.latitude, request.longitude), (x.latitude, x.longitude))) ])
def getNearbyImages(self, request): if request.latitude < -90.0 or request.latitude > 90.0 or request.longitude < -180.0 or request.longitude > 180.0: return ResponseImages() images = filter(lambda x: x.longitude>=-180.0 and x.longitude<=180.0, Image.query(Image.latitude>=-90.0, Image.latitude<=90.0).fetch()); return ResponseImages(images=[getImageInfo(img) for img in sorted(images, key=lambda x: HaversineDistance((request.latitude, request.longitude), (x.latitude, x.longitude)))])
def getImages(self, request): stream = Stream.get_by_id(request.stream_id, getStreamKey()) if not stream: return ResponseImages() return ResponseImages(images=[getImageInfo(x) for x in Image.query(ancestor=stream.key).order(-Image.create_time)])
def get(self): user = users.get_current_user() streamId = self.request.get("id") if not streamId: logging.error("Unable to get id from url") self.error(400) jumpToErrorPage(self) return stream = Stream.get_by_id(int(streamId), getStreamKey()) if not stream: logging.error("Unable to get stream with id " + streamId) self.error(400) jumpToErrorPage( self, 'Unable to find the stream! The stream may be deleted!') return if self.request.get('newest_pic'): self.response.write( get_serving_url( Image.query(ancestor=stream.key).order( -Image.create_time).get().img)) return if (self.request.get('geo_info')): timeline = self.request.get_all('timeline[]') if (timeline is None) or len(timeline) < 2: self.error(400) return startDate = datetime.now() - timedelta(365 - int(timeline[0])) endDate = datetime.now() - timedelta(365 - int(timeline[1])) images = Image.query(Image.create_time >= startDate, Image.create_time <= endDate, ancestor=stream.key) images = filter( lambda x: x.latitude >= -90.0 and x.latitude <= 90.0 and x. longitude >= -180.0 and x.longitude <= 180.0, images) self.response.write( json.dumps([{ 'url': get_serving_url(img.img), 'latitude': img.latitude, 'longitude': img.longitude } for img in images])) return if self.request.get('upload'): self.response.write( blobstore.create_upload_url( urls.URL_VIEW_STREAM_PAGE + urls.URL_UPLOAD_HANDLER + '/?' + urllib.urlencode({'id': streamId}))) return template_dict = urls.getUrlDir() template_dict['images'] = [ get_serving_url(x.img) for x in Image.query(ancestor=stream.key).order(-Image.create_time) ] template_dict['id'] = streamId template_dict['stream'] = stream template_dict['images_per_page'] = images_per_page if stream.user == user.email(): template_dict['is_owner'] = True else: template_dict['is_owner'] = False increaseViewNum(stream) stream.viewCount = stream.viewCount + 1 template_dict['subscribed'] = user.email() in stream.subscribers stream.put() self.response.write( urls.getTemplate(template_name).render(template_dict))