def get_precache_trim_size(user_activities, key): """ Get user activity to decide what kind of trimming we need. :return: int """ # Local imports since we load tasks before apps are loaded fully from socialhome.streams.streams import BaseStream from socialhome.users.models import User user_id = BaseStream.get_key_user_id(key) if not user_id: # Anonymous, trim as inactive return settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_SIZE user_active = user_activities.get(user_id) if user_active is not None: # Trim according to activity return ( settings.SOCIALHOME_STREAMS_PRECACHE_SIZE if user_active else settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_SIZE ) # Get user try: user = User.objects.get(id=user_id) except User.DoesNotExist: # Trim all return 0 check_time = user.last_login if user.last_login else user.date_joined user_active = check_time >= now() - timedelta(days=settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_DAYS) user_activities[user_id] = user_active # Trim according to activity return ( settings.SOCIALHOME_STREAMS_PRECACHE_SIZE if user_active else settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_SIZE )
def get_precache_trim_size(user_activities, key): """ Get user activity to decide what kind of trimming we need. :return: int """ # Local imports since we load tasks before apps are loaded fully from socialhome.streams.streams import BaseStream from socialhome.users.models import User user_id = BaseStream.get_key_user_id(key) if not user_id: # Anonymous, trim as inactive return settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_SIZE user_active = user_activities.get(user_id) if user_active is not None: # Trim according to activity return (settings.SOCIALHOME_STREAMS_PRECACHE_SIZE if user_active else settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_SIZE) # Get user try: user = User.objects.get(id=user_id) except User.DoesNotExist: # Trim all return 0 check_time = user.last_login if user.last_login else user.date_joined user_active = check_time >= now() - timedelta( days=settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_DAYS) user_activities[user_id] = user_active # Trim according to activity return (settings.SOCIALHOME_STREAMS_PRECACHE_SIZE if user_active else settings.SOCIALHOME_STREAMS_PRECACHE_INACTIVE_SIZE)
def test_get_key_user_id(self, mock_queryset): self.assertEqual(BaseStream.get_key_user_id("spam:eggs:1"), 1) self.assertEqual(BaseStream.get_key_user_id("spam:eggs:1:throughs"), 1) self.assertEqual(BaseStream.get_key_user_id("spam:eggs:1:2"), 2) self.assertEqual(BaseStream.get_key_user_id("spam:eggs:1:2:throughs"), 2) self.assertIsNone(BaseStream.get_key_user_id("spam:eggs:anonymous")) self.assertIsNone(BaseStream.get_key_user_id("spam:eggs:anonymous:throughs"))