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