/
bulk_campaign_device_criterion.py
107 lines (89 loc) · 4.67 KB
/
bulk_campaign_device_criterion.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from bingads.v11.bulk.entities import *
from bingads.service_client import _CAMPAIGN_OBJECT_FACTORY_V11
from bingads.v11.internal.bulk.entities.single_record_bulk_entity import _SingleRecordBulkEntity
from bingads.v11.internal.bulk.mappings import _SimpleBulkMapping
from bingads.v11.internal.bulk.string_table import _StringTable
from bingads.v11.internal.extensions import *
class BulkCampaignDeviceCriterion(_SingleRecordBulkEntity):
""" Represents an Campaign Device Criterion that can be read or written in a bulk file.
This class exposes the :attr:`biddable_campaign_criterion` property that can be read and written as fields of the
Campaign Device Criterion record in a bulk file.
For more information, see Campaign Device Criterion at https://go.microsoft.com/fwlink/?linkid=846127.
*See also:*
* :class:`.BulkServiceManager`
* :class:`.BulkOperation`
* :class:`.BulkFileReader`
* :class:`.BulkFileWriter`
"""
def __init__(self,
biddable_campaign_criterion=None,
campaign_name=None, ):
super(BulkCampaignDeviceCriterion, self).__init__()
self._biddable_campaign_criterion = biddable_campaign_criterion
self._campaign_name = campaign_name
_MAPPINGS = [
_SimpleBulkMapping(
_StringTable.Status,
field_to_csv=lambda c: bulk_str(c.biddable_campaign_criterion.Status),
csv_to_field=lambda c, v: setattr(c.biddable_campaign_criterion, 'Status', v if v else None)
),
_SimpleBulkMapping(
_StringTable.Id,
field_to_csv=lambda c: bulk_str(c.biddable_campaign_criterion.Id),
csv_to_field=lambda c, v: setattr(c.biddable_campaign_criterion, 'Id', int(v) if v else None)
),
_SimpleBulkMapping(
_StringTable.ParentId,
field_to_csv=lambda c: bulk_str(c.biddable_campaign_criterion.CampaignId),
csv_to_field=lambda c, v: setattr(c.biddable_campaign_criterion, 'CampaignId', int(v) if v else None)
),
_SimpleBulkMapping(
_StringTable.Campaign,
field_to_csv=lambda c: c.campaign_name,
csv_to_field=lambda c, v: setattr(c, 'campaign_name', v)
),
_SimpleBulkMapping(
_StringTable.BidAdjustment,
field_to_csv=lambda c: field_to_csv_BidAdjustment(c.biddable_campaign_criterion),
csv_to_field=lambda c, v: csv_to_field_BidAdjustment(c.biddable_campaign_criterion, float(v) if v else None)
),
_SimpleBulkMapping(
_StringTable.Target,
field_to_csv=lambda c: field_to_csv_DeviceTarget(c.biddable_campaign_criterion),
csv_to_field=lambda c, v: csv_to_field_DeviceTarget(c.biddable_campaign_criterion, v)
),
_SimpleBulkMapping(
_StringTable.OsNames,
field_to_csv=lambda c: field_to_csv_OSName(c.biddable_campaign_criterion),
csv_to_field=lambda c, v: csv_to_field_OSName(c.biddable_campaign_criterion, v)
),
]
@property
def biddable_campaign_criterion(self):
""" Defines a Campaign Criterion """
return self._biddable_campaign_criterion
@biddable_campaign_criterion.setter
def biddable_campaign_criterion(self, biddable_campaign_criterion):
self._biddable_campaign_criterion = biddable_campaign_criterion
@property
def campaign_name(self):
""" The name of the Campaign
:rtype: str
"""
return self._campaign_name
@campaign_name.setter
def campaign_name(self, campaign_name):
self._campaign_name = campaign_name
def process_mappings_to_row_values(self, row_values, exclude_readonly_data):
self._validate_property_not_null(self.biddable_campaign_criterion, 'biddable_campaign_criterion')
self.convert_to_values(row_values, BulkCampaignDeviceCriterion._MAPPINGS)
def process_mappings_from_row_values(self, row_values):
self._biddable_campaign_criterion = _CAMPAIGN_OBJECT_FACTORY_V11.create('BiddableCampaignCriterion')
self._biddable_campaign_criterion.Type = 'BiddableCampaignCriterion'
self._biddable_campaign_criterion.Criterion = _CAMPAIGN_OBJECT_FACTORY_V11.create('DeviceCriterion')
self._biddable_campaign_criterion.Criterion.Type = 'DeviceCriterion'
self._biddable_campaign_criterion.CriterionBid = _CAMPAIGN_OBJECT_FACTORY_V11.create('BidMultiplier')
self._biddable_campaign_criterion.CriterionBid.Type = 'BidMultiplier'
row_values.convert_to_entity(self, BulkCampaignDeviceCriterion._MAPPINGS)
def read_additional_data(self, stream_reader):
super(BulkCampaignDeviceCriterion, self).read_additional_data(stream_reader)