Permalink
Browse files

Draft campaigns (#137)

* `entity_status`
    * add enums
    * add read resource attributes
* update fixtures
* add tests
* update docs
* update examples
* misc:
    * remove `JOB_STATUS`
    * remove the `currency` property from campaigns
    * add missing line item resource properties
  • Loading branch information...
juanshishido committed Nov 29, 2017
1 parent 57821ff commit 1b643af833f00417b685ab751cebd82c440dba27
@@ -16,6 +16,7 @@ Quick Start
from twitter_ads.client import Client
from twitter_ads.campaign import Campaign
from twitter_ads.enum import ENTITY_STATUS
CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = 'your consumer secret'
@@ -33,7 +34,7 @@ Quick Start
# load and update a specific campaign
campaign = account.campaigns().next()
campaign.name = 'updated campaign name'
campaign.paused = True
campaign.entity_status = ENTITY_STATUS.PAUSED
campaign.save()
# iterate through campaigns
@@ -30,6 +30,7 @@ Quick Start
from twitter_ads.client import Client
from twitter_ads.campaign import Campaign
from twitter_ads.enum import ENTITY_STATUS
# initialize the client
client = Client(CONSUMER_KEY,
@@ -43,7 +44,7 @@ Quick Start
# load and update a specific campaign
campaign = list(account.campaigns())[0]
campaign.name = 'updated campaign name'
campaign.paused = True
campaign.entity_status = ENTITY_STATUS.PAUSED
campaign.save()
# iterate through campaigns
@@ -2,7 +2,7 @@

from twitter_ads.client import Client
from twitter_ads.campaign import Campaign, LineItem, TargetingCriteria
from twitter_ads.enum import PRODUCT, PLACEMENT, OBJECTIVE
from twitter_ads.enum import ENTITY_STATUS, OBJECTIVE, PLACEMENT, PRODUCT

CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = 'your consumer secret'
@@ -21,14 +21,14 @@
campaign_1.funding_instrument_id = account.funding_instruments().next().id
campaign_1.daily_budget_amount_local_micro = 1000000
campaign_1.name = 'my first campaign'
campaign_1.paused = True
campaign_1.entity_status = ENTITY_STATUS.PAUSED
campaign_1.start_time = datetime.utcnow()

campaign_2 = Campaign(account)
campaign_2.funding_instrument_id = account.funding_instruments().next().id
campaign_2.daily_budget_amount_local_micro = 2000000
campaign_2.name = 'my second campaign'
campaign_2.paused = True
campaign_2.entity_status = ENTITY_STATUS.PAUSED
campaign_2.start_time = datetime.utcnow()

campaigns_list = [campaign_1, campaign_2]
@@ -48,7 +48,7 @@
line_item_1.placements = [PLACEMENT.ALL_ON_TWITTER]
line_item_1.objective = OBJECTIVE.TWEET_ENGAGEMENTS
line_item_1.bid_amount_local_micro = 10000
line_item_1.paused = True
line_item_1.entity_status = ENTITY_STATUS.PAUSED

line_item_2 = LineItem(account)
line_item_2.campaign_id = campaign_1.id
@@ -57,7 +57,7 @@
line_item_2.placements = [PLACEMENT.ALL_ON_TWITTER]
line_item_2.objective = OBJECTIVE.TWEET_ENGAGEMENTS
line_item_2.bid_amount_local_micro = 20000
line_item_2.paused = True
line_item_2.entity_status = ENTITY_STATUS.PAUSED

line_items_list = [line_item_1, line_item_2]
LineItem.batch_save(account, line_items_list)
@@ -89,4 +89,4 @@
campaign_1.to_delete = True
campaign_2.to_delete = True

Campaign.batch_save(account, campaigns_list)
Campaign.batch_save(account, campaigns_list)
@@ -2,7 +2,7 @@

from twitter_ads.client import Client
from twitter_ads.campaign import Campaign, LineItem, TargetingCriteria
from twitter_ads.enum import PRODUCT, PLACEMENT, OBJECTIVE
from twitter_ads.enum import ENTITY_STATUS, OBJECTIVE, PLACEMENT, PRODUCT

CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = 'your consumer secret'
@@ -21,7 +21,7 @@
campaign.funding_instrument_id = account.funding_instruments().next().id
campaign.daily_budget_amount_local_micro = 1000000
campaign.name = 'my first campaign'
campaign.paused = True
campaign.entity_status = ENTITY_STATUS.PAUSED
campaign.start_time = datetime.utcnow()
campaign.save()

@@ -33,7 +33,7 @@
line_item.placements = [PLACEMENT.ALL_ON_TWITTER]
line_item.objective = OBJECTIVE.TWEET_ENGAGEMENTS
line_item.bid_amount_local_micro = 10000
line_item.paused = True
line_item.entity_status = ENTITY_STATUS.PAUSED
line_item.save()

# add targeting criteria
@@ -1,5 +1,5 @@
from twitter_ads.client import Client
from twitter_ads.enum import CREATIVE_TYPE, OBJECTIVE, PRODUCT
from twitter_ads.enum import CREATIVE_TYPE, ENTITY_STATUS, OBJECTIVE, PRODUCT
from twitter_ads.campaign import Campaign, LineItem
from twitter_ads.creative import AccountMedia, Video
from twitter_ads import API_VERSION
@@ -44,7 +44,7 @@
# get the first funding instrument on the account
campaign.funding_instrument_id = account.funding_instruments().first.id
campaign.daily_budget_amount_local_micro = 1000000000
campaign.paused = True
campaign.entity_status = ENTITY_STATUS.PAUSED
campaign.start_time = datetime.utcnow()
campaign.save()

@@ -58,7 +58,7 @@
line_item.product_type = 'MEDIA'
line_item.placements = [PLACEMENT.ALL_ON_TWITTER]
line_item.bid_amount_local_micro = 1000000
line_item.paused = True
line_item.entity_status = ENTITY_STATUS.PAUSED
line_item.categories = 'IAB1'
line_item.save()

@@ -110,5 +110,5 @@
raise

# unpause the campaign
campaign.paused = False
campaign.save()
campaign.entity_status = ENTITY_STATUS.ACTIVE
campaign.save()
@@ -8,7 +8,7 @@
{
"line_item_id": "2b7xw",
"id": "6thl4",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -18,7 +18,7 @@
{
"line_item_id": "2b7xw",
"id": "6thl3",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -28,7 +28,7 @@
{
"line_item_id": "2b7xw",
"id": "6thl5",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -38,7 +38,7 @@
{
"line_item_id": "2b7xw",
"id": "6thl6",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -48,7 +48,7 @@
{
"line_item_id": "2b7xw",
"id": "6thl7",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -58,7 +58,7 @@
{
"line_item_id": "2b7xw",
"id": "6thl8",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -68,7 +68,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlb",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -78,7 +78,7 @@
{
"line_item_id": "2b7xw",
"id": "6thle",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -88,7 +88,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlf",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -98,7 +98,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlg",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -108,7 +108,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlh",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -118,7 +118,7 @@
{
"line_item_id": "2b7xw",
"id": "6thln",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -128,7 +128,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlo",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -138,7 +138,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlp",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -148,7 +148,7 @@
{
"line_item_id": "2b7xw",
"id": "6thlq",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
@@ -158,7 +158,7 @@
{
"line_item_id": "2b7xw",
"id": "6tt7l",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-12T23:47:44Z",
"updated_at": "2015-04-12T23:47:44Z",
"approval_status": "ACCEPTED",
@@ -168,7 +168,7 @@
{
"line_item_id": "2b7xw",
"id": "6tt7m",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-12T23:47:44Z",
"updated_at": "2015-04-12T23:47:44Z",
"approval_status": "ACCEPTED",
@@ -178,7 +178,7 @@
{
"line_item_id": "2b7xw",
"id": "6ugv1",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-13T22:19:08Z",
"updated_at": "2015-04-13T22:19:08Z",
"approval_status": "ACCEPTED",
@@ -188,7 +188,7 @@
{
"line_item_id": "2b7xw",
"id": "6w7b5",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-16T17:01:56Z",
"updated_at": "2015-04-16T17:01:56Z",
"approval_status": "ACCEPTED",
@@ -198,7 +198,7 @@
{
"line_item_id": "2dw80",
"id": "70dbj",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-23T20:27:27Z",
"updated_at": "2015-04-23T20:27:27Z",
"approval_status": "ACCEPTED",
@@ -3,7 +3,7 @@
"data": {
"line_item_id": "2b7xw",
"id": "6thl4",
"paused": false,
"entity_status": "ACTIVE",
"created_at": "2015-04-11T20:50:25Z",
"updated_at": "2015-04-11T20:50:25Z",
"approval_status": "ACCEPTED",
Oops, something went wrong.

0 comments on commit 1b643af

Please sign in to comment.