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'])
Beispiel #2
0
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'])
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)