def get(self): self.set_content_text_plain() response = {} # get current user user_id = self.get_request_param(fh.user_id_parm) if user_id in ['', None]: fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.user_id_parm)) return user = StreamUser.get_by_id(user_id) if user is None: fh.bad_request_error(self, response, 'Invalid user') return # query for all streams owned by user my_streams = Stream.get_ids_by_owner(user) # query for all streams subscribed to by user sub_streams = StreamSubscriber.get_by_user(user) # write some stream info response['owned_streams'] = [s for s in my_streams] response['subscribed_streams'] = [s.stream.id() for s in sub_streams] self.write_response(json.dumps(response))
def get(self): self.set_content_text_plain() response = {} # get auth token, if present auth_token = urllib.quote( str(self.get_request_param(fh.auth_token_parm))) user_data_str = urllib2.urlopen( 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=' + auth_token).read() user_data = json.loads(user_data_str) # get user from auth token user = StreamUser.get_by_email(user_data['email']) if user is None: fh.bad_request_error(self, response, 'Invalid user') return # query for all streams subscribed to by user sub_streams = StreamSubscriber.get_by_user(user) # write some stream info response = [ s.stream.get().get_meta_dict_with_most_recent_image_url() for s in sub_streams ] self.write_response(json.dumps(response))
def get(self): self.set_content_text_plain() response = {} search_string = self.get_request_param(fh.search_string_parm) if search_string is None: fh.bad_request_error(self, "Search string not found") return response[fh.tags_parm] = fh.search_tag_index(search_string) self.write_response(json.dumps(response))
def get(self): self.set_content_text_plain() response = {} # get stream name stream_id = self.get_request_param(fh.stream_id_parm) response[fh.stream_id_parm] = stream_id if stream_id is None: fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get the stream stream = Stream.get_by_id(stream_id) # get current user user_id = self.get_request_param(fh.user_id_parm) if user_id is None or user_id == "": fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.user_id_parm)) return # get the user user = StreamUser.get_by_id(user_id) # delete subscription result = StreamSubscriber.delete(stream, user) if result: response['status'] = "Subscription deleted" else: response['status'] = "Subscription not found" redirect_url = str(self.get_request_param(fh.redirect_parm)) if redirect_url in ['', None]: self.write_response(json.dumps(response)) else: self.redirect(redirect_url)
def get(self): self.set_content_text_plain() response = {} # get stream name stream_id = self.get_request_param(fh.stream_id_parm) response[fh.stream_id_parm] = stream_id if stream_id is None or stream_id == "": fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get the stream stream = Stream.get_by_id(stream_id) if stream is None: fh.bad_request_error(self, response, 'Invalid Stream ID') return # check that user is the owner of the stream user_id = self.get_request_param(fh.user_id_parm) if user_id != stream.get_owner_from_db().user_id(): fh.bad_request_error(self, response, 'Not stream owner') return # remove stream name entries from the search index fh.remove_stream_from_search_index(stream, response) # delete the stream stream.delete() self.write_response(json.dumps(response))
def get(self): self.set_content_text_plain() response = {} # get current user owner_id = self.get_request_param(fh.user_id_parm) owner = StreamUser.get_by_id(owner_id) if owner is None: fh.bad_request_error(self, response, 'Not logged in') return # get stream name stream_name = self.get_request_param(fh.stream_name_parm) response[fh.stream_name_parm] = stream_name if stream_name is None or stream_name == "": fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_name_parm)) return # get cover image URL cover_url = self.get_request_param(fh.cover_url_parm) response[fh.cover_url_parm] = cover_url # create new stream stream = Stream.create(name=stream_name, owner=owner, cover_url=cover_url) if stream is None: fh.bad_request_error( self, response, 'Stream {0} already exists for user {1}'.format( stream_name, owner.nickName)) return response[fh.stream_id_parm] = stream.key.id() # add stream to document index for searching fh.searchablize_stream(stream, response) # process subscribers list subs = self.get_request_param(fh.subscribers_parm) response[fh.subscribers_parm] = subs num_added = StreamSubscriber.add_subscribers_by_emails( stream, subs.split(';')) response['num_new_subscribers'] = num_added # process tags list #TODO: tags list in create tags = self.get_request_param(fh.tags_parm) StreamTag.add_tags_to_stream_by_name(stream, tags.split(';')) response[fh.tags_parm] = tags response['status'] = "Created new stream: {}".format(stream_name) self.write_response(json.dumps(response))
def get(self): self.set_content_text_plain() response = {} tag_name = self.get_request_param(FH.tag_name_parm) response[FH.tag_name_parm] = tag_name if tag_name is None or tag_name == '': FH.bad_request_error(self, response, "No tag name found") return tag = Tag.create(tag_name) if not tag: FH.bad_request_error(self, response, "Tag {} already exists".format(tag_name)) return # add tag to document index for searching FH.searchablize_tag(tag, response) response['status'] = "Created new tag: {}".format(tag_name) self.write_response(json.dumps(response))
def get(self): self.set_content_text_plain() response = {} # get stream name stream_id = self.get_request_param(fh.stream_id_parm) response[fh.stream_id_parm] = stream_id if stream_id is None or stream_id == "": fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get current user user_id = self.get_request_param(fh.user_id_parm) response[fh.user_id_parm] = user_id if user_id is None or user_id == "": fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.user_id_parm)) return # create new subscription sub = StreamSubscriber.get_by_stream_id_and_user_id(stream_id, user_id) if sub is not None: response['status'] = True else: response['status'] = False redirect_url = str(self.get_request_param(fh.redirect_parm)) if redirect_url in ['', None]: self.write_response(json.dumps(response)) else: self.redirect(redirect_url)
def get(self): self.set_content_text_plain() response = {} # get stream name stream_id = self.get_request_param(fh.stream_id_parm) response[fh.stream_id_parm] = stream_id if stream_id in [None, '']: fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get the stream stream = Stream.get_by_id(stream_id) if stream is None: fh.bad_request_error(self, response, 'Invalid Stream ID') return # get tag name tag_name = self.get_request_param(fh.tag_name_parm) if tag_name in [None, '']: fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.tag_name_parm)) return # check how many streams have this tag st = StreamTag.get_batch_by_tag_name(tag_name) n_streams = len(st) # get the tag tag = Tag.get_by_name(tag_name) if tag is not None: # remove streamtags StreamTag.delete_tag_from_stream(stream, tag) # block until new tag is found time.sleep(0.01) while StreamTag.get_by_stream_and_tag(stream, tag) is not None: time.sleep(0.01) if n_streams == 1: fh.remove_tag_from_search_index(tag_name, {}) tag.delete() redirect_url = str(self.get_request_param(fh.redirect_parm)) if redirect_url in ['', None]: self.write_response(json.dumps(response)) else: self.redirect(redirect_url)
def get(self): self.set_content_text_plain() response = {} # get stream name stream_id = self.get_request_param(fh.stream_id_parm) response[fh.stream_id_parm] = stream_id if stream_id in ['', None]: fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get the stream stream = Stream.get_by_id(stream_id) if stream is None: fh.bad_request_error(self, response, 'Invalid Stream ID') return # get tag name tag_name = self.get_request_param(fh.tag_name_parm) if tag_name in ['', None]: fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.tag_name_parm)) return # get the tag tag = Tag.get_or_create_by_name(tag_name.strip().lower()) # create new streamtag StreamTag.add_tags_to_stream_by_name(stream, [tag.name]) # block until new tag is found time.sleep(0.01) while StreamTag.get_by_stream_and_tag(stream, tag) is None: time.sleep(0.01) redirect_url = str(self.get_request_param(fh.redirect_parm)) if redirect_url in ['', None]: self.write_response(json.dumps(response)) else: self.redirect(redirect_url)
def post(self): response = {} # get current user try: user = StreamUser.get_current_user(self) except urllib2.HTTPError: fh.bad_request_error(self, response, 'HTTPERROR... authToken = {}'.format(self.get_request_param(fh.auth_token_parm))) return if user is None: fh.bad_request_error(self, response, 'Not logged in') return stream_id = self.get_request_param(fh.stream_id_parm) if stream_id is None or stream_id == '': fh.bad_request_error(self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get the stream stream = Stream.get_by_id(stream_id) if stream is None: fh.bad_request_error(self, response, 'Invalid Stream ID') return n_ups = max(1, fh.get_num_uploads(self)) print('\nThere were {} uploads\n'.format(n_ups)) for i in range(n_ups): upload = fh.get_upload_from_filehandler(self, i) url = self.get_request_param(fh.url_parm) if upload is not None: image_url = fh.get_file_url(upload) name = upload.filename elif url not in [None, '']: try: urllib2.urlopen(url) image_url = url name = upload except: image_url = None else: image_url = None if image_url is not None: iscover = self.get_request_param('iscover') if iscover: stream.set_cover_image_url(image_url) else: lat = self.get_request_param('lat') print "Latitude = ", lat lng = self.get_request_param('lng') print "Longitude = ", lng # create StreamItem entity item = StreamItem.create( owner=user, file=upload, URL=image_url, name=name, stream=stream, latitude=lat, longitude=lng) # update stream list of images stream.add_item(item) # go back to viewstream page redirect = str(self.get_request_param(fh.redirect_parm)) if redirect: self.redirect(redirect) return else: self.set_content_text_plain() response = {'status': 'Upload successful', 'image_url': image_url } self.write_response(json.dumps(response)) return
def get(self): self.set_content_text_plain() response = {} stream_id = self.get_request_param(fh.stream_id_parm) if stream_id is None or stream_id == '': fh.bad_request_error( self, response, 'No parameter {} found'.format(fh.stream_id_parm)) return # get the stream stream = Stream.get_by_id(stream_id) if stream is None: fh.bad_request_error(self, response, 'Invalid Stream ID') return # write some stream info response[fh.stream_name_parm] = stream.name response[fh.owner_parm] = stream.get_owner_from_db().nickName response[fh.num_images_parm] = len(stream.items) # get the indices ind1, ind2, status = fh.get_image_range_param(self) if ind1 is None or ind2 is None: fh.bad_request_error(self, response, status) return # query for images items, in1, ind2 = stream.get_items(ind1, ind2) image_urls = [item.URL for item in items] if len(image_urls) == 0: response[fh.image_range_parm] = None else: response[fh.image_range_parm] = "{0}-{1}".format(ind1, ind2) # get the tags stream_tags = StreamTag.get_batch_by_stream(stream) response[fh.tags_parm] = [t.get_tag_name() for t in stream_tags] #get lat/lng data for GeoMap item_loc = [] for item in items: if item.getLatLng() is not None: oneItem = [] oneItem.append(item.stream.id()) oneItem.append(item.dateAdded.strftime("%Y-%m-%d %H:%M:%S")) if item.URL is None: imageURL = fh.get_file_url(item.blobKey) else: imageURL = item.URL oneItem.append(imageURL) oneItem.append(item.latitude) oneItem.append(item.longitude) item_loc.append(oneItem) response['streamItemsLoc'] = item_loc response['urls'] = image_urls self.write_response(json.dumps(response))