def sync_group_with_mailgun(group_uri): group = get_group(group_uri) # check if group exists on mailgun, if not - create mg_group = mailgun_api.get_list(group['address']) if not mg_group: mailgun_api.create_list(group['address'], description=group['description'], access_level='members') # get list of members mg_members = mailgun_api.get_list_members(group['address']) mg_member_set = [m['address'] for m in mg_members] # for every member locally not in mailgun, add them for member in group['members']: if member not in mg_member_set: # add member to mailgun mailgun_api.add_list_member(group['address'], member) # for every member on mailgun for member in mg_members: # if unsubscribed on mailgun, remove locally if member['subscribed'] == False and member['address'] in group[ 'members']: # remove member from local group remove_group_member(group_uri, member['address']) # if on mailgun, but not locally, remove from mailgun if member['subscribed'] == True and member['address'] not in group[ 'members']: mailgun_api.remove_list_member(group['address'], member['address'])
def sync_group_with_mailgun( group_uri ): group = get_group(group_uri) # check if group exists on mailgun, if not - create mg_group = mailgun_api.get_list(group['address']) if not mg_group: mailgun_api.create_list(group['address'], description=group['description'], access_level='members' ) # get list of members mg_members = mailgun_api.get_list_members(group['address']) mg_member_set = [m['address'] for m in mg_members] # for every member locally not in mailgun, add them for member in group['members']: if member not in mg_member_set: # add member to mailgun mailgun_api.add_list_member(group['address'], member) # for every member on mailgun for member in mg_members: # if unsubscribed on mailgun, remove locally if member['subscribed'] == False and member['address'] in group['members']: # remove member from local group remove_group_member(group_uri, member['address']) # if on mailgun, but not locally, remove from mailgun if member['subscribed'] == True and member['address'] not in group['members']: mailgun_api.remove_list_member(group['address'], member['address'])
def unsubscribe_from_sequence( address ): # remove from sequence group try: user_signup = signup_model.get_signup(address) sequence_list = sequence_model.sequence_list_name(user_signup['sequence']) mailgun_api.remove_list_member(sequence_list, address) except: log.error(u"couldn't remove {0} from sequence list".format(address)) # remove from small groups # TODO: Can a user be subscribed to more than one group or more than one # sequence at the same time? groups = groups_model.get_member_groups(address) for group in groups: groups_model.remove_group_member(group['uri'], address) groups_model.sync_group_with_mailgun(group['uri']) # add signup to next sequence. signup_model.remove_signup_from_sequence(address)
def unsubscribe_user( address ): """ Unsubscribe user completely from the Mechanical Mooc """ # remove from sequence group try: user_signup = signup_model.get_signup(address) sequence_list = sequence_model.sequence_list_name(user_signup['sequence']) mailgun_api.remove_list_member(sequence_list, address) except: log.error(u"couldn't remove {0} from sequence list".format(address)) # remove from small groups groups = groups_model.get_member_groups(address) for group in groups: groups_model.remove_group_member(group['uri'], address) groups_model.sync_group_with_mailgun(group['uri']) # mark as unsubscribed in the signups signup_model.delete_signup(address)
def unsubscribe_user(address): """ Unsubscribe user completely from the Mechanical Mooc - all sequences """ # remove from sequence group signups = signup_model.get_all_user_signups(address) for user_signup in signups: sequence_list = sequence_model.sequence_list_name(user_signup["sequence"]) mailgun_api.remove_list_member(sequence_list, address) # remove from small groups groups = groups_model.get_member_groups(address) for group in groups: groups_model.remove_group_member(group["uri"], address) groups_model.sync_group_with_mailgun(group["uri"]) # mark as unsubscribed in the signups for user_signup in signups: signup_model.delete_signup(address, user_signup["sequence"]) mailgun_api.delete_all_unsubscribes(address)
def unsubscribe_user(address): """ Unsubscribe user completely from the Mechanical Mooc - all sequences """ # remove from sequence group signups = signup_model.get_all_user_signups(address) for user_signup in signups: sequence_list = sequence_model.sequence_list_name( user_signup['sequence']) mailgun_api.remove_list_member(sequence_list, address) # remove from small groups groups = groups_model.get_member_groups(address) for group in groups: groups_model.remove_group_member(group['uri'], address) groups_model.sync_group_with_mailgun(group['uri']) # mark as unsubscribed in the signups for user_signup in signups: signup_model.delete_signup(address, user_signup['sequence']) mailgun_api.delete_all_unsubscribes(address)