Example #1
0
    def saveItem(self, item):
        links = item.pop('links', [])
        identifiers = item.pop('identifiers', [])
        rights = item.pop('rights', [])
        newItem = Item(**item)

        # Set Links
        newItem.links = SFRRecordManager.setPipeDelimitedData(
            links, ['url', 'media_type', 'flags'],
            Link,
            dParser=SFRRecordManager.parseLinkFlags)

        # Set Identifiers
        newItem.identifiers = SFRRecordManager.setPipeDelimitedData(
            identifiers, ['identifier', 'authority'], Identifier)

        # Set Rights
        newItem.rights = SFRRecordManager.setPipeDelimitedData(
            rights if isinstance(rights, list) else [rights], [
                'source', 'license', 'rights_reason', 'rights_statement',
                'rights_date'
            ],
            Rights,
            dParser=lambda x: dict(
                list(filter(lambda y: y[1] != '', x.items()))))

        # Set Contributors
        newItem.contributors = self.agentParser(
            item['contributors'], ['name', 'viaf', 'lcnaf', 'role'])

        return newItem