/
asset.py
68 lines (49 loc) · 1.93 KB
/
asset.py
1
2
3
4
5
6
7
8
9
10
11
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
from .resource import FieldsResource
"""
contentful.asset
~~~~~~~~~~~~~~~~
This module implements the Asset class.
API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/assets
:copyright: (c) 2016 by Contentful GmbH.
:license: MIT, see LICENSE for more details.
"""
class Asset(FieldsResource):
"""
API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/assets
"""
def url(self, **kwargs):
"""Returns a formatted URL for the Asset's File
with serialized parameters.
Usage:
>>> my_asset.url()
"//images.contentful.com/spaces/foobar/..."
>>> my_asset.url(w=120, h=160)
"//images.contentful.com/spaces/foobar/...?w=120&h=160"
"""
if not hasattr(self, 'file') or not self.file:
return ""
url = self.file['url']
args = ['{0}={1}'.format(k, v) for k, v in kwargs.items()]
if args:
url += '?{0}'.format('&'.join(args))
return url
def incoming_references(self, client=None, query={}):
"""Fetches all entries referencing the asset
API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/search-parameters/links-to-asset
:param client Client instance
:param query: (optional) Dict with API options.
:return: List of :class:`Entry <contentful.entry.Entry>` objects.
:rtype: List of contentful.entry.Entry
Usage:
>>> entries = asset.incoming_references(client)
[<Entry[cat] id='happycat'>]
"""
if client is None:
return False
query.update({'links_to_asset': self.id})
return client.entries(query)
def __repr__(self):
return "<Asset id='{0}' url='{1}'>".format(
self.sys.get('id', ''),
self.url()
)