Exemple #1
0
    def add_names(self, data: dict, referrer=None, role=None, **kwargs):
        '''
		Based on the presence of `auth_name` and/or `name` fields in `data`, sets the
		`label`, `names`, and `identifier` keys to appropriate strings/`model.Identifier`
		values.

		If the `role` string is given (e.g. 'artist'), also sets the `role_label` key
		to a value (e.g. 'artist “RUBENS, PETER PAUL”').
		'''
        data.setdefault('identifiers', [])
        auth_name = data.get('auth_name', '')
        disp_name = data.get('auth_display_name')
        name_type = vocab.PrimaryName

        if disp_name:
            data['identifiers'].append(vocab.Name(ident='', content=auth_name))
            auth_name = disp_name
            name_type = vocab.Name

        role_label = None
        if self.acceptable_person_auth_name(auth_name):
            if role:
                role_label = f'{role} “{auth_name}”'
            data['label'] = auth_name
            pname = name_type(
                ident='', content=auth_name
            )  # NOTE: most of these are also vocab.SortName, but not 100%, so witholding that assertion for now
            if referrer:
                pname.referred_to_by = referrer
            data['identifiers'].append(pname)

        data.setdefault('names', [])

        names = []
        name = data.get('name')
        if name:
            del data[
                'name']  # this will be captured in the 'names' array, so remove it here so the output isn't duplicated
            names.append(name)
        variant_names = data.get('variant_names')
        if variant_names:
            names += [n.strip() for n in variant_names.split(';')]

        for name in names:
            if role and not role_label:
                role_label = f'{role} “{name}”'
            name_kwargs = {}
            # 			name_kwargs['classified_as'] = model.Type(ident='http://vocab.getty.edu/aat/300266386', label='Personal Name')
            name_kwargs['classified_as'] = vocab.PersonalName
            if referrer:
                name_kwargs['referred_to_by'] = [referrer]
            data['names'].append((name, name_kwargs))
            data.setdefault('label', name)
        data.setdefault('label', '(Anonymous)')

        if role and not role_label:
            role_label = f'anonymous {role}'

        if role:
            data['role_label'] = role_label
Exemple #2
0
    def model_term_group(record, data):
        record.setdefault('identifiers', [])

        pname = data.get('primary_name', '')
        sname = data.get('secondary_name', '')
        qual = data.get('name_qualifier')
        if pname and sname:
            name = f'{sname} {pname}'
        elif pname or sname:
            name = ''.join([pname, sname])
        else:
            return

        if qual:
            name += f' {qual}'

        record.setdefault('label', name)
        record['identifiers'].append(vocab.Name(ident='', content=name))
Exemple #3
0
    def model_term_group(record, data):
        record.setdefault('identifiers', [])
        name = data.get('term_name')
        state = data.get('state_province')
        # 		print(f'*** PLACE: {name}')

        country = data.get('country', {}).get('label')
        if state:
            parent = data.get('country')
            # 			print(f'*** STATE: {state}')
            state = {'name': state, 'label': state, 'type': 'state'}
            if country:
                state['uri'] = self.helper.named_place_uri(country, state),
                state['label'] = f'{state}, {country}'
            record['state'] = state

        if name:
            record.setdefault('label', name)
            record.setdefault('name', name)
            record['identifiers'].append(vocab.Name(ident='', content=name))
Exemple #4
0
    def __call__(self, data: dict, post_sale_map, unique_catalogs,
                 subject_genre, destruction_types_map):
        '''Add modeling for an object described by a sales record'''
        hmo = get_crom_object(data)
        parent = data['parent_data']
        auction_data = parent.get('auction_of_lot')
        if auction_data:
            lno = str(auction_data['lot_number'])
            data.setdefault('identifiers', [])
            if not lno:
                warnings.warn(f'Setting empty identifier on {hmo.id}')
            data['identifiers'].append(vocab.LotNumber(ident='', content=lno))
        else:
            warnings.warn(f'***** NO AUCTION DATA FOUND IN populate_object')

        cno = auction_data['catalog_number']
        lno = auction_data['lot_number']
        date = implode_date(auction_data, 'lot_sale_')
        lot = self.helper.shared_lot_number_from_lno(
            lno
        )  # the current key for this object; may be associated later with prev and post object keys
        now_key = (cno, lno, date)

        data['_locations'] = []
        data['_events'] = []
        record = self._populate_object_catalog_record(data, parent, lot, cno,
                                                      parent['pi_record_no'])
        self._populate_object_visual_item(data, subject_genre)
        self._populate_object_destruction(data, parent, destruction_types_map)
        self.populate_object_statements(data)
        self._populate_object_present_location(data, now_key,
                                               destruction_types_map)
        self._populate_object_notes(data, parent, unique_catalogs)
        self._populate_object_prev_post_sales(data, now_key, post_sale_map)
        for p in data.get('portal', []):
            url = p['portal_url']
            hmo.referred_to_by = vocab.WebPage(ident=url, label=url)

        if 'title' in data:
            title = data['title']
            if not hasattr(hmo, '_label'):
                typestring = data.get('object_type', 'Object')
                hmo._label = f'{typestring}: “{title}”'
            del data['title']
            shorter = truncate_with_ellipsis(title, 100)
            if shorter:
                description = vocab.Description(ident='', content=title)
                description.referred_to_by = record
                hmo.referred_to_by = description
                title = shorter
            t = vocab.PrimaryName(ident='', content=title)
            t.classified_as = model.Type(
                ident='http://vocab.getty.edu/aat/300417193', label='Title')
            t.referred_to_by = record
            data['identifiers'].append(t)

        for d in data.get('other_titles', []):
            title = d['title']
            t = vocab.Name(ident='', content=title)
            data['identifiers'].append(t)

        return data