Esempio n. 1
0
class ConstantContact:
    
    LIST_GENERAL = 'http://api.constantcontact.com/ws/customers/1widget/lists/1'
    LIST_PAID = 'http://api.constantcontact.com/ws/customers/1widget/lists/2'
    
    CC_KEY = '810b6a4c-9374-46a4-a6bf-06f3549c7450'
    CC_USERNAME = '******'
    CC_PASSWORD = '******'
    
    def __init__(self):
        self.mConnection = CTCTConnection(ConstantContact.CC_KEY, 
                                          ConstantContact.CC_USERNAME, 
                                          ConstantContact.CC_PASSWORD)
        
    def __unicode__(self):
        return self.cc_key
        
    def signup(self, email):
        params = {'email_address': email,
                  'opt_in_source': 'ACTION_BY_CONTACT',
                  'contact_lists': [self.LIST_GENERAL]                  
                  } 
        
        return self.__add_contact(params)
    
    def paid(self, email):
        params = {'email_address': email,
                  'contact_lists': [self.LIST_PAID]
                  }
        
        return self.__add_contact(params)
        
    def get_lists(self):
        return self.mConnection.get_contact_lists()
        
    def __add_contact(self, params):
        if (settings.DEBUG):
            return self.mConnection.get_xml(params)
        else:
            return self.mConnection.create_contact(params)
Esempio n. 2
0
    def handle(self, *args, **options):

        ##### GENERATE A BULK EXPORT #####
        # Set up CC connection
        cnx = CTCTConnection(API_KEY, USER, PASSWORD)

        # GENERATE EXPORT ACTIVITY FOR ACTIVE CONTACTS
        active_list_uri = 'http://api.constantcontact.com/ws/%s/lists/active' % USER

        # Create an export activity as a csv file
        activity_uri = cnx.create_activity(type='EXPORT_CONTACTS',
                                           lists=[active_list_uri],
                                           data={'fileType': 'TXT'})

        activity_id = activity_uri.rpartition('/')[-1]

        # Check the activity status
        activity = cnx.get_activity(activity_id)

        # Load Bulk Export Activity
        load_activity(activity)

        #### TRY IMPORTING BULK EXPORT ####
        # retry download up to 5 times over 10 minuteS
        retries = 5
        outcome = 'failed'
        while retries > 0 and outcome == 'failed':
            activity = cnx.get_activity(activity_id)
            activity_status = activity['status']
            if activity_status == 'COMPLETE':
                #TODO:emails = fetch_bulk_contacts_export(activity_id)
                #TODO: sync_bulk_contacts(emails)
                outcome = 'succeeded'
            else:
                retries -= 1
                time.sleep(120)

        #TODO: Log this
        print 'Data load %s for activity_id: %s' % (outcome, activity_id)
    def handle(self, *args, **options):

        ##### GENERATE A BULK EXPORT #####
        # Set up CC connection
        cnx = CTCTConnection(API_KEY, USER, PASSWORD)

        # GENERATE EXPORT ACTIVITY FOR ACTIVE CONTACTS
        active_list_uri = "http://api.constantcontact.com/ws/%s/lists/active" % USER

        # Create an export activity as a csv file
        activity_uri = cnx.create_activity(type="EXPORT_CONTACTS", lists=[active_list_uri], data={"fileType": "TXT"})

        activity_id = activity_uri.rpartition("/")[-1]

        # Check the activity status
        activity = cnx.get_activity(activity_id)

        # Load Bulk Export Activity
        load_activity(activity)

        #### TRY IMPORTING BULK EXPORT ####
        # retry download up to 5 times over 10 minuteS
        retries = 5
        outcome = "failed"
        while retries > 0 and outcome == "failed":
            activity = cnx.get_activity(activity_id)
            activity_status = activity["status"]
            if activity_status == "COMPLETE":
                # TODO:emails = fetch_bulk_contacts_export(activity_id)
                # TODO: sync_bulk_contacts(emails)
                outcome = "succeeded"
            else:
                retries -= 1
                time.sleep(120)

        # TODO: Log this
        print "Data load %s for activity_id: %s" % (outcome, activity_id)
Esempio n. 4
0
 def __init__(self):
     self.mConnection = CTCTConnection(ConstantContact.CC_KEY, 
                                       ConstantContact.CC_USERNAME, 
                                       ConstantContact.CC_PASSWORD)