Ejemplo n.º 1
0
def CheckAuth(handler):
    ip = GetIP(handler)
    cookies = handler.request.cookies
    if 'auth' in cookies:
        auth = cookies['auth'].value
        member_num = memcache.get(auth)
        if (member_num > 0):
            member = memcache.get('Member_' + str(member_num))
            if member is None:
                #q = db.GqlQuery("SELECT * FROM Member WHERE num = :1", member_num)
                q = Member.selectBy(num=member_num)
                if q.count() == 1:
                    member = q[0]
                    memcache.set(auth, member.num)
                    memcache.set('Member_' + str(member_num), member)
                else:
                    member = False
            if member:
                member.ip = ip
            return member
        else:
            #q = db.GqlQuery("SELECT * FROM Member WHERE auth = :1", auth)
            q = Member.selectBy(auth=auth)
            if (q.count() == 1):
                member_num = q[0].num
                member = q[0]
                memcache.set(auth, member_num)
                memcache.set('Member_' + str(member_num), member)
                member.ip = ip
                return member
            else:
                return False
    else:
        return False
Ejemplo n.º 2
0
 def member(self):
     if not hasattr(self, "_member"):
         ip = False
         member = False
         if 'X-Real-IP' in self.request.headers:
             ip = self.request.headers['X-Real-IP']
         else:
             ip = self.request.remote_ip
         #cookies = Cookies(self, max_age = 86400 * 14, path = '/')
         auth = self.get_cookie('auth')
         #if 'auth' in cookies:
         if auth is not None:
             #auth = cookies['auth']
             member_num = memcache.get(auth)
             if member_num > 0:
                 member = memcache.get('Member_' + str(member_num))
                 if member is None:
                     #q = db.GqlQuery("SELECT * FROM Member WHERE num = :1", member_num)
                     q = Member.selectBy(num=member_num)
                     if q.count() == 1:
                         member = q[0]
                         memcache.set('Member_' + str(member_num), member, 86400 * 14)
                 if member:
                     member.ip = ip
             else:
                 #q = db.GqlQuery("SELECT * FROM Member WHERE auth = :1", auth)
                 q = Member.selectBy(auth=auth)
                 if (q.count() == 1):
                     member_num = q[0].num
                     member = q[0]
                     memcache.set(auth, member_num, 86400 * 14)
                     memcache.set('Member_' + str(member_num), member, 86400 * 14)
                     member.ip = ip
         self._member = member
     return self._member
Ejemplo n.º 3
0
def CheckAuth(handler):
    ip = GetIP(handler)
    cookies = handler.request.cookies
    if 'auth' in cookies:
        auth = cookies['auth'].value
        member_num = memcache.get(auth)
        if (member_num > 0):
            member = memcache.get('Member_' + str(member_num))
            if member is None:
                #q = db.GqlQuery("SELECT * FROM Member WHERE num = :1", member_num)
                q = Member.selectBy(num=member_num)
                if q.count() == 1:
                    member = q[0]
                    memcache.set(auth, member.num)
                    memcache.set('Member_' + str(member_num), member)
                else:
                    member = False
            if member:
                member.ip = ip
            return member
        else:
            #q = db.GqlQuery("SELECT * FROM Member WHERE auth = :1", auth)
            q = Member.selectBy(auth=auth)
            if (q.count() == 1):
                member_num = q[0].num
                member = q[0]
                memcache.set(auth, member_num)
                memcache.set('Member_' + str(member_num), member)
                member.ip = ip
                return member
            else:
                return False
    else:
        return False
Ejemplo n.º 4
0
 def receive(self, message):
     bodies = message.bodies(content_type='text/plain')
     for body in bodies:
         to = extract_address(message.to)
         sender = extract_address(message.sender.lower())
         if to[0:5].lower() == 'tweet':
             #q = db.GqlQuery("SELECT * FROM Member WHERE email = :1", sender)
             q = Member.selectBy(email=sender)
             if q.count() == 1:
                 member = q[0]
                 if member.twitter_oauth == 1:
                     access_token = OAuthToken.from_string(
                         member.twitter_oauth_string)
                     twitter = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET,
                                        access_token)
                     status = body[1].decode()
                     if len(status) > 140:
                         status = status[0:140]
                     try:
                         logging.info("About to send tweet: " + status)
                         twitter.PostUpdate(status.encode('utf-8'))
                         logging.info("Successfully tweet: " + status)
                     except:
                         logging.error("Failed to tweet for " +
                                       member.username)
             else:
                 logging.error("User " + sender +
                               " doesn't have Twitter link.")
