Пример #1
0
	def post(self):
		#which takes a stream definition and returns a status code
		statusCode = 0
		username = self.request.get('username')
		streamName = self.request.get('stream_name')
		sId = cStream.getStreamId(streamName)
		newSubscribers = self.request.get('new_subscriber_list')
		comment = self.request.get('message')
		newSubscribers = newSubscribers.split(',')
		urlCoverImage = self.request.get('url_cover_image')
		streamTags = self.request.get('stream_tags')
		streamTagsList = streamTags.split('#')
		streamTagsList.pop(0)

		streamList = []
		for stream in cStream.query():
			if stream.streamId == sId:
				statusCode = 1
			if stream.streamName == streamName:
				statusCode = 2
			streamList.append((stream.streamName, stream.creatorName))
		if statusCode == 0:
			streamKey = cStream.addNewStream(sId, streamName, username,urlCoverImage,streamTagsList)
			cUser.addUserStream(username, streamKey)
			CreateStream.addNewSubscribers(newSubscribers, streamKey)
			CreateStream.sendSubscriptionEmail(newSubscribers, streamName, username, comment)

		self.response.write(json.dumps({'status_code': statusCode, 'streams': streamList,}))
Пример #2
0
	def getTopStreams():
		searchStreams = []
		top_streams = []
		cStream.updateStreamViews()
		for stream in cStream.query():
			searchStreams.append((stream.streamName, len(stream.viewTimes),stream.streamId,stream.coverImageURL))
		top_streams = sorted(searchStreams, key=lambda x: -x[1])
		return top_streams[:3]
Пример #3
0
	def generateCache():
		CacheSearch.cache = []
		for stream in cStream.query():
			CacheSearch.cache.append({'id': stream.streamId, 'lable': stream.creatorName, 'value': stream.creatorName})
			CacheSearch.cache.append({'id': stream.streamId, 'lable': stream.streamName, 'value': stream.streamName})
			for tag in stream.streamTags:
				CacheSearch.cache.append({'id': stream.streamId, 'lable': tag, 'value': tag})
Пример #4
0
	def handle_upload(self):
		results = []
		blob_keys = []
		for name, fieldStorage in self.request.POST.items():
			if type(fieldStorage) is unicode:
				continue
			result = {}
			result['name'] = re.sub(
				r'^.*\\',
				'',
				fieldStorage.filename
			)
			result['type'] = fieldStorage.type
			result['size'] = self.get_file_size(fieldStorage.file)
			if self.validate(result):
				blob_key = str(
					self.write_blob(fieldStorage.value, result)
				)
				blob_keys.append(blob_key)
			#use the images API to get a permanent serving URL if the file is an image
			results.append(result)

		streamId = self.request.get('streamId')
		loc = (self.request.get('lat'), self.request.get('lon'))
		stream = cStream.query(cStream.streamId == int(streamId)).get()
		if stream:
			for key in blob_keys:
				blobKey = blobstore.BlobKey(str(key))
				imageId = stream.getNextImageId()
				cImage.addImage(stream.streamId, imageId, blobKey, loc)
				stream.images.insert(0,imageId)
			stream.put()
		return results
Пример #5
0
	def post(self):
		result = []
		for image in cImage.query():
			stream = cStream.query(cStream.streamId == image.streamId).get()
			if (stream):
				url = images.get_serving_url(image.blobKey)
				result.append({'streamId': image.streamId, 'streamname': stream.streamName, 'url': url, 'lat': image.lat, 'lon': image.lon})
		self.response.write(json.dumps(result))
Пример #6
0
	def post(self):
		streamId = self.request.get('streamId')
		username = self.request.get('username')

		stream = cStream.query(cStream.streamId == int(streamId)).get()
		if stream:
			user = cUser.query(cUser.username == username).get()
			if user:
				if stream.key not in user.subbedStreams:
					user.subbedStreams.append(stream.key)
					user.put()
Пример #7
0
	def post(self):
		#which takes a stream id and a page range and returns a
		#list of URLs to images, and a page range
		streamId = self.request.get('streamId')
		startPage = int(self.request.get('start_page'))
		endPage = int(self.request.get('end_page'))
		BlobKeyList = []
		result = cStream.query(cStream.streamId == int(streamId))
		stream = result.get()
		logging.info("in viewstream")

		if stream:
			i = 0
			cStream.addViewToStream(int(streamId))
			for x in range(0,len(stream.imageURLs)):
				if i >= startPage and i < endPage:
					BlobKeyList.append(images.get_serving_url(stream.imageURLs[x]))
					logging.info(images.get_serving_url(stream.imageURLs[x]))
				i = i + 1
		self.response.write(json.dumps({'blob_key_list': BlobKeyList, 'start_page': startPage, 'end_page': endPage, 'stream_size': len(stream.imageURLs)}))
