Example #1
0
def membership_add():
    form_data = _parse_form(toolkit.request.form)
    context = {'model': model, 'user': toolkit.c.user}
    username = form_data.get('username')
    contnames = form_data.get('contnames')
    if type(contnames) != list:
        contnames = [contnames]
    role = form_data.get('role')

    # Check access
    try:
        toolkit.check_access('sysadmin', context)
    except toolkit.NotAuthorized:
        message = 'Not authorized to add membership'
        return toolkit.abort(403, message)

    # Add membership
    containers = []
    for contname in contnames:
        try:
            container = toolkit.get_action('organization_show')(context, {
                'id': contname
            })
            data_dict = {
                'id': contname,
                'username': username,
                'role': role,
                'not_notify': True
            }
            toolkit.get_action('organization_member_create')(context,
                                                             data_dict)
            containers.append(container)
        except (toolkit.ObjectNotFound, toolkit.ValidationError):
            message = 'User "%s" NOT added to the following data container: "%s"'
            toolkit.h.flash_error(message % (username, contname))

    # Notify by flash
    titles = ['"%s"' % cont.get('title', cont['name']) for cont in containers]
    message = 'User "%s" added to the following data containers: %s'
    toolkit.h.flash_success(message % (username, ', '.join(titles)))

    # Notify by email
    user = toolkit.get_action('user_show')(context, {'id': username})
    subj = mailer.compose_membership_email_subj(
        {'title': 'multiple containers'})
    body = mailer.compose_membership_email_body(containers, user,
                                                'create_multiple')
    mailer.mail_user_by_id(username, subj, body)

    # Redirect
    return toolkit.redirect_to('unhcr_data_container.membership',
                               username=username)
Example #2
0
def organization_member_delete(context, data_dict):

    if not data_dict.get('not_notify'):

        # Get container/user
        container = toolkit.get_action('organization_show')(
            context, {
                'id': data_dict['id']
            })
        user = toolkit.get_action('user_show')(context, {
            'id': data_dict['user_id']
        })

        # Notify the user
        subj = mailer.compose_membership_email_subj(container)
        body = mailer.compose_membership_email_body(container, user, 'delete')
        mailer.mail_user_by_id(user['id'], subj, body)

    return delete_core.organization_member_delete(context, data_dict)