Ejemplo n.º 5
0
 def get(self, private_token):
     n = memcache.get('n_' + private_token)
     if n is not None:
         self.values['notification'] = n
         self.set_header('Content-type', 'application/xml;charset=UTF-8')
         self.values['member'] = self.member
         self.finalize(template_name='notifications', template_root='feed', template_type='xml')
     else:
         #q = db.GqlQuery("SELECT * FROM Member WHERE private_token = :1", private_token)
         q = Member.selectBy(private_token=private_token)
         count = q.count()
         if count > 0:
             member = q[0]
             #q = db.GqlQuery("SELECT * FROM Notification WHERE for_member_num = :1 ORDER BY num DESC LIMIT 20", member.num)
             q = Notification.selectBy(for_member_num=member.num).orderBy('-num').limit(20)
             notifications = []
             i = 0
             for n in q:
                 if n.type == 'reply':
                     n.title = u'' + n.member.username + u' 在 ' + self.escape(n.label1) + u' 里回复了你'
                     n.text = u'<a href="/member/' + n.member.username + u'"><strong>' + n.member.username + u'</strong></a> 在 <a href="' + n.link1 + '">' + self.escape(n.label1) + u'</a> 里回复了你'
                     notifications.append(n)
                 if n.type == 'mention_reply':
                     n.title = u'' + n.member.username + u' 在回复 ' + self.escape(n.label1) + u' 时提到了你'
                     n.text = u'<a href="/member/' + n.member.username + u'"><strong>' + n.member.username + u'</strong></a> 在回复 <a href="' + n.link1 + '">' + self.escape(n.label1) + u'</a> 时提到了你'
                     notifications.append(n)
                 i = i + 1
             self.values['notifications'] = notifications
             memcache.set('n_' + private_token, notifications, 600)
             self.set_header('Content-type', 'application/xml;charset=UTF-8')
             self.values['site'] = GetSite()
             self.values['member'] = member
             self.finalize(template_name='notifications', template_root='feed', template_type='xml')
Ejemplo n.º 6
0
def GetMemberByUsername(name):
    one = memcache.get('Member::' + str(name).lower())
    if one:
        return one
    else:
        #q = db.GqlQuery("SELECT * FROM Member WHERE username_lower = :1", str(name).lower())
        q = Member.selectBy(username_lower=str(name).lower())
        if q.count() == 1:
            one = q[0]
            memcache.set('Member::' + str(name).lower(), one, 86400)
            return one
        else:
            return False
Ejemplo n.º 7
0
def GetMemberByEmail(email):
    cache = 'Member::email::' + hashlib.md5(email.lower()).hexdigest()
    one = memcache.get(cache)
    if one:
        return one
    else:
        #q = db.GqlQuery("SELECT * FROM Member WHERE email = :1", str(email).lower())
        q = Member.selectBy(email=str(email).lower())
        if q.count() == 1:
            one = q[0]
            memcache.set(cache, one, 86400)
            return one
        else:
            return False
Ejemplo n.º 8
0
 def get(self, private_token):
     n = memcache.get('n_' + private_token)
     if n is not None:
         self.values['notification'] = n
         self.set_header('Content-type', 'application/xml;charset=UTF-8')
         self.values['member'] = self.member
         self.finalize(template_name='notifications',
                       template_root='feed',
                       template_type='xml')
     else:
         #q = db.GqlQuery("SELECT * FROM Member WHERE private_token = :1", private_token)
         q = Member.selectBy(private_token=private_token)
         count = q.count()
         if count > 0:
             member = q[0]
             #q = db.GqlQuery("SELECT * FROM Notification WHERE for_member_num = :1 ORDER BY num DESC LIMIT 20", member.num)
             q = Notification.selectBy(
                 for_member_num=member.num).orderBy('-num').limit(20)
             notifications = []
             i = 0
             for n in q:
                 if n.type == 'reply':
                     n.title = u'' + n.member.username + u' 在 ' + self.escape(
                         n.label1) + u' 里回复了你'
                     n.text = u'<a href="/member/' + n.member.username + u'"><strong>' + n.member.username + u'</strong></a> 在 <a href="' + n.link1 + '">' + self.escape(
                         n.label1) + u'</a> 里回复了你'
                     notifications.append(n)
                 if n.type == 'mention_reply':
                     n.title = u'' + n.member.username + u' 在回复 ' + self.escape(
                         n.label1) + u' 时提到了你'
                     n.text = u'<a href="/member/' + n.member.username + u'"><strong>' + n.member.username + u'</strong></a> 在回复 <a href="' + n.link1 + '">' + self.escape(
                         n.label1) + u'</a> 时提到了你'
                     notifications.append(n)
                 i = i + 1
             self.values['notifications'] = notifications
             memcache.set('n_' + private_token, notifications, 600)
             self.set_header('Content-type',
                             'application/xml;charset=UTF-8')
             self.values['site'] = GetSite()
             self.values['member'] = member
             self.finalize(template_name='notifications',
                           template_root='feed',
                           template_type='xml')
Ejemplo n.º 9
0
 def receive(self, message):
     bodies = message.bodies(content_type = 'text/plain')
     for body in bodies:
         to = extract_address(message.to)
         sender = extract_address(message.sender.lower())
         if to[0:5].lower() == 'tweet':
             #q = db.GqlQuery("SELECT * FROM Member WHERE email = :1", sender)
             q = Member.selectBy(email=sender)
             if q.count() == 1:
                 member = q[0]
                 if member.twitter_oauth == 1:
                     access_token = OAuthToken.from_string(member.twitter_oauth_string)
                     twitter = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, access_token)
                     status = body[1].decode()
                     if len(status) > 140:
                         status = status[0:140]
                     try:
                         logging.info("About to send tweet: " + status)
                         twitter.PostUpdate(status.encode('utf-8'))
                         logging.info("Successfully tweet: " + status)
                     except:
                         logging.error("Failed to tweet for " + member.username)
             else:
                 logging.error("User " + sender + " doesn't have Twitter link.")