示例#1
0
    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))
示例#2
0
    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)
示例#3
0
    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))
示例#4
0
 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
示例#5
0
    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)