Пример #8
0
	def post(self):
		#which takes a query string and returns a list of streams 
		#(titles and cover image urls) that contain matching text
		queryString = self.request.get('query_string')
		streamInfo = []
		for stream in cStream.query():
			#logging.info(stream.streamTags)
			#logging.info(any(queryString in tag for tag in stream.streamTags))
			if len(streamInfo) < 5 and queryString.lower() in stream.creatorName.lower() or queryString.lower() in stream.streamName.lower() or any(queryString.lower() in tag.lower() for tag in stream.streamTags):
				streamInfo.append({'stream_id': stream.streamId, stream.streamId: (stream.streamName, stream.coverImageURL)})
		self.response.write(json.dumps({'stream_list': streamInfo}))
Пример #9
0
	def post(self):
		params = self.request.arguments()
		streamsIds = []
		for i in range(len(params)):
			streamsIds.append(self.request.get(params[i]))

		for i in range(len(streamsIds)):

			streamToDelete = cStream.query(cStream.streamId == int(streamsIds[i])).get()
			streamKeyToDelete = streamToDelete.key
			for user in cUser.query():
				if (streamKeyToDelete in user.subbedStreams):
					user.subbedStreams.remove(streamKeyToDelete)
					user.put()

			owner = cUser.query(cUser.username == streamToDelete.creatorName).get()
			owner.userStreams.remove(streamKeyToDelete)
			owner.put()
			cStream.deleteStream(int(streamsIds[i]))

			top_stream = tStream.query(tStream.streamId == int(streamsIds[i])).get()
			top_stream.key.delete()
Пример #10
0
	def get(self):



		term = str(self.request.get('term'))
		names = []
		for stream in cStream.query():
			#logging.info(stream.streamTags)
			#logging.info(any(queryString in tag for tag in stream.streamTags))
			if term.lower() in stream.streamName.lower() or any(term.lower() in tag.lower() for tag in stream.streamTags):
				names.append(stream.streamName.lower())

		

		self.response.write(json.dumps({'allTags':names}))
Пример #11
0
	def post(self):
		streamInfo = []
		username = self.request.get('username')
		if not username == "":
			user = cUser.query(cUser.username == username).get()
			if user:
				for streamKey in user.subbedStreams:
					stream = streamKey.get()
					if stream:
						streamInfo.append({'stream_id': int(stream.streamId), stream.streamId: (stream.streamName, stream.coverImageURL, (stream.lastViewed - datetime.datetime.utcfromtimestamp(0)).total_seconds())})
				returnList = {'stream_list': streamInfo}
				self.response.write(json.dumps(returnList))
		else:
			for stream in cStream.query():
				streamInfo.append({'stream_id': int(stream.streamId), stream.streamId: (stream.streamName, stream.coverImageURL, (stream.lastViewed - datetime.datetime.utcfromtimestamp(0)).total_seconds())})
			self.response.write(json.dumps({'stream_list': streamInfo}))
Пример #12
0
	def post(self):
		username = self.request.get('username')
		streamsIds=[]

		params = self.request.arguments()
		for i in range(len(params)):
			if (params[i].find('stream') != -1):
				streamsIds.append(str(self.request.get(params[i])))

		self.response.write(streamsIds[0])

		for i in range(len(streamsIds)):
			streamToUnsubscribe = cStream.query(cStream.streamId ==int(streamsIds[i])).get()
			if streamToUnsubscribe:
				streamKey = streamToUnsubscribe.key
				user = cUser.query(cUser.username == username).get()
				if user:
					user.subbedStreams.remove(streamKey)
					user.put()
Пример #13
0
	def handle_upload(self):
		blob_keys = []
		results = []
		logging.info("in handle_upload")
		for name, fieldStorage in self.request.POST.items():
			if type(fieldStorage) is unicode:
				continue
			result = {}
			result['name'] = str(re.sub(
				r'^.*\\',
				'',
				fieldStorage.filename
			))
			result['type'] = fieldStorage.type
			result['size'] = self.get_file_size(fieldStorage.file)
			logging.info(self.validate(result))
			if self.validate(result):
				blob_key = str(
					self.write_blob(fieldStorage.value, result)
				)
				logging.info(blob_key)
			#use the images API to get a permanent serving URL if the file is an image
			results.append(result)

			streamId = self.request.get('streamId')
			stream =cStream.query(cStream.streamId == int(streamId)).get()
			if stream:
				logging.info("blob_key is" + str(blob_key))
				blobKey = blobKey = blobstore.BlobKey(str(blob_key))
				logging.info("blobKey is" + str(blobKey))
				stream.imageURLs.insert(0,blobKey)
				stream.put()
				logging.info(stream.imageURLs)


		return results
Пример #14
0
	def get(self):
		streamId = 1
		stream = cStream.query(cStream.streamId == int(streamId)).get()

		self.response.write(stream.imageURLs)
Пример #15
0
	def post(self):
		streamInfo = []
		for stream in cStream.query():
			streamInfo.append({'stream_id': int(stream.streamId), stream.streamId: (stream.streamName, stream.coverImageURL)})
		self.response.write(json.dumps({'stream_list': streamInfo}))