Example #1
0
    def get_graph(self):
        """ユーザーグラフを返す"""
        
        name = self.request.get('name')
        if not name: return 'null'
        
        key_name = 'at_%s' % name
        ent = UserStatus.get_by_key_name(key_name)
        if not ent: return 'null'


        self.response.out.write('{')
        self.response.out.write('img:"%s",' % (ent.profile_image_url))
        self.response.out.write('call:%d,callee:%d,' % (ent.call_count, ent.callee_count))
        
        if ent.graph:
            try: graph = eval(ent.graph)
            except TypeError: graph = { }
            self.response.out.write('graph:{')
            
            call = graph.get('call', {})
            self.response.out.write('call:{')
            for k, v in call.iteritems():
                self.response.out.write('"%s":%s,' % (k, v))
            self.response.out.write('},')
            
            callee = graph.get('callee', {})
            self.response.out.write('callee:{')
            for k, v in callee.iteritems():
                self.response.out.write('"%s":%s,' % (k, v))
            self.response.out.write('},')
            
            self.response.out.write('}')
            
        self.response.out.write('}')
Example #2
0
    def get_image_url(self):
        """アイコン画像のURLを返す"""
        
        name = self.request.get('name')
        if not name: return 'null'

        key_name = 'at_%s' % name
        url = memcache.get(key=key_name)
        if not url:
            ent = UserStatus.get_by_key_name(key_name)
            if not ent: return 'null'
            url = ent.profile_image_url
            memcache.set(key=key_name, value=url)
        self.response.out.write(url)
Example #3
0
    def update_status(self, name, type, opposite):
        name     = '%s' % name
        key_name = 'at_%s' % name
        ent = UserStatus.get_by_key_name(key_name)
        if not ent:
            ent = UserStatus(key_name=key_name)
            ent.profile_image_url = self.get_profile_image(name)
            ent.put()
            
        if type == 'call':
            ent.call_count += 1
        elif type == 'callee':
            ent.callee_count += 1

        graph = ent.graph or '{ "call":{},"callee":{} }'
        try:
            graph = eval(graph)
        except TypeError:
            graph = { "call":{}, "callee":{} }
            
        graph_item = graph[type]
        graph_item[opposite] = graph_item.get(opposite, 0) + 1
        ent.graph = str(graph)
        ent.put()
Example #4
0
 def update_image(self, key_name):
     ent = UserStatus.get_by_key_name(key_name)
     if not ent: return
     
     name = ent.key().name()[3:]
     logging.debug('profile_image: %s' % name)
     if not ent.profile_image_url:
         try:
             profile_image_url = self.get_profile_image(name)
         except urlfetch.InvalidURLError:
             logging.warning('deleted user?: %s' % name)
             ent.profile_image_updated = datetime.datetime.max
             ent.put()
         else:
             ent.profile_image_url = profile_image_url
             logging.debug('profile_image_url: %s' % ent.profile_image_url)
             if profile_image_url:
                 ent.profile_image_url = profile_image_url
                 ent.profile_image_updated = datetime.datetime.now()
                 ent.put()
             else:
                 logging.warning('profile_image: %s = NONE' % name)
                 
     return