def get(self, id, fig_key): user = users.get_current_user() if user is None: # go to login page print("View Stream Handler: Not logged in") self.redirect(users.create_login_page(self.request.uri)) return current_stream = stream.get_by_id(int(id)) if(not current_stream): self.redirect("/error/" + 'Wrong stream or page number') return flag = False if current_stream: #delete all the imgs, because they are huge for i in current_stream.figures: if str(i.blob_key) == fig_key: blobstore.delete(i.blob_key) current_stream.figures.remove(i) flag = True break if(not flag): self.redirect("/error/" + 'Designated fig does not exist') return current_stream.num_of_pics -= 1 current_stream.put() time_sleep(NDB_UPDATE_SLEEP_TIME) return
def get(self, id): user = users.get_current_user() if user is None: # go to login page print("View Stream Handler: Not logged in") self.redirect(users.create_login_page(self.request.uri)) return current_stream = stream.get_by_id(int(id)) if not current_stream: self.redirect("/error/" + 'Wrong stream or page number') return if current_stream: # delete all the imgs, because they are huge for i in current_stream.figures: if(not i.external): blobstore.delete(i.blob_key) queried_user_profile = user_profile.query(user_profile.user_id == user.user_id()).get() if queried_user_profile: if current_stream.name in queried_user_profile.own_streams: queried_user_profile.own_streams.remove(str(current_stream.name)) if (not queried_user_profile.own_streams) and (not queried_user_profile.subscribed_streams): # no own_streams nor subscribed_streams queried_user_profile.key.delete() else: queried_user_profile.put() current_stream.key.delete() time_sleep(NDB_UPDATE_SLEEP_TIME) self.redirect('/management') return
def get(self, id, fig_key): user = users.get_current_user() if user is None: # go to login page print("View Stream Handler: Not logged in") self.redirect(users.create_login_page(self.request.uri)) return
def get(self,id): user = users.get_current_user() if user is None: # go to login page print("View Stream Handler: Not logged in") self.redirect(users.create_login_page(self.request.uri)) return photo_info_list = [] current_stream = stream.get_by_id(int(id)) if(not current_stream): self.redirect("/error/" + 'Wrong stream or page number') return for photo in current_stream.figures: print('added photoinfo') print(str(photo.date)) if(photo.external): photo_url = photo.ext_url else: photo_url = images.get_serving_url(photo.blob_key) current_info = {'time':(photo.date), 'lng':float(str(photo.location).split(',')[0]), 'lat':float(str(photo.location).split(',')[1]), 'url':photo_url} photo_info_list.append(current_info) print('added photoinfo') template_values = {'photo_info_list':photo_info_list, 'String1':current_stream.name, 'stream_id':current_stream.key.id() } template = JINJA_ENVIRONMENT.get_template('geoview.html') self.response.write(template.render(template_values))
def get(self, id, page): #Now the view is constrained to deliver 3*3 = 9 pics in a single page #so for the ith page, it covers from 9*(i-1) to 9*i-1 user = users.get_current_user() if user is None: # go to login page print("View Stream Handler: Not logged in") self.redirect(users.create_login_page(self.request.uri)) return if page is None: page = 1 #by default the 1st page PhotoUrls = [] PhotoIdList = [] # all_stream = stream.query() current_stream = stream.get_by_id(int(id)) current_stream.num_of_view = len(current_stream.views) current_stream.put() # nviews = Num_Of_Views[id] npage = int(page) for img in current_stream.figures[9*(npage-1):]: if(current_stream.figures.index(img) > 9*npage - 1): break if(not img.external): PhotoUrls.append(images.get_serving_url(img.blob_key)+"=s"+str(MAX_IMAGE_LENGTH)) else: PhotoUrls.append(str(img.ext_url)) #print(images.get_serving_url(img.blob_key)) if(not img.external): PhotoIdList.append(img.blob_key) else: #use the timestamp as key to delete dtstring = str(img.date) dtkey = re.sub("[^0-9]", "", dtstring) PhotoIdList.append(dtkey) total_pages = int((current_stream.num_of_pics - 0.001)/9 + 1) print("total pages = " + str(total_pages)) url_pages = [] for i in range(1,total_pages+1): url_pages.append('/view/'+id+'/'+str(i)) # Add subscribe button """show message if owner or already subscribed; show button if not subscribed""" no_subscribe_message = "None" show_subscribe_button = True show_unsubscribe_button = False subscribe_return_url = self.request.uri unsubscribe_return_url = self.request.uri show_upload = False upload_url = blobstore.create_upload_url('/upload_photo') if user.user_id() == current_stream.owner: # The user owns the stream print "ViewStreamHandler: User owns the stream, no need to subscribe" show_subscribe_button = False no_subscribe_message = "You are the owner of the Stream" show_upload = True already_subscribed = False # show Already Subscribed message instead of showing a button for subscribe for temp_user in current_stream.subscribers: # this for loop is used to check the id of users if user.user_id() == temp_user.user_id(): already_subscribed = True break if already_subscribed: show_subscribe_button = False show_unsubscribe_button = True no_subscribe_message = "You've already subscribed to the stream" template_values = {'String1': current_stream.name, 'url_list': PhotoUrls, 'fig_id_list': PhotoIdList, 'url_pages' : url_pages, 'num_of_pages': total_pages, 'nviews':current_stream.num_of_view, 'stream': current_stream, 'logout_url': users.create_logout_url('/'), 'no_subscribe_message': no_subscribe_message, 'show_subscribe_button': show_subscribe_button, 'show_unsubscribe_button': show_unsubscribe_button, 'show_upload': show_upload, 'upload_url':upload_url, 'subscribe_return_url': subscribe_return_url, 'unsubscribe_return_url': unsubscribe_return_url,} template = JINJA_ENVIRONMENT.get_template('refresh.html') self.response.write(template.render(template_values))