Пример #1
0
    def get_many_from_database(self, missing_keys):
        '''
        Return a dictionary with the serialized values for the missing keys
        '''
        database_results = {}
        if missing_keys:
            from entity.models import Love
            ids = [k.split(',') for k in missing_keys]
            love_ids = [int(love_id) for verb_id, love_id in ids]
            values = Love.objects.filter(id__in=love_ids).values_list(
                'id', 'user_id', 'created_at', 'entity_id', 'influencer_id')
            for value_tuple in values:
                love_id = int(value_tuple[0])
                user_id, created_at, entity_id, influencer_id = value_tuple[1:]

                # influencer_id can sometimes be none
                if influencer_id:
                    influencer_id = int(influencer_id)

                love = Love(user_id=int(user_id), created_at=created_at, entity_id=entity_id, id=love_id, influencer_id=influencer_id)
                activity = love.create_activity()

                serializer = LoveActivitySerializer()
                serialized_activity = serializer.dumps(activity)
                key = ','.join(map(str, [LoveVerb.id, love_id]))
                database_results[key] = serialized_activity

        return database_results
Пример #2
0
    def get_many_from_database(self, missing_keys):
        '''
        Return a dictionary with the serialized values for the missing keys
        '''
        database_results = {}
        if missing_keys:
            from entity.models import Love
            ids = [k.split(',') for k in missing_keys]
            love_ids = [int(love_id) for verb_id, love_id in ids]
            values = Love.objects.filter(id__in=love_ids).values_list(
                'id', 'user_id', 'created_at', 'entity_id', 'influencer_id')
            for value_tuple in values:
                love_id = int(value_tuple[0])
                user_id, created_at, entity_id, influencer_id = value_tuple[1:]

                # influencer_id can sometimes be none
                if influencer_id:
                    influencer_id = int(influencer_id)

                love = Love(user_id=int(user_id),
                            created_at=created_at,
                            entity_id=entity_id,
                            id=love_id,
                            influencer_id=influencer_id)
                activity = love.create_activity()

                serializer = LoveActivitySerializer()
                serialized_activity = serializer.dumps(activity)
                key = ','.join(map(str, [LoveVerb.id, love_id]))
                database_results[key] = serialized_activity

        return database_results
Пример #3
0
 def set_item_cache(cls, activity):
     '''
     Called outside the normal add cycle to make sure we only do this once
     during a fanout event
     '''
     key = activity.serialization_id
     serializer = LoveActivitySerializer()
     value = serializer.dumps(activity)
     item_cache = LoveFeedItemCache('global')
     item_cache.set(key, value)
Пример #4
0
 def set_item_cache(cls, activity):
     '''
     Called outside the normal add cycle to make sure we only do this once
     during a fanout event
     '''
     key = activity.serialization_id
     serializer = LoveActivitySerializer()
     value = serializer.dumps(activity)
     item_cache = LoveFeedItemCache('global')
     item_cache.set(key, value)
    def loads(self, serialized_aggregated):
        try:
            serialized_aggregated = serialized_aggregated[2:]
            parts = serialized_aggregated.split(';;')
            # start with the group
            group = parts[0]
            aggregated = self.aggregated_class(group)

            # get the date and activities
            date_dict = dict(zip(self.date_fields, parts[1:5]))
            for k, v in date_dict.items():
                date_value = None
                if v != '-1':
                    date_value = epoch_to_datetime(float(v))
                setattr(aggregated, k, date_value)

            # write the activities
            serializations = parts[5].split(';')
            activities = [LoveActivitySerializer.loads(self, s)
                          for s in serializations]
            aggregated.activities = activities

            # write the minimized activities
            minimized = int(parts[6])
            aggregated.minimized_activities = minimized

            return aggregated
        except Exception, e:
            msg = unicode(e)
            raise SerializationException(msg)
    def dumps(self, aggregated):
        #start by storing the group
        parts = [aggregated.group]
        check_reserved(aggregated.group, [';;'])

        #store the dates
        for date_field in self.date_fields:
            value = getattr(aggregated, date_field)
            epoch = datetime_to_epoch(value) if value is not None else -1
            parts += [epoch]

        # add the activities serialization
        serialized_activities = []
        for activity in aggregated.activities:
            serialized = LoveActivitySerializer.dumps(self, activity)
            check_reserved(serialized, [';', ';;'])
            serialized_activities.append(serialized)

        serialized_activities_part = ';'.join(serialized_activities)
        parts.append(serialized_activities_part)

        # add the minified activities
        parts.append(aggregated.minimized_activities)

        # stick everything together
        serialized_aggregated = ';;'.join(map(str, parts))
        serialized = '%s%s' % (self.identifier, serialized_aggregated)
        return serialized
    def loads(self, serialized_aggregated):
        try:
            serialized_aggregated = serialized_aggregated[2:]
            parts = serialized_aggregated.split(';;')
            # start with the group
            group = parts[0]
            aggregated = self.aggregated_class(group)

            # get the date and activities
            date_dict = dict(zip(self.date_fields, parts[1:5]))
            for k, v in date_dict.items():
                date_value = None
                if v != '-1':
                    date_value = epoch_to_datetime(float(v))
                setattr(aggregated, k, date_value)

            # write the activities
            serializations = parts[5].split(';')
            activities = [
                LoveActivitySerializer.loads(self, s) for s in serializations
            ]
            aggregated.activities = activities

            # write the minimized activities
            minimized = int(parts[6])
            aggregated.minimized_activities = minimized

            return aggregated
        except Exception, e:
            msg = unicode(e)
            raise SerializationException(msg)
    def dumps(self, aggregated):
        #start by storing the group
        parts = [aggregated.group]
        check_reserved(aggregated.group, [';;'])

        #store the dates
        for date_field in self.date_fields:
            value = getattr(aggregated, date_field)
            epoch = datetime_to_epoch(value) if value is not None else -1
            parts += [epoch]

        # add the activities serialization
        serialized_activities = []
        for activity in aggregated.activities:
            serialized = LoveActivitySerializer.dumps(self, activity)
            check_reserved(serialized, [';', ';;'])
            serialized_activities.append(serialized)

        serialized_activities_part = ';'.join(serialized_activities)
        parts.append(serialized_activities_part)

        # add the minified activities
        parts.append(aggregated.minimized_activities)

        # stick everything together
        serialized_aggregated = ';;'.join(map(str, parts))
        serialized = '%s%s' % (self.identifier, serialized_aggregated)
        return serialized
 def loads(self, serialized_aggregated):
     aggregated_kwargs = serialized_aggregated.__dict__.copy()
     serializations = pickle.loads(aggregated_kwargs.pop('aggregated_activities'))
     aggregated = self.aggregated_class(aggregated_kwargs.pop('group'))
     aggregated.__dict__.update(aggregated_kwargs)
     activities = [LoveActivitySerializer.loads(self, s)
                   for s in serializations]
     aggregated.activities = activities
     return aggregated
Пример #10
0
 def test_love_activity_serializer(self):
     love_serializer = LoveActivitySerializer()
     self._test_activity_serializer(love_serializer)