Skip to content

Commit 6f50091

Browse files
changed creator and license holder from str to Entity
1 parent 5be8365 commit 6f50091

10 files changed

Lines changed: 62 additions & 44 deletions

File tree

openatlas/api/endpoints/file.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ def get() -> Response | tuple[Any, int]:
8484
filename=path.stem,
8585
_external=True),
8686
'license': license_,
87-
'creator': ', '.join(entity.creator),
88-
'licenseHolder': ', '.join(entity.license_holder),
87+
'creator': ', '.join([rh.name for rh in entity.creator]),
88+
'licenseHolder': ', '.join([
89+
rh.name for rh in entity.license_holder]),
8990
'publicShareable': entity.public,
9091
'IIIFManifest': iiif_manifest}
9192
if parser['download']:
@@ -128,8 +129,9 @@ def get_file_dict(
128129
'id': entity.id,
129130
'title': entity.name,
130131
'license': get_license_name(entity),
131-
'creator': ', '.join(entity.creator),
132-
'licenseHolder': ', '.join(entity.license_holder),
132+
'creator': ', '.join([rh.name for rh in entity.creator]),
133+
'licenseHolder': ', '.join([
134+
rh.name for rh in entity.license_holder]),
133135
'publicShareable': entity.public,
134136
'mimetype': mime_type,
135137
'url': url}

openatlas/api/endpoints/iiif.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
from openatlas.api.endpoints.parser import Parser
1313
from openatlas.api.resources.api_entity import ApiEntity
14-
from openatlas.api.resources.error import DisplayFileNotFoundError, \
15-
IIIFMetadataNotFound
14+
from openatlas.api.resources.error import (DisplayFileNotFoundError,
15+
IIIFMetadataNotFound)
1616
from openatlas.api.resources.parser import iiif
1717
from openatlas.api.resources.util import get_license_name, get_license_url
1818
from openatlas.display.util import check_iiif_file_exist
@@ -167,7 +167,7 @@ def build_annotation(
167167
"@type": "dctypes:Text",
168168
"chars": annotation.text,
169169
"format": "text/plain"}
170-
],
170+
],
171171
"on": {
172172
"@type": "oa:SpecificResource",
173173
"full": url_for(
@@ -246,7 +246,8 @@ def get_manifest_version_2(id_: int, parser: Parser) -> dict[str, Any]:
246246
raise DisplayFileNotFoundError
247247
license_ = get_license_name(entity)
248248
if entity.license_holder:
249-
license_ = f'{license_}, {', '.join(entity.license_holder)}'
249+
license_ = f'{license_}, {', '.join([
250+
lh.name for lh in entity.license_holder])}'
250251
metadata = []
251252
if references := entity.get_links('P67', inverse=True):
252253
for reference in references:
@@ -259,9 +260,10 @@ def get_manifest_version_2(id_: int, parser: Parser) -> dict[str, Any]:
259260
"label": _('source').capitalize(),
260261
"value": f"<a href={url} target=_blank>{text}</a>"})
261262
if entity.creator:
262-
metadata.append({
263-
"label": _('creator').capitalize(),
264-
"value": entity.creator})
263+
for c in entity.creator:
264+
metadata.append({
265+
"label": _('creator').capitalize(),
266+
"value": c.name})
265267
see_also = []
266268
if related_entities := entity.get_links('P67'):
267269
for related_entity in related_entities:

openatlas/api/external/arche.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,16 +142,26 @@ def add_arche_file_metadata_to_graph(
142142
if metadata.license:
143143
graph.add((subject_uri, ACDH.hasLicense, URIRef(metadata.license)))
144144

145+
# todo: add role, person or organization
145146
if metadata.licensors:
146-
ensure_person_exist(graph, metadata.licensors)
147-
for uri in create_uri(metadata.licensors):
147+
names = [e.name for e in metadata.licensors]
148+
ensure_person_exist(graph, names)
149+
for uri in create_uri(names):
148150
graph.add((subject_uri, ACDH.hasLicensor, uri))
149151

150152
if metadata.rights_holders:
151-
ensure_person_exist(graph, metadata.rights_holders)
152-
for uri in create_uri(metadata.rights_holders):
153+
names = [e.name for e in metadata.rights_holders]
154+
ensure_person_exist(graph, names)
155+
for uri in create_uri(names):
153156
graph.add((subject_uri, ACDH.hasRightsHolder, uri))
154157

158+
if metadata.creators:
159+
names = [e.name for e in metadata.creators]
160+
ensure_person_exist(graph, names)
161+
for uri in create_uri(names):
162+
graph.add((subject_uri, ACDH.hasCreator, uri))
163+
164+
155165
if metadata.is_part_of:
156166
graph.add((subject_uri, ACDH.isPartOf, URIRef(metadata.is_part_of)))
157167

@@ -200,11 +210,6 @@ def add_arche_file_metadata_to_graph(
200210
ACDH.hasBinarySize,
201211
Literal(metadata.binary_size, datatype=XSD.integer)))
202212

203-
if metadata.creators:
204-
ensure_person_exist(graph, metadata.creators)
205-
for uri in create_uri(metadata.creators):
206-
graph.add((subject_uri, ACDH.hasCreator, uri))
207-
208213
if metadata.metadata_creators:
209214
ensure_person_exist(graph, metadata.metadata_creators)
210215
for uri in create_uri(metadata.metadata_creators):

openatlas/api/external/arche_class.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ class ArcheFileMetadata:
1414
titles: list[tuple[str, str]]
1515
depositors: str | list[str] | None = None
1616
license: str | None = None
17-
licensors: str | list[str] | None = None
17+
licensors: list[Entity] | None = None
18+
rights_holders: list[Entity] | None = None
19+
creators: list[Entity] | None = None
1820
metadata_creators: str | list[str] | None = None
19-
rights_holders: str | list[str] | None = None
2021
is_part_of: str | None = None
2122
accepted_date: str | None = None
2223
curators: str | list[str] | None = None
@@ -26,7 +27,6 @@ class ArcheFileMetadata:
2627
related_disciplines: str | list[str] | None = None
2728
transfer_date: str | None = None
2829
binary_size: int | None = None
29-
creators: str | list[str] | None = None
3030
actors: list[dict[str, str | list[str]]] | None = None
3131
spatial_coverages: list[dict[str, str | list[str]]] | None = None
3232
has_publications: list[tuple[Entity, str]] | None = None

openatlas/api/formats/linked_places.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ def get_lp_file(
9191
'@id': url_for('api.entity', id_=file.id, _external=True),
9292
'title': file.name,
9393
'license': get_license_name(file),
94-
'creator': ', '.join(file.creator),
95-
'licenseHolder': ', '.join(file.license_holder),
94+
'creator': ', '.join([rh.name for rh in file.creator]),
95+
'licenseHolder': ', '.join([rh.name for rh in file.creator]),
9696
'publicShareable': file.public,
9797
'mimetype': mime_type,
9898
'mainImage': main_image,

openatlas/api/formats/loud.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ def get_digital_object_details(
5858
for license_holder in entity.license_holder:
5959
digital_object.update({
6060
'right_held_by': [{
61-
'_label': license_holder,
61+
'_label': license_holder.name,
6262
'type': 'Actor'}]})
6363
if entity.creator:
6464
for creator in entity.creator:
6565
digital_object.update({'created_by': [{
6666
'_label': f'Creation of {entity.name}',
6767
'type': 'Creation',
6868
'carried_out_by': [{
69-
'_label': creator,
69+
'_label': creator.name,
7070
'type': 'Actor'}]}]})
7171
if license_ := get_license_type(entity):
7272
subject_to: dict[str, Any] = {

openatlas/api/formats/presentation_view.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ def get_file_dict(
6161
'id': link.domain.id,
6262
'title': link.domain.name,
6363
'license': get_license_name(link.domain),
64-
'creator': ', '.join(link.domain.creator),
65-
'licenseHolder': ', '.join(link.domain.license_holder),
64+
'creator': ', '.join([rh.name for rh in link.domain.creator]),
65+
'licenseHolder': ', '.join([
66+
rh.name for rh in link.domain.license_holder]),
6667
'publicShareable': link.domain.public,
6768
'mimetype': mime_type,
6869
'fromSuperEntity': root,

openatlas/api/formats/subunits.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ def get_file(data: dict[str, Any]) -> list[dict[str, Any]]:
145145
'name': link.domain.name,
146146
'fileName': path.name if path else None,
147147
'license': get_license_name(link.domain),
148-
'creator': ', '.join(link.domain.creator),
149-
'licenseHolder': ', '.join(link.domain.license_holder),
148+
'creator': ', '.join([rh.name for rh in link.domain.creator]),
149+
'licenseHolder': ', '.join([
150+
rh.name for rh in link.domain.license_holder]),
150151
'publicShareable': link.domain.public,
151152
'source': link.domain.description or None})
152153
if data['parser']['format'] == 'xml':

openatlas/display/display.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ def get_buttons(
230230
_('move entities'),
231231
url_for('change_type', id_=self.entity.id)))
232232
case 'remove_reference_system_class' \
233-
if not items and is_authorized('manager'):
233+
if not items and is_authorized('manager'):
234234
buttons.append(
235235
button(
236236
_('remove'),
@@ -414,15 +414,19 @@ def add_data(self) -> None:
414414
self.data.update(self.get_type_data())
415415
for name, attribute in self.entity.class_.attributes.items():
416416
if name in ['creator', 'license_holder']:
417+
link_ = link(
418+
f'+ {name}',
419+
url_for(
420+
'rights_holder_insert',
421+
origin_id=self.entity.id,
422+
relation=name))
423+
html = f'{link_}'
417424
if value := getattr(self.entity, name):
418-
link_ = link(
419-
f'+ {name}',
420-
url_for(
421-
'rights_holder_insert',
422-
origin_id=self.entity.id,
423-
relation=name))
424-
html = f'{link_}<br>{str('<br>'.join(value))}'
425-
self.data[attribute['label']] = html
425+
entries = [
426+
link(rh, url_for('rights_holder_view', id_=rh.id))
427+
for rh in value]
428+
html += f'<br>{str('<br>'.join(entries))}'
429+
self.data[attribute['label']] = html
426430
if name in ['example_id', 'public', 'resolver_url', 'website_url']:
427431
if value := getattr(self.entity, name):
428432
if isinstance(value, bool):

openatlas/models/entity.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,13 @@ def __init__(self, data: dict[str, Any]) -> None:
7373
self.license_holder = []
7474
if self.id in g.file_info:
7575
self.public = g.file_info[self.id]['public']
76-
self.creator = [
77-
c.name for c in g.file_info[self.id]['creator']]
78-
self.license_holder = [
79-
lh.name for lh in g.file_info[self.id]['license_holder']]
76+
# todo: remove old code if everything works
77+
# self.creator = [
78+
# c.name for c in g.file_info[self.id]['creator']]
79+
# self.license_holder = [
80+
# lh.name for lh in g.file_info[self.id]['license_holder']]
81+
self.creator = g.file_info[self.id]['creator']
82+
self.license_holder = g.file_info[self.id]['license_holder']
8083
if self.class_.name == 'reference_system' and 'website_url' in data:
8184
self.website_url = data['website_url']
8285
self.resolver_url = data['resolver_url']

0 commit comments

Comments
 (0)