Skip to content

Commit 3254444

Browse files
Implemented variants support
1 parent cb9b912 commit 3254444

File tree

18 files changed

+1302
-9
lines changed

18 files changed

+1302
-9
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# CHANGELOG
22

33
## Content Management SDK For Python
4+
---
5+
## v1.5.0
6+
7+
#### Date: 25 August 2025
8+
9+
- Variants feature support.
10+
411
---
512
## v1.4.0
613

contentstack_management/__init__.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .auditlogs.auditlog import Auditlog
1717
from .environments.environment import Environment
1818
from .entries.entry import Entry
19+
from .entry_variants.entry_variants import EntryVariants
1920
from .contentstack import Client, Region
2021
from ._api_client import _APIClient
2122
from .common import Parameter
@@ -31,6 +32,8 @@
3132
from .management_token.management_token import ManagementToken
3233
from .publish_queue.publish_queue import PublishQueue
3334
from .extensions.extension import Extension
35+
from .variant_group.variant_group import VariantGroup
36+
from .variants.variants import Variants
3437

3538

3639
__all__ = (
@@ -55,6 +58,7 @@
5558
"Auditlog",
5659
"Environment",
5760
"Entry",
61+
"EntryVariants",
5862
"Locale",
5963
"Taxonomy",
6064
"Label",
@@ -65,14 +69,16 @@
6569
"DeliveryToken",
6670
"ManagementToken",
6771
"PublishQueue",
68-
"Extension"
72+
"Extension",
73+
"VariantGroup",
74+
"Variants"
6975
)
7076

7177
__title__ = 'contentstack-management-python'
7278
__author__ = 'dev-ex'
7379
__status__ = 'debug'
7480
__region__ = 'na'
75-
__version__ = '1.4.0'
81+
__version__ = '1.5.0'
7682
__host__ = 'api.contentstack.io'
7783
__protocol__ = 'https://'
7884
__api_version__ = 'v3'

contentstack_management/entries/entry.py

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import json
77
from ..common import Parameter
8+
from ..entry_variants.entry_variants import EntryVariants
89

910
class Entry(Parameter):
1011
"""
@@ -421,13 +422,58 @@ def unpublish(self, data):
421422
data = json.dumps(data)
422423
return self.client.post(url, headers = self.client.headers, data = data, params = self.params)
423424

424-
425-
426-
427-
425+
def variants(self, variant_uid: str = None):
426+
"""
427+
Returns an EntryVariants instance for managing variant entries.
428+
429+
:param variant_uid: The `variant_uid` parameter is a string that represents the unique identifier of
430+
the variant. It is used to specify which variant to work with
431+
:type variant_uid: str
432+
:return: EntryVariants instance for managing variant entries
433+
-------------------------------
434+
[Example:]
428435
429-
436+
>>> import contentstack_management
437+
>>> client = contentstack_management.Client(authtoken='your_authtoken')
438+
>>> # Get all variant entries
439+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants().query().find().json()
440+
>>> # Get specific variant entry
441+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').variants('variant_uid').fetch().json()
430442
443+
-------------------------------
444+
"""
445+
446+
return EntryVariants(self.client, self.content_type_uid, self.entry_uid, variant_uid)
431447

448+
def includeVariants(self, include_variants: str = 'true', variant_uid: str = None, params: dict = None):
449+
"""
450+
The includeVariants method retrieves the details of a specific base entry with variant details.
451+
452+
:param include_variants: The `include_variants` parameter is a string that specifies whether to include variants
453+
:type include_variants: str
454+
:param variant_uid: The `variant_uid` parameter is a string that represents the unique identifier of
455+
the variant. It is used to specify which variant to include
456+
:type variant_uid: str
457+
:param params: The `params` parameter is a dictionary that contains query parameters to be sent with the request
458+
:type params: dict
459+
:return: the result of the GET request made to the specified URL.
460+
-------------------------------
461+
[Example:]
432462
463+
>>> import contentstack_management
464+
>>> client = contentstack_management.Client(authtoken='your_authtoken')
465+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').includeVariants('true', 'variant_uid').json()
466+
>>> # With parameters
467+
>>> result = client.stack('api_key').content_types('content_type_uid').entry('entry_uid').includeVariants('true', 'variant_uid', params={'locale': 'en-us'}).json()
433468
469+
-------------------------------
470+
"""
471+
if self.entry_uid is None:
472+
raise Exception('Entry uid is required')
473+
if params is not None:
474+
self.params.update(params)
475+
self.params['include_variants'] = include_variants
476+
if variant_uid is not None and variant_uid != '':
477+
self.params['variant_uid'] = variant_uid
478+
url = f"content_types/{self.content_type_uid}/entries/{self.entry_uid}"
479+
return self.client.get(url, headers = self.client.headers, params = self.params)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .entry_variants import EntryVariants
2+
3+
__all__ = ['EntryVariants']

0 commit comments

Comments
 (0)