def get(self): template = template_env.get_template('templates/eventlist.html') futureeventquery = Event.query(Event.startdatetime > datetime.datetime.now()) futureevents = futureeventquery.fetch() currenteventquery = Event.query(Event.enddatetime > datetime.datetime.now()) currentevents = currenteventquery.fetch() pasteventquery = Event.query(Event.enddatetime < datetime.datetime.now()) pastevents = pasteventquery.fetch() login_url = users.create_login_url(self.request.url) logout_url = users.create_logout_url(self.request.url) user=users.get_current_user() #avoids multiple queries for item in futureevents: if item in currentevents: futureevents.remove(item) context = { 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'futureevents': futureevents, 'currentevents': currentevents, 'pastevents': pastevents} self.response.write(template.render(context))
def get(self): currentevents = Event.query().fetch() liveevents=[] for event in currentevents: if event.startdatetime < datetime.datetime.now(): liveevents.append(event) print liveevents for event in liveevents: #initial post to twitter for authentication url = 'https://api.twitter.com/oauth2/token' values = {'grant_type' : 'client_credentials'} headers = {'Authorization': 'Basic '+b64, 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'} data = urllib.urlencode(values) req = urllib2.Request(url, data, headers) content = urllib2.urlopen(req).read() #above returns the key for use below, it needs to run every time to ensure twitter havent #killed the key #load response into json parser authjson = json.loads(content) twitterurl="https://api.twitter.com/1.1/search/tweets.json?q=%23"+str(event.hashtag) #get the whitelist whitelist=str(event.whitelist) #post to get the twitter scrape url = twitterurl headers = {'Authorization': 'Bearer '+authjson['access_token'], 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'} req = urllib2.Request(url, headers=headers) searchresult=json.loads(urllib2.urlopen(req).read()) #iterate through the response json looking for tweets for tweet in searchresult['statuses']: name = str(unicodedata.normalize('NFKD', tweet['user']['name']).encode('ascii', 'ignore')) screen_name = str(unicodedata.normalize('NFKD', tweet['user']['screen_name']).encode('ascii', 'ignore')) #check user is delegate if name in whitelist or screen_name in whitelist: #make the tweets nice text = str(unicodedata.normalize('NFKD', tweet['text']).encode('ascii', 'ignore')) created = str(unicodedata.normalize('NFKD', tweet['created_at']).encode('ascii', 'ignore')) profile_imgurl = str(unicodedata.normalize('NFKD', tweet['user']['profile_image_url']).encode('ascii', 'ignore')) content='!!comment!!<span class="media"><a class="media-left" href="https://twitter.com/'+screen_name+'"><img src="'+profile_imgurl+'" alt="profile picture"></a><div class="media-body"><h4 class="media-heading">'+screen_name+'</h4>'+text+'<div>'+created+'</div></div></span>' eventkey=str(event.key.urlsafe()) cmnt=Comment() cmnt.event=eventkey cmnt.content=content cmnt.put() #send out the comment to the comments section clientquery = ChatUser.query(ChatUser.event == eventkey) clients=clientquery.fetch() for client in clients: channel.send_message(client.uuid, content)
def get(self): eventkey = self.request.get("key") actualkey = ndb.Key(urlsafe=eventkey) event = Event.query(Event.key == actualkey).fetch(1)[0] user = users.get_current_user() # assigning users for client list in datastore global client_id # creating unique id client_id = str(uuid.uuid1()) if user: # if user is logged in chatuser = ChatUser() chatuser.event = eventkey chatuser.username = user.nickname() chatuser.uuid = str(client_id) chatuser.put() print "put" else: # else we don't have a user name for the datastore chatuser = ChatUser() chatuser.event = eventkey chatuser.uuid = str(client_id) chatuser.put() print "put" # instantiate users access to channel for pushed data (messages and comments) channel_token = channel.create_channel(client_id) template = template_env.get_template("templates/event.html") # login and out urls for the users api, passed to html login_url = users.create_login_url(self.request.url) logout_url = users.create_logout_url(self.request.url) # load the messages and comments prestored in the datastore so that they are # up to date with the current event feed messages = Message.query(Message.event == eventkey).fetch(500) comments = formcomment.Comment.query(formcomment.Comment.event == eventkey).fetch(500) context = { "user": user, "eventkey": eventkey, "videokey": event.video, "login_url": login_url, "logout_url": logout_url, "token": channel_token, "client_id": client_id, "eventdescription": event.description, "messages": messages, "comments": comments, } self.response.write(template.render(context))
def receive(self, mail_message): user = mail_message.sender eventname = mail_message.subject eventlist = Event.query().fetch() time=datetime.datetime.now() for event in eventlist: whitelist=str(event.whitelist) if user in whitelist: content='!!comment!!<span class="media"><a class="media-left" href="#"></a><div class="media-body"><h4 class="media-heading">'+str(user)+'</h4>'+mail_message.body.decode()+'<div>'+time.strftime('%H:%M')+'</div></div></span>' eventkey = event.key.urlsafe() cmnt = Comment() cmnt.event = eventkey cmnt.content = content cmnt.user = user cmnt.put() clientquery = ChatUser.query(ChatUser.event == eventkey) clients=clientquery.fetch() for client in clients: channel.send_message(client.uuid, content) else: print "false request from " + user
def post(self): upload_files = self.get_uploads('image') try: blob_info = upload_files[0] except: blob_info = None print blob_info comment = Comment() user=users.get_current_user() time=datetime.now() # newcomment = '!!comment!!<span>' + str(user) + '<br />' + self.request.get('comment') + '<br />' + time.strftime('%H:%m') + '<br /></span>' newcomment='!!comment!!<span class="media"><a class="media-left" href="#"></a><div class="media-body"><h4 class="media-heading">'+str(user)+'</h4>'+self.request.get('comment')+'<div>'+time.strftime('%H:%M')+'</div></div></span>' if blob_info: newcomment.replace('</div></div></span>','<image src=' + + '></image></div></div></span>') events = Event.query().fetch() eventkey=None for event in events: print event if str(event.name) == self.request.get('event'): eventkey = event.key.urlsafe() comment.event = eventkey comment.content = newcomment if blob_info: comment.image = blob_info.key() comment.put() print "put" print eventkey if eventkey: clientquery = e.ChatUser.query(e.ChatUser.event == eventkey) clients=clientquery.fetch() for client in clients: channel.send_message(client.uuid, newcomment)