Skip to content

Commit c79da1c

Browse files
Merge branch 'refs/heads/develop' into feature/femcare-import
2 parents dbac683 + 8af01f9 commit c79da1c

37 files changed

+146
-198
lines changed

install/4_data_type.sql

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -193,38 +193,6 @@ INSERT INTO model.link (property_code, range_id, domain_id) VALUES
193193
('P127', (SELECT id FROM model.entity WHERE name='Human remains' AND cidoc_class_code = 'E55'), (SELECT id FROM model.entity WHERE name='Upper Body')),
194194
('P127', (SELECT id FROM model.entity WHERE name='Human remains' AND cidoc_class_code = 'E55'), (SELECT id FROM model.entity WHERE name='Lower Body'));
195195

196-
INSERT INTO model.entity (cidoc_class_code, openatlas_class_name, name, description) VALUES
197-
('E53', 'administrative_unit', 'Administrative unit', 'Hierarchy of administrative units like "Austria", "Germany", "Italy" and their respective subunits like "Lower Austria", "Styria" and their subunits etc.'),
198-
('E53', 'administrative_unit', 'Austria', Null),
199-
('E53', 'administrative_unit', 'Wien', Null),
200-
('E53', 'administrative_unit', 'Niederösterreich', Null),
201-
('E53', 'administrative_unit', 'Germany', Null),
202-
('E53', 'administrative_unit', 'Italy', Null),
203-
('E53', 'administrative_unit', 'Czech Republic', Null),
204-
('E53', 'administrative_unit', 'Slovakia', Null),
205-
('E53', 'administrative_unit', 'Slovenia', Null);
206-
INSERT INTO model.link (property_code, range_id, domain_id) VALUES
207-
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Austria')),
208-
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Italy')),
209-
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Germany')),
210-
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Czech Republic')),
211-
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Slovakia')),
212-
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Slovenia')),
213-
('P89', (SELECT id FROM model.entity WHERE name='Austria'), (SELECT id FROM model.entity WHERE name='Wien')),
214-
('P89', (SELECT id FROM model.entity WHERE name='Austria'), (SELECT id FROM model.entity WHERE name='Niederösterreich'));
215-
216-
INSERT INTO model.entity (cidoc_class_code, openatlas_class_name, name, description) VALUES
217-
('E53', 'administrative_unit', 'Historical place', 'Hierarchy of historical places respectively historical administrative units like: Duchy of Bavaria, Lombard Kingdom etc.'),
218-
('E53', 'administrative_unit', 'Carantania', Null),
219-
('E53', 'administrative_unit', 'Marcha Orientalis', Null),
220-
('E53', 'administrative_unit', 'Comitatus Iauntal', Null),
221-
('E53', 'administrative_unit', 'Kingdom of Serbia', Null);
222-
INSERT INTO model.link (property_code, range_id, domain_id) VALUES
223-
('P89', (SELECT id FROM model.entity WHERE name='Historical place'), (SELECT id FROM model.entity WHERE name='Carantania')),
224-
('P89', (SELECT id FROM model.entity WHERE name='Historical place'), (SELECT id FROM model.entity WHERE name='Marcha Orientalis')),
225-
('P89', (SELECT id FROM model.entity WHERE name='Historical place'), (SELECT id FROM model.entity WHERE name='Comitatus Iauntal')),
226-
('P89', (SELECT id FROM model.entity WHERE name='Historical place'), (SELECT id FROM model.entity WHERE name='Kingdom of Serbia'));
227-
228196
INSERT INTO model.entity (cidoc_class_code, openatlas_class_name, name) VALUES
229197
('E55', 'type', 'Source translation'),
230198
('E55', 'type', 'Original Text'),
@@ -340,7 +308,6 @@ INSERT INTO model.link (property_code, domain_id, range_id) VALUES
340308
INSERT INTO web.hierarchy (id, name, category, multiple, directional) VALUES
341309
((SELECT id FROM model.entity WHERE name='Actor function'), 'Actor function', 'standard', False, False),
342310
((SELECT id FROM model.entity WHERE name='Actor relation'), 'Actor relation', 'standard', False, True),
343-
((SELECT id FROM model.entity WHERE name='Administrative unit'), 'Administrative unit', 'place', True, False),
344311
((SELECT id FROM model.entity WHERE name='Artifact'), 'Artifact', 'standard', False, False),
345312
((SELECT id FROM model.entity WHERE name='Bibliography'), 'Bibliography', 'standard', False, False),
346313
((SELECT id FROM model.entity WHERE name='Dimensions'), 'Dimensions', 'value', True, False),
@@ -350,7 +317,6 @@ INSERT INTO web.hierarchy (id, name, category, multiple, directional) VALUES
350317
((SELECT id FROM model.entity WHERE name='External reference match'), 'External reference match', 'system', False, False),
351318
((SELECT id FROM model.entity WHERE name='Feature'), 'Feature', 'standard', False, False),
352319
((SELECT id FROM model.entity WHERE name='Features for sexing'), 'Features for sexing', 'tools', False, False),
353-
((SELECT id FROM model.entity WHERE name='Historical place'), 'Historical place', 'place', True, False),
354320
((SELECT id FROM model.entity WHERE name='Human remains' AND cidoc_class_code = 'E55'), 'Human remains', 'standard', False, False),
355321
((SELECT id FROM model.entity WHERE name='Involvement'), 'Involvement', 'standard', False, False),
356322
((SELECT id FROM model.entity WHERE name='License'), 'License', 'standard', False, False),
@@ -386,7 +352,6 @@ INSERT INTO model.openatlas_class (name, cidoc_class_code, new_types_allowed, wr
386352
('stratigraphic_unit', 'E18', true, 'contributor', (SELECT id FROM model.entity WHERE name = 'Stratigraphic unit' AND cidoc_class_code = 'E55' ORDER BY id ASC LIMIT 1));
387353

388354
INSERT INTO web.hierarchy_openatlas_class (hierarchy_id, openatlas_class_name) VALUES
389-
((SELECT id FROM web.hierarchy WHERE name='Administrative unit'), 'place'),
390355
((SELECT id FROM web.hierarchy WHERE name='Artifact'), 'artifact'),
391356
((SELECT id FROM web.hierarchy WHERE name='Bibliography'), 'bibliography'),
392357
((SELECT id FROM web.hierarchy WHERE name='Dimensions'), 'artifact'),
@@ -398,7 +363,6 @@ INSERT INTO web.hierarchy_openatlas_class (hierarchy_id, openatlas_class_name) V
398363
((SELECT id FROM web.hierarchy WHERE name='Event'), 'production'),
399364
((SELECT id FROM web.hierarchy WHERE name='External reference'), 'external_reference'),
400365
((SELECT id FROM web.hierarchy WHERE name='Feature'), 'feature'),
401-
((SELECT id FROM web.hierarchy WHERE name='Historical place'), 'place'),
402366
((SELECT id FROM web.hierarchy WHERE name='Human remains'), 'human_remains'),
403367
((SELECT id FROM web.hierarchy WHERE name='License'), 'file'),
404368
((SELECT id FROM web.hierarchy WHERE name='Place'), 'place'),

install/data_test.sql

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,21 @@ UPDATE web.settings SET value = 'https://frontend-demo.openatlas.eu/entity/' WHE
4040
INSERT INTO web.hierarchy_openatlas_class (hierarchy_id, openatlas_class_name) VALUES
4141
((SELECT id FROM web.hierarchy WHERE name='Dimensions'), 'place');
4242

43+
-- Custom place hierarchy: Administrative Unit
44+
INSERT INTO model.entity (cidoc_class_code, openatlas_class_name, name, description) VALUES
45+
('E53', 'administrative_unit', 'Administrative unit', 'Hierarchy of administrative units'),
46+
('E53', 'administrative_unit', 'Austria', Null),
47+
('E53', 'administrative_unit', 'Wien', Null),
48+
('E53', 'administrative_unit', 'Italy', Null);
49+
50+
INSERT INTO model.link (property_code, range_id, domain_id) VALUES
51+
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Austria')),
52+
('P89', (SELECT id FROM model.entity WHERE name='Administrative unit'), (SELECT id FROM model.entity WHERE name='Italy')),
53+
('P89', (SELECT id FROM model.entity WHERE name='Austria'), (SELECT id FROM model.entity WHERE name='Wien'));
54+
55+
INSERT INTO web.hierarchy (id, name, category, multiple, directional) VALUES
56+
((SELECT id FROM model.entity WHERE name='Administrative unit'), 'Administrative unit', 'place', True, False);
57+
58+
INSERT INTO web.hierarchy_openatlas_class (hierarchy_id, openatlas_class_name) VALUES
59+
((SELECT id FROM web.hierarchy WHERE name='Administrative unit'), 'place');
60+

openatlas/api/endpoints/endpoint.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ def get_linked_places_entity(self, _id: int) -> dict[str, Any]:
380380
feature['depictions'] = get_lp_file(entity)
381381
else:
382382
feature['depictions'] = [
383-
get_lp_file(link.domain) for link in links_inverse
383+
get_lp_file(link.domain, entity) for link in links_inverse
384384
if link.domain.class_.name == 'file']
385385
return {
386386
'type': 'FeatureCollection',

openatlas/api/formats/linked_places.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,15 @@ def get_lp_time(entity: Entity | Link) -> Optional[dict[str, Any]]:
7878
'comment': entity.dates.end_comment}}
7979

8080

81-
def get_lp_file(file: Entity) -> dict[str, Any]:
81+
def get_lp_file(
82+
file: Entity,
83+
entity: Optional[Entity] = None) -> dict[str, Any]:
8284
url = 'N/A'
8385
mime_type = None
8486
if path := get_file_path(file.id):
8587
url = url_for('api.display', filename=path.stem, _external=True)
8688
mime_type, _ = mimetypes.guess_type(path)
89+
main_image = entity.get_profile_image_id() == file.id if entity else False
8790
data = {
8891
'@id': url_for('api.entity', id_=file.id, _external=True),
8992
'title': file.name,
@@ -92,6 +95,7 @@ def get_lp_file(file: Entity) -> dict[str, Any]:
9295
'licenseHolder': file.license_holder,
9396
'publicShareable': file.public,
9497
'mimetype': mime_type,
98+
'mainImage': main_image,
9599
'url': url}
96100
data.update(get_iiif_manifest_and_path(file.id))
97101
return data

openatlas/api/formats/presentation_view.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ def get_file_dict(
6666
'publicShareable': link.domain.public,
6767
'mimetype': mime_type,
6868
'fromSuperEntity': root,
69-
'url': url}
69+
'url': url,
70+
'mainImage': link.range.get_profile_image_id() == link.domain.id}
7071
data.update(get_iiif_manifest_and_path(link.domain.id))
7172
if overlay:
7273
data.update({'overlay': overlay.bounding_box})

openatlas/api/openapi.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"info": {
44
"title": "OpenAtlas API",
55
"description": "An API that allows user to access data from an OpenAtlas instance.",
6-
"version": "0.4.12a",
6+
"version": "0.4.12b",
77
"contact": {
88
"name": "OpenAtlas",
99
"url": "https://openatlas.eu",
@@ -5399,6 +5399,9 @@
53995399
},
54005400
"IIIFManifest": {
54015401
"type": "string"
5402+
},
5403+
"mainImage": {
5404+
"type": "boolean"
54025405
}
54035406
}
54045407
}

openatlas/api/resources/templates.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ def linked_places_template(parser: Parser) -> dict[str, Type[String]]:
9898
'url': fields.String,
9999
'mimetype': fields.String,
100100
'IIIFBasePath': fields.String,
101-
'IIIFManifest': fields.String}
101+
'IIIFManifest': fields.String,
102+
'mainImage': fields.Boolean,}
102103
links = {
103104
'referenceURL': fields.String,
104105
'id': fields.String,
@@ -228,6 +229,7 @@ def presentation_template() -> dict[str, Any]:
228229
'fromSuperEntity': fields.Boolean,
229230
'IIIFManifest': fields.String,
230231
'IIIFBasePath': fields.String,
232+
'mainImage': fields.Boolean,
231233
'overlay': fields.String}
232234
relation_types = {
233235
'property': fields.String,

openatlas/display/display.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def get_type_data(self) -> dict[str, Any]:
5353
if self.entity.standard_type \
5454
and type_.id == self.entity.standard_type.id:
5555
continue # Standard type is already included
56-
title = " > ".join([g.types[i].name for i in type_.root])
56+
title = ' > '.join([g.types[i].name for i in type_.root])
5757
html = f'<span title="{title}">{link(type_)}</span>'
5858
if type_.category == 'value':
5959
html += f' {float(value):g} {type_.description or ''}'

openatlas/forms/add_fields.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -200,17 +200,18 @@ def add_relations(
200200
'name_inverse',
201201
StringField(_('inverse')))
202202
else: # It's a root type (hierarchy)
203-
if entity.category == 'custom':
203+
if entity.category in ('custom', 'place'):
204204
form.multiple = BooleanField(
205205
_('multiple'),
206206
description=_('tooltip hierarchy multiple'))
207-
# noinspection PyTypeChecker
208-
form.classes = SelectMultipleField(
209-
_('classes'),
210-
description=_('tooltip hierarchy forms'),
211-
choices=Entity.get_class_choices(entity),
212-
option_widget=widgets.CheckboxInput(),
213-
widget=widgets.ListWidget(prefix_label=False))
207+
if entity.category in ('custom', 'value'):
208+
# noinspection PyTypeChecker
209+
form.classes = SelectMultipleField(
210+
_('classes'),
211+
description=_('tooltip hierarchy forms'),
212+
choices=Entity.get_class_choices(entity),
213+
option_widget=widgets.CheckboxInput(),
214+
widget=widgets.ListWidget(prefix_label=False))
214215
elif relation.multiple:
215216
selection: Any = []
216217
if entity.id:
@@ -288,11 +289,9 @@ def selection_available(
288289
def add_date_fields(
289290
form_class: Any,
290291
item: Optional[Entity | Link] = None) -> None:
291-
if item \
292-
and isinstance(item, Entity) \
293-
and item.class_.group['name'] == 'type' \
294-
and not item.root:
295-
return
292+
if isinstance(item, Entity) and item.class_.group['name'] == 'type' and (
293+
(item.id and not item.root) or (not item.id and item.category)):
294+
return # No dates because it's a type hierarchy
296295
validator_second = [OptionalValidator(), NumberRange(min=0, max=59)]
297296
validator_minute = [OptionalValidator(), NumberRange(min=0, max=59)]
298297
validator_hour = [OptionalValidator(), NumberRange(min=0, max=23)]

openatlas/forms/display.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,6 @@ def html_form(
5555
continue
5656
if field.type in ['TreeField', 'TreeMultiField', 'ValueTypeRootField']:
5757
type_ = g.types[field.type_id]
58-
if not type_.subs:
59-
continue
6058
label = type_.name
6159
if type_.category == 'standard' and type_.name != 'License':
6260
label = _('type')

0 commit comments

Comments
 (0)