Skip to content

Commit 429af87

Browse files
author
Sebastien.Dangelo
committed
Improve copy_data_extension
1 parent b481c5a commit 429af87

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

FuelSDKWrapper.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,8 @@ def create_data_extension(self, name, columns, customer_key=None, category_id=No
533533

534534
return self.get_client().CreateDataExtensions([data_extension])
535535

536-
def copy_data_extension(self, source_customer_key, new_name, new_customer_key=None, new_category_id=None, keep_template=True, keep_retention_policy=True):
536+
def copy_data_extension(self, source_customer_key, new_name, new_customer_key=None, new_category_id=None,
537+
keep_template=True, keep_retention_policy=True, keep_sendable=True):
537538
source_data_extension = self.get_objects(ObjectType.DATA_EXTENSION,
538539
simple_filter("CustomerKey", Operator.EQUALS, source_customer_key),
539540
property_list=['CustomerKey', 'Name', 'Description', 'IsSendable',
@@ -545,16 +546,20 @@ def copy_data_extension(self, source_customer_key, new_name, new_customer_key=No
545546
'DeleteAtEndOfRetentionPeriod',
546547
'RetainUntil', 'DataRetentionPeriod'])
547548

549+
if source_data_extension.status and source_data_extension.results:
550+
source_data_extension = source_data_extension.results[0]
551+
else:
552+
raise self.ETApiError("The Data Extension wasn't found with the given CustomerKey.")
553+
548554
source_columns = self.get_data_extension_columns(source_customer_key)
549555
new_columns = []
550-
for source_column in source_columns:
556+
for source_column in sorted(source_columns.results, key=lambda i: i.Ordinal):
551557
new_column = {
552558
'DefaultValue': source_column.DefaultValue,
553559
'FieldType': source_column.FieldType,
554560
'IsPrimaryKey': source_column.IsPrimaryKey,
555561
'IsRequired': source_column.IsRequired,
556562
'Name': source_column.Name,
557-
'Ordinal': source_column.Ordinal,
558563
'StorageType': source_column.StorageType
559564
}
560565
if "MaxLength" in source_column:
@@ -566,9 +571,7 @@ def copy_data_extension(self, source_customer_key, new_name, new_customer_key=No
566571
data_extension = {
567572
'Name': new_name,
568573
'columns': new_columns,
569-
'Description': source_data_extension.Description,
570-
'IsSendable': source_data_extension.IsSendable,
571-
'IsTestable': source_data_extension.IsTestable
574+
'Description': source_data_extension.Description
572575
}
573576

574577
if new_customer_key:
@@ -577,12 +580,22 @@ def copy_data_extension(self, source_customer_key, new_name, new_customer_key=No
577580
if new_category_id:
578581
data_extension['CategoryID'] = new_category_id
579582

580-
if "SendableDataExtensionField" in source_data_extension and "SendableSubscriberField" in source_data_extension:
583+
if keep_sendable and "SendableDataExtensionField" in source_data_extension and "SendableSubscriberField" in source_data_extension:
584+
data_extension['IsSendable'] = source_data_extension.IsSendable
585+
data_extension['IsTestable'] = source_data_extension.IsTestable
586+
587+
if "Subscriber" in source_data_extension.SendableSubscriberField.Name:
588+
sendable_subscriber_field_name = "Subscriber Key"
589+
elif "Email" in source_data_extension.SendableSubscriberField.Name:
590+
sendable_subscriber_field_name = "Email Address"
591+
else:
592+
raise self.ETApiError("The Sendable Subscriber Field is invalid.")
593+
581594
data_extension['SendableDataExtensionField'] = {
582595
"Name": source_data_extension.SendableDataExtensionField.Name
583596
}
584597
data_extension['SendableSubscriberField'] = {
585-
"Name": source_data_extension.SendableSubscriberField.Name
598+
"Name": sendable_subscriber_field_name
586599
}
587600

588601
if keep_template and "Template" in source_data_extension:
@@ -601,7 +614,8 @@ def copy_data_extension(self, source_customer_key, new_name, new_customer_key=No
601614
and "DataRetentionPeriodUnitOfMeasure" in source_data_extension:
602615
data_extension['DataRetentionPeriod'] = source_data_extension.DataRetentionPeriod
603616
data_extension['DataRetentionPeriodLength'] = source_data_extension.DataRetentionPeriodLength
604-
data_extension['DataRetentionPeriodUnitOfMeasure'] = source_data_extension.DataRetentionPeriodUnitOfMeasure
617+
data_extension[
618+
'DataRetentionPeriodUnitOfMeasure'] = source_data_extension.DataRetentionPeriodUnitOfMeasure
605619

606620
return self.get_client().CreateDataExtensions([data_extension])
607621

__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
__title__ = 'FuelSDKWrapper'
2-
__version__ = '1.1.0'
2+
__version__ = '1.1.1'
33
__author__ = 'Seb Angel'
44
__license__ = 'MIT'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
readme = f.read()
55

66
setup(
7-
version='1.1.0',
7+
version='1.1.1',
88
name='FuelSDKWrapper',
99
description='Simplify and enhance the FuelSDK for Salesforce Marketing Cloud (ExactTarget)',
1010
long_description=readme,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy