Generate and return a dictionary of default fields to be
        indexed for searching (e.g., in Solr).  Includes top-level
        object properties, Content Model URIs, and Dublin Core
        fields.

        This method is intended to be customized and extended in order
        to easily modify the fields that should be indexed for any
        particular type of object in any project; data returned from
        this method should be serializable as JSON (the current
        implementation uses :mod:`django.utils.simplejson`).

        This method was designed for use with :mod:`eulfedora.indexdata`.

def index_data(self):
        '''Generate and return a dictionary of default fields to be
        indexed for searching (e.g., in Solr).  Includes top-level
        object properties, Content Model URIs, and Dublin Core
        fields.

        This method is intended to be customized and extended in order
        to easily modify the fields that should be indexed for any
        particular type of object in any project; data returned from
        this method should be serializable as JSON (the current
        implementation uses :mod:`django.utils.simplejson`).

        This method was designed for use with :mod:`eulfedora.indexdata`.
        '''
        index_data = {
            'pid': self.pid,
            'label': self.label,
            'owner': self.owners,
            'state': self.state,
            'content_model': [force_text(cm) for cm in self.get_models()],  # convert URIRefs to strings
            }

        # date created/modified won't be set unless the object actually exists in Fedora
        # (probably the case for anything being indexed, except in tests)
        if self.exists:
            index_data.update({
                # last_modified and created are configured as date type in sample solr Schema
                # using isoformat here so they can be serialized via JSON
                'last_modified': self.modified.isoformat(),
                'created': self.created.isoformat(),
                # datastream ids
                'dsids': list(six.iterkeys(self.ds_list)),
            })

        index_data.update(self.index_data_descriptive())
        index_data.update(self.index_data_relations())

        return index_data