contentstack-management 1.10.2__tar.gz → 1.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/PKG-INFO +1 -1
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/__init__.py +1 -1
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/entries/entry.py +27 -12
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/entry_variants/entry_variants.py +118 -18
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management.egg-info/PKG-INFO +1 -1
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/LICENSE +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/README.md +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/_api_client.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/_constant.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/_errors.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/_messages.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/aliases/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/aliases/aliases.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/assets/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/assets/assets.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/auditlogs/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/auditlogs/auditlog.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/branches/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/branches/branches.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/bulk_operations/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/bulk_operations/bulk_operation.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/common.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/content_types/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/content_types/content_type.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/contentstack.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/delivery_token/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/delivery_token/delivery_token.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/endpoint.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/entries/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/entry_variants/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/environments/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/environments/environment.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/extensions/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/extensions/extension.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/global_fields/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/global_fields/global_fields.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/labels/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/labels/label.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/locale/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/locale/locale.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/management_token/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/management_token/management_token.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/metadata/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/metadata/metadata.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/oauth/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/oauth/oauth_handler.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/oauth/oauth_interceptor.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/organizations/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/organizations/organization.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/publish_queue/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/publish_queue/publish_queue.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/region_refresh.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/release_items/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/release_items/release_item.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/releases/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/releases/release.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/roles/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/roles/roles.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/stack/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/stack/stack.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/taxonomies/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/taxonomies/taxonomy.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/terms/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/terms/terms.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/user_session/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/user_session/user_session.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/users/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/users/user.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/variant_group/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/variant_group/variant_group.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/variants/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/variants/variants.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/webhooks/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/webhooks/webhook.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/workflows/__init__.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/workflows/workflows.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management.egg-info/SOURCES.txt +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management.egg-info/dependency_links.txt +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management.egg-info/requires.txt +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management.egg-info/top_level.txt +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/setup.cfg +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/setup.py +0 -0
- {contentstack_management-1.10.2 → contentstack_management-1.11.0}/tests/test_contentstack.py +0 -0
|
@@ -102,7 +102,7 @@ __title__ = 'contentstack-management-python'
|
|
|
102
102
|
__author__ = 'dev-ex'
|
|
103
103
|
__status__ = 'debug'
|
|
104
104
|
__region__ = 'na'
|
|
105
|
-
__version__ = '1.
|
|
105
|
+
__version__ = '1.11.0'
|
|
106
106
|
__host__ = 'api.contentstack.io'
|
|
107
107
|
__protocol__ = 'https://'
|
|
108
108
|
__api_version__ = 'v3'
|
|
@@ -423,13 +423,15 @@ class Entry(Parameter):
|
|
|
423
423
|
data = json.dumps(data)
|
|
424
424
|
return self.client.post(url, headers = self.client.headers, data = data, params = self.params)
|
|
425
425
|
|
|
426
|
-
def variants(self,
|
|
426
|
+
def variants(self, *args):
|
|
427
427
|
"""
|
|
428
428
|
Returns an EntryVariants instance for managing variant entries.
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
429
|
+
|
|
430
|
+
Pass no arguments when no ``branch`` header is required, one positional argument for the
|
|
431
|
+
branch UID only (sent as the ``branch`` request header), or two
|
|
432
|
+
arguments ``(variant_uid, branch)`` for a specific variant on a branch.
|
|
433
|
+
|
|
434
|
+
:param args: ``()`` | ``(branch,)`` | ``(variant_uid, branch)``
|
|
433
435
|
:return: EntryVariants instance for managing variant entries
|
|
434
436
|
-------------------------------
|
|
435
437
|
[Example:]
|
|
@@ -438,13 +440,26 @@ class Entry(Parameter):
|
|
|
438
440
|
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
439
441
|
>>> # Get all variant entries
|
|
440
442
|
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().query().find().json()
|
|
441
|
-
>>> #
|
|
442
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants('
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
443
|
+
>>> # Variant operations on a branch (branch header only)
|
|
444
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants('branch_uid').query().find().json()
|
|
445
|
+
>>> # Specific variant on a branch
|
|
446
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants('variant_uid', 'branch_uid').fetch().json()
|
|
447
|
+
|
|
448
|
+
-------------------------------
|
|
449
|
+
"""
|
|
450
|
+
variant_uid = None
|
|
451
|
+
branch = None
|
|
452
|
+
if len(args) == 1:
|
|
453
|
+
branch = args[0]
|
|
454
|
+
elif len(args) == 2:
|
|
455
|
+
variant_uid, branch = args[0], args[1]
|
|
456
|
+
elif len(args) > 2:
|
|
457
|
+
raise TypeError(
|
|
458
|
+
f"variants() takes at most 2 positional arguments ({len(args)} given)"
|
|
459
|
+
)
|
|
460
|
+
return EntryVariants(
|
|
461
|
+
self.client, self.content_type_uid, self.entry_uid, variant_uid, branch
|
|
462
|
+
)
|
|
448
463
|
|
|
449
464
|
def includeVariants(self, include_variants: str = 'true', variant_uid: str = None, params: dict = None):
|
|
450
465
|
"""
|
|
@@ -1,28 +1,49 @@
|
|
|
1
1
|
"""This class takes a base URL as an argument when it's initialized,
|
|
2
2
|
which is the endpoint for the RESTFUL API that we'll be interacting with.
|
|
3
|
-
The query(), create(), fetch(), delete(), update(), versions(), and
|
|
3
|
+
The query(), create(), fetch(), delete(), update(), versions(), includeVariants(), publish(), and unpublish() methods each correspond to
|
|
4
4
|
the operations that can be performed on the API """
|
|
5
5
|
|
|
6
6
|
import json
|
|
7
7
|
from ..common import Parameter
|
|
8
8
|
from .._errors import ArgumentException
|
|
9
|
-
from .._messages import
|
|
9
|
+
from .._messages import (
|
|
10
|
+
ENTRY_BODY_REQUIRED,
|
|
11
|
+
ENTRY_VARIANT_CONTENT_TYPE_UID_REQUIRED,
|
|
12
|
+
ENTRY_VARIANT_ENTRY_UID_REQUIRED,
|
|
13
|
+
ENTRY_VARIANT_UID_REQUIRED,
|
|
14
|
+
)
|
|
10
15
|
|
|
11
16
|
class EntryVariants(Parameter):
|
|
12
17
|
"""
|
|
13
18
|
This class takes a base URL as an argument when it's initialized,
|
|
14
19
|
which is the endpoint for the RESTFUL API that
|
|
15
|
-
we'll be interacting with. The query(), create(), fetch(), delete(), update(), versions(),
|
|
16
|
-
methods each correspond to the operations that can be
|
|
20
|
+
we'll be interacting with. The query(), create(), fetch(), delete(), update(), versions(),
|
|
21
|
+
includeVariants(), publish(), and unpublish() methods each correspond to the operations that can be
|
|
22
|
+
performed on the API. Optional ``branch`` scopes requests to a stack branch via the ``branch`` header. """
|
|
17
23
|
|
|
18
|
-
def __init__(
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
client,
|
|
27
|
+
content_type_uid: str,
|
|
28
|
+
entry_uid: str,
|
|
29
|
+
variant_uid: str = None,
|
|
30
|
+
branch: str = None,
|
|
31
|
+
):
|
|
19
32
|
self.client = client
|
|
20
33
|
self.content_type_uid = content_type_uid
|
|
21
34
|
self.entry_uid = entry_uid
|
|
22
35
|
self.variant_uid = variant_uid
|
|
36
|
+
self.branch = branch if branch else None
|
|
23
37
|
super().__init__(self.client)
|
|
24
38
|
self.path = f"content_types/{content_type_uid}/entries/{entry_uid}/variants"
|
|
25
39
|
|
|
40
|
+
def _headers(self):
|
|
41
|
+
"""Merge optional branch into request headers without mutating the client."""
|
|
42
|
+
if not self.branch:
|
|
43
|
+
return self.client.headers
|
|
44
|
+
headers = dict(self.client.headers)
|
|
45
|
+
headers["branch"] = self.branch
|
|
46
|
+
return headers
|
|
26
47
|
|
|
27
48
|
def find(self, params: dict = None):
|
|
28
49
|
"""
|
|
@@ -47,7 +68,7 @@ class EntryVariants(Parameter):
|
|
|
47
68
|
self.validate_entry_uid()
|
|
48
69
|
if params is not None:
|
|
49
70
|
self.params.update(params)
|
|
50
|
-
return self.client.get(self.path, headers
|
|
71
|
+
return self.client.get(self.path, headers=self._headers(), params=self.params)
|
|
51
72
|
|
|
52
73
|
def create(self, data: dict):
|
|
53
74
|
"""
|
|
@@ -79,7 +100,7 @@ class EntryVariants(Parameter):
|
|
|
79
100
|
self.validate_content_type_uid()
|
|
80
101
|
self.validate_entry_uid()
|
|
81
102
|
data = json.dumps(data)
|
|
82
|
-
return self.client.post(self.path, headers
|
|
103
|
+
return self.client.post(self.path, headers=self._headers(), data=data, params=self.params)
|
|
83
104
|
|
|
84
105
|
def fetch(self, variant_uid: str = None, params: dict = None):
|
|
85
106
|
"""
|
|
@@ -96,9 +117,11 @@ class EntryVariants(Parameter):
|
|
|
96
117
|
|
|
97
118
|
>>> import contentstack_management
|
|
98
119
|
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
99
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants(
|
|
120
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().fetch('variant_uid').json()
|
|
100
121
|
>>> # With parameters
|
|
101
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants(
|
|
122
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().fetch('variant_uid', params={'include_count': True}).json()
|
|
123
|
+
>>> # On a branch
|
|
124
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants('variant_uid', 'branch_uid').fetch().json()
|
|
102
125
|
|
|
103
126
|
-------------------------------
|
|
104
127
|
"""
|
|
@@ -112,7 +135,7 @@ class EntryVariants(Parameter):
|
|
|
112
135
|
if params is not None:
|
|
113
136
|
self.params.update(params)
|
|
114
137
|
url = f"{self.path}/{self.variant_uid}"
|
|
115
|
-
return self.client.get(url, headers
|
|
138
|
+
return self.client.get(url, headers=self._headers(), params=self.params)
|
|
116
139
|
|
|
117
140
|
def delete(self, variant_uid: str = None):
|
|
118
141
|
"""
|
|
@@ -128,7 +151,7 @@ class EntryVariants(Parameter):
|
|
|
128
151
|
|
|
129
152
|
>>> import contentstack_management
|
|
130
153
|
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
131
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants(
|
|
154
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().delete('variant_uid').json()
|
|
132
155
|
|
|
133
156
|
-------------------------------
|
|
134
157
|
"""
|
|
@@ -138,7 +161,7 @@ class EntryVariants(Parameter):
|
|
|
138
161
|
self.validate_entry_uid()
|
|
139
162
|
self.validate_variant_uid()
|
|
140
163
|
url = f"{self.path}/{self.variant_uid}"
|
|
141
|
-
return self.client.delete(url, headers
|
|
164
|
+
return self.client.delete(url, headers=self._headers(), params=self.params)
|
|
142
165
|
|
|
143
166
|
def update(self, data: dict, variant_uid: str = None):
|
|
144
167
|
"""
|
|
@@ -167,7 +190,7 @@ class EntryVariants(Parameter):
|
|
|
167
190
|
>>> }
|
|
168
191
|
>>> import contentstack_management
|
|
169
192
|
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
170
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants(
|
|
193
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().update(data, 'variant_uid').json()
|
|
171
194
|
|
|
172
195
|
-------------------------------
|
|
173
196
|
"""
|
|
@@ -178,7 +201,7 @@ class EntryVariants(Parameter):
|
|
|
178
201
|
self.validate_variant_uid()
|
|
179
202
|
url = f"{self.path}/{self.variant_uid}"
|
|
180
203
|
data = json.dumps(data)
|
|
181
|
-
return self.client.put(url, headers
|
|
204
|
+
return self.client.put(url, headers=self._headers(), data=data, params=self.params)
|
|
182
205
|
|
|
183
206
|
def versions(self, variant_uid: str = None, params: dict = None):
|
|
184
207
|
"""
|
|
@@ -195,9 +218,9 @@ class EntryVariants(Parameter):
|
|
|
195
218
|
|
|
196
219
|
>>> import contentstack_management
|
|
197
220
|
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
198
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants(
|
|
221
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().versions('variant_uid').json()
|
|
199
222
|
>>> # With parameters
|
|
200
|
-
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants(
|
|
223
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().versions('variant_uid', params={'limit': 10}).json()
|
|
201
224
|
|
|
202
225
|
-------------------------------
|
|
203
226
|
"""
|
|
@@ -209,7 +232,7 @@ class EntryVariants(Parameter):
|
|
|
209
232
|
if params is not None:
|
|
210
233
|
self.params.update(params)
|
|
211
234
|
url = f"{self.path}/{self.variant_uid}/versions"
|
|
212
|
-
return self.client.get(url, headers
|
|
235
|
+
return self.client.get(url, headers=self._headers(), params=self.params)
|
|
213
236
|
|
|
214
237
|
def includeVariants(self, include_variants: str = 'true', variant_uid: str = None, params: dict = None):
|
|
215
238
|
"""
|
|
@@ -243,8 +266,85 @@ class EntryVariants(Parameter):
|
|
|
243
266
|
self.params.update(params)
|
|
244
267
|
self.params['include_variants'] = include_variants
|
|
245
268
|
url = f"content_types/{self.content_type_uid}/entries/{self.entry_uid}"
|
|
246
|
-
return self.client.get(url, headers
|
|
269
|
+
return self.client.get(url, headers=self._headers(), params=self.params)
|
|
247
270
|
|
|
271
|
+
def publish(self, data: dict):
|
|
272
|
+
"""
|
|
273
|
+
Publish the entry for this content type and entry UID (CMA ``.../entries/{entry_uid}/publish``).
|
|
274
|
+
|
|
275
|
+
For entry variants, the body typically includes ``entry.environments``, ``entry.locales``,
|
|
276
|
+
``entry.variants`` (list of ``{"uid", "version"}`` per variant), optional ``entry.variant_rules``,
|
|
277
|
+
and top-level ``locale`` (and optional scheduling fields supported by the API).
|
|
278
|
+
|
|
279
|
+
:param data: Publish payload dict (serialized as JSON).
|
|
280
|
+
:return: Response from the publish request.
|
|
281
|
+
-------------------------------
|
|
282
|
+
[Example:]
|
|
283
|
+
|
|
284
|
+
>>> data = {
|
|
285
|
+
>>> "entry": {
|
|
286
|
+
>>> "environments": ["production"],
|
|
287
|
+
>>> "locales": ["en-us"],
|
|
288
|
+
>>> "variants": [
|
|
289
|
+
>>> {"uid": "variant_uid", "version": 1}
|
|
290
|
+
>>> ],
|
|
291
|
+
>>> "variant_rules": {
|
|
292
|
+
>>> "publish_latest_base": False,
|
|
293
|
+
>>> "publish_latest_base_conditionally": True
|
|
294
|
+
>>> }
|
|
295
|
+
>>> },
|
|
296
|
+
>>> "locale": "en-us"
|
|
297
|
+
>>> }
|
|
298
|
+
>>> import contentstack_management
|
|
299
|
+
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
300
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().publish(data).json()
|
|
301
|
+
|
|
302
|
+
-------------------------------
|
|
303
|
+
"""
|
|
304
|
+
self.validate_content_type_uid()
|
|
305
|
+
self.validate_entry_uid()
|
|
306
|
+
if data is None:
|
|
307
|
+
raise Exception(ENTRY_BODY_REQUIRED)
|
|
308
|
+
url = f"content_types/{self.content_type_uid}/entries/{self.entry_uid}/publish"
|
|
309
|
+
data = json.dumps(data)
|
|
310
|
+
return self.client.post(url, headers=self._headers(), data=data, params=self.params)
|
|
311
|
+
|
|
312
|
+
def unpublish(self, data: dict):
|
|
313
|
+
"""
|
|
314
|
+
Unpublish the entry for this content type and entry UID (CMA ``.../entries/{entry_uid}/unpublish``).
|
|
315
|
+
|
|
316
|
+
For entry variants, the body typically includes ``entry.environments``, ``entry.locales``,
|
|
317
|
+
``entry.variants`` (list of ``{"uid", "version"}`` per variant), and top-level ``locale``.
|
|
318
|
+
|
|
319
|
+
:param data: Unpublish payload dict (serialized as JSON).
|
|
320
|
+
:return: Response from the unpublish request.
|
|
321
|
+
-------------------------------
|
|
322
|
+
[Example:]
|
|
323
|
+
|
|
324
|
+
>>> data = {
|
|
325
|
+
>>> "entry": {
|
|
326
|
+
>>> "environments": ["environment_uid"],
|
|
327
|
+
>>> "locales": ["en-us"],
|
|
328
|
+
>>> "variants": [
|
|
329
|
+
>>> {"uid": "variant_uid", "version": 1}
|
|
330
|
+
>>> ]
|
|
331
|
+
>>> },
|
|
332
|
+
>>> "locale": "en-us"
|
|
333
|
+
>>> }
|
|
334
|
+
>>> import contentstack_management
|
|
335
|
+
>>> client = contentstack_management.Client(authtoken='your_authtoken')
|
|
336
|
+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().unpublish(data).json()
|
|
337
|
+
|
|
338
|
+
-------------------------------
|
|
339
|
+
"""
|
|
340
|
+
self.validate_content_type_uid()
|
|
341
|
+
self.validate_entry_uid()
|
|
342
|
+
if data is None:
|
|
343
|
+
raise Exception(ENTRY_BODY_REQUIRED)
|
|
344
|
+
url = f"content_types/{self.content_type_uid}/entries/{self.entry_uid}/unpublish"
|
|
345
|
+
data = json.dumps(data)
|
|
346
|
+
return self.client.post(url, headers=self._headers(), data=data, params=self.params)
|
|
347
|
+
|
|
248
348
|
def validate_content_type_uid(self):
|
|
249
349
|
"""
|
|
250
350
|
The function checks if the content_type_uid is None or an empty string and raises an ArgumentException
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentstack_management-1.10.2 → contentstack_management-1.11.0}/contentstack_management/common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentstack_management-1.10.2 → contentstack_management-1.11.0}/tests/test_contentstack.py
RENAMED
|
File without changes
|