def refill_redis(profile_id): support_key = get_support_key(profile_id) promise_key = get_promise_key(profile_id) promise_ids = list(Promise.objects.filter(creator=profile_id).active().values_list('id', flat=True)) connection.delete(promise_key) for prom_id in promise_ids: connection.lpush(promise_key, prom_id) promises_supported_ids = list(Promise.objects.filter(supporter__id=profile_id).values_list('id', flat=True)) connection.delete(support_key) for prom_id in promises_supported_ids: connection.lpush(support_key, prom_id)
def save_promise(self, data): form = NewPromiseForm(data) if form.is_valid(): new_promise = form.process(self.request) key = get_promise_key(self.request.user.profile.id) redis_connection.lpush(key, new_promise.id) # Posting to facebook if data.get('facebook_share') == 'on': post_data = social(new_promise, self.request.user.profile) msg = (u'I just created a promise on Promise.ly: ' u'{post_description}. Please support me! {link}') self.request.user.profile.wall_post( self.request, msg.format(**post_data)) # Logging stuff logger.log('promise', data={ 'creator_id': new_promise.creator.id, 'promise_id': new_promise.id, }) return new_promise
def user_promise_state(user, promise): """Returns the status between the promise and the currently logged in (or anonymous) user. Just a helper to avoid ifs/elifs to proliferate in our codebase. """ # We got an anonymous user here, he obviously can't support # anything. Let's give him a chance to show the "support this" # button. if user.is_anonymous(): return PromiseUserState.NOTHING # For owners promise_key = get_promise_key(user.profile.id) if promise.id in get_ids_from_redis(promise_key): return PromiseUserState.OWNER # For supporters support_key = get_support_key(user.profile.id) if promise.id in get_ids_from_redis(support_key): return PromiseUserState.SUPPORTER return PromiseUserState.NOTHING