def friendset(self): """Return a set of user_profile ids of this user's friends""" key = u"friendset:%s" % key_suffix('friends', self.pk) key = short_key(key) value = cache.cache.get(key, None) if value is None: value = set(Friendship.objects.get_friendships(user_profile=self).values_list('user_profile2_id', flat=True)) cache.cache.set(key, value) return value
def event_friends(event, user_profile): ekey = key_suffix('attendees', event.pk) ukey = key_suffix('friends', user_profile.pk) key = short_key(u"event_friends:%s:%s" % (ekey, ukey)) value = cache.cache.get(key, None) if value is None: value = "" friends = user_profile.friendset if friends: attendees = event.attendeeset fr_at = friends & attendees # friends who are also attendees of this event if fr_at: n = len(fr_at) if n == 1: value = "| 1 Friend" else: value = u"| %d Friends" % n cache.cache.set(key, value) return value
def get_friend_follower_count(self): key = u"friend-follower-stats:%s" % key_suffix('friends', self.pk) key = short_key(key) value = cache.cache.get(key, None) if value is None: v1 = Friendship.objects.select_related('user_profile2__user').filter(user_profile1=self, user_profile2__user__is_active=True).count() v2 = Follower.objects.select_related('follower__user').filter(followee=self, follower__user__is_active=True).count() value = (v1, v2) cache.cache.set(key, value, 300) return value
def blacklist_set(self): """Return a set of blacklisted screen names""" key = u"twitter-" + key_suffix("blacklist", 0, expire_time=3600*24*30) key = short_key(key) value = cache.cache.get(key, None) if value is None: value= set() for v in self.values_list('names', flat=True): for n in v.lower().split(): value.add(n.strip()) cache.cache.set(key, value, 3600*24*30) return value
def blacklist_set(self): """Return a set of blacklisted screen names""" key = u"twitter-" + key_suffix( "blacklist", 0, expire_time=3600 * 24 * 30) key = short_key(key) value = cache.cache.get(key, None) if value is None: value = set() for v in self.values_list('names', flat=True): for n in v.lower().split(): value.add(n.strip()) cache.cache.set(key, value, 3600 * 24 * 30) return value
def twitter_profile_url(user): """Return Twitter profile URL for the given user""" from twitter.models import TwitterProfile sfx = key_suffix(u"twitter_profile", user.pk) key = short_key(u"twitter_profile_url:%s" % sfx) value = cache.cache.get(key, None) if value is None: p = get_or_none(TwitterProfile.objects.active(), user_profile__user__pk=user.pk) if p: value = u"http://twitter.com/%s" % p.screen_name else: value = user.get_profile().get_absolute_url() cache.cache.set(key, value) return value
def twitter_profile_url(user): """Return Twitter profile URL for the given user""" from twitter.models import TwitterProfile sfx = key_suffix(u'twitter_profile', user.pk) key = short_key(u'twitter_profile_url:%s' % sfx) value = cache.cache.get(key, None) if value is None: p = get_or_none(TwitterProfile.objects.active(), user_profile__user__pk=user.pk) if p: value = u'http://twitter.com/%s' % p.screen_name else: value = user.get_profile().get_absolute_url() cache.cache.set(key, value) return value
def event_interested_users(context, event, user_profile=None, limit="9"): ctx = {} try: limit = int(limit) except ValueError: limit = 9 ctx['limit'] = limit sfx = key_suffix('attendees', event.pk) key = u"city-interested:%s:%s" % (sfx, limit) interested = cache.cache.get(key, None) if interested is None: interested = event.get_interested(limit=limit, order_by="?") # TODO: give preference to logged in user's friends cache.cache.set(key, interested, 600) ctx['interested'] = interested ctx['show_more'] = len(ctx['interested']) >= limit ctx['MEDIA_URL'] = context['MEDIA_URL'] request = context.get('request', None) if request: ctx['mobile'] = request.mobile ctx['e'] = event return ctx