Skip to content

Iiif

GalleryIIIFPlugin

Bases: SingletonPlugin

Implements the basic image field The URL of an image is present in a text field.

Source code in ckanext/gallery/plugins/iiif.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class GalleryIIIFPlugin(SingletonPlugin):
    """
    Implements the basic image field The URL of an image is present in a text field.
    """

    implements(IGalleryImage)

    def image_info(self):
        """

        :returns: If resource type is set, only dataset of that type will be available

        """
        return {
            'title': 'IIIF',
            'resource_type': toolkit.config.get(
                'ckanext.gallery.iiif.resource_types', 'csv tsv'
            ).split(' '),
            'field_type': ['text'],
        }

    def get_images(self, field_value, record, data_dict):
        """
        Get images from field value and returns them as a list of dicts specifying just
        the href.

        :param field_value: the value of the record's image field
        :param record: the record dict itself
        :param data_dict: relevant data in a dict, currently we only use the
            resource_view contained within
        :returns: a list of dicts
        """

        images = []

        # retrieve the delimiter if there is one
        delimiter = data_dict['resource_view'].get('image_delimiter', None)
        if delimiter:
            # split the text by the delimiter if we have one
            raw_images = field_value.split(delimiter)
        else:
            raw_images = [field_value]

        title_field = data_dict['resource_view'].get('image_title', None)

        for image in raw_images:
            title = record.get(title_field)
            image_base_url = image.strip().strip('/')

            if not image_base_url:
                continue

            images.append(
                {
                    'href': f'{image_base_url}',
                    'thumbnail': f'{image_base_url}/thumbnail',
                    'download': f'{image_base_url}/original',
                    'link': toolkit.url_for(
                        'record.view',
                        package_name=data_dict['package']['name'],
                        resource_id=data_dict['resource']['id'],
                        record_id=record['_id'],
                    ),
                    'description': title,
                    'title': title,
                    'record_id': record['_id'],
                }
            )

        return images

get_images(field_value, record, data_dict)

Get images from field value and returns them as a list of dicts specifying just the href.

Parameters:

Name Type Description Default
field_value

the value of the record's image field

required
record

the record dict itself

required
data_dict

relevant data in a dict, currently we only use the resource_view contained within

required

Returns:

Type Description

a list of dicts

Source code in ckanext/gallery/plugins/iiif.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def get_images(self, field_value, record, data_dict):
    """
    Get images from field value and returns them as a list of dicts specifying just
    the href.

    :param field_value: the value of the record's image field
    :param record: the record dict itself
    :param data_dict: relevant data in a dict, currently we only use the
        resource_view contained within
    :returns: a list of dicts
    """

    images = []

    # retrieve the delimiter if there is one
    delimiter = data_dict['resource_view'].get('image_delimiter', None)
    if delimiter:
        # split the text by the delimiter if we have one
        raw_images = field_value.split(delimiter)
    else:
        raw_images = [field_value]

    title_field = data_dict['resource_view'].get('image_title', None)

    for image in raw_images:
        title = record.get(title_field)
        image_base_url = image.strip().strip('/')

        if not image_base_url:
            continue

        images.append(
            {
                'href': f'{image_base_url}',
                'thumbnail': f'{image_base_url}/thumbnail',
                'download': f'{image_base_url}/original',
                'link': toolkit.url_for(
                    'record.view',
                    package_name=data_dict['package']['name'],
                    resource_id=data_dict['resource']['id'],
                    record_id=record['_id'],
                ),
                'description': title,
                'title': title,
                'record_id': record['_id'],
            }
        )

    return images

image_info()

Returns:

Type Description

If resource type is set, only dataset of that type will be available

Source code in ckanext/gallery/plugins/iiif.py
19
20
21
22
23
24
25
26
27
28
29
30
31
def image_info(self):
    """

    :returns: If resource type is set, only dataset of that type will be available

    """
    return {
        'title': 'IIIF',
        'resource_type': toolkit.config.get(
            'ckanext.gallery.iiif.resource_types', 'csv tsv'
        ).split(' '),
        'field_type': ['text'],
    }