コード例 #1
0
    def transform(self, record):
        document = {}

        for field_name, field in self.fields.items():
            data = None
            try:
                if field.attribute is None:
                    if field.solr_field.dynamic:
                        value = getattr(
                            self, 'transform_%s' %
                            field.solr_field.display_name(field_name))(record)
                        data = ((field_name, value), )
                    else:
                        value = getattr(self,
                                        'transform_%s' % field_name)(record)
                        data = ((field_name, value), )
                else:
                    value = record
                    for name in field.attribute.split('.'):
                        if value is None:
                            raise AttributeError(
                                'Record: %s does not contain: %s currently trying to get: %s'
                                % (record, field.attribute, name))
                        value = get_attribute_or_callable(value, name)
                    data = ((field_name, value), )
            except AttributeError:
                if not field.optional:
                    raise
            else:
                if data:
                    for name, value in data:
                        if value:
                            document[name] = value
        return document
コード例 #2
0
ファイル: indexer.py プロジェクト: pbs-education/sunburnt
    def transform(self, record):
        document = {}

        for field_name, field in self.fields.items():
            data = None
            try:
                if field.attribute is None:
                    if field.solr_field.dynamic:
                        if field_name.endswith('_1_TO_X'):
                            field_name = field_name.replace('_1_TO_X', '%s')
                            items = getattr(self, 'transform_%s' % (field_name % ''))(record)
                            data = [ (field_name % ('_%s' % x), y) for x, y in items.items() ]
                        else:
                            value = getattr(self, 'transform_%s' % field.solr_field.display_name(field_name))(record)
                            data = ((field_name, value),)
                    else:
                        value = getattr(self, 'transform_%s' % field_name)(record)
                        data = ((field_name, value),)
                else:
                    value = record
                    for name in field.attribute.split('.'):
                        if value is None:
                            raise AttributeError('Record: `%s` does not contain: `%s` currently trying to get: `%s`' % (record, field.attribute, name))
                        value = get_attribute_or_callable(value, name)
                    data = ((field_name, value),)
            except AttributeError:
                if not field.optional:
                    raise
            else:
                if data:
                    for name, value in data:
                        if value:
                            document[name] = value
        return document
コード例 #3
0
ファイル: indexer.py プロジェクト: WiserTogether/sunburnt
    def transform(self, record):
        document = {}

        for field_name, field in self.fields.items():
            data = None
            try:
                if field.attribute is None:
                    if field.solr_field.dynamic:
                        value = getattr(
                            self,
                            'transform_%s' % field.solr_field.display_name(field_name)
                        )(record)
                        data = ((field_name, value),)
                    else:
                        value = getattr(self, 'transform_%s' % field_name)(record)
                        data = ((field_name, value),)
                else:
                    value = record
                    for name in field.attribute.split('.'):
                        if value is None:
                            raise AttributeError(
                                'Record: %s does not contain: %s currently trying to get: %s' % (
                                    record,
                                    field.attribute,
                                    name
                                ))
                        value = get_attribute_or_callable(value, name)
                    data = ((field_name, value),)
            except AttributeError:
                if not field.optional:
                    raise
            else:
                if data:
                    for name, value in data:
                        if value:
                            document[name] = value
        return document