Пример #1
0
def delete_admin_from_group(request, curr_admin, language, group_name_or_slot,
                            del_admin_phone):
    admin_list = del_admin_phone.replace("+", " ").split()
    logger.debug("group: %s users: %s" % (group_name_or_slot, admin_list))

    msg_list = []

    group = Vikundi.resolve(curr_admin, group_name_or_slot)

    if group is None:
        return [False, language.unknown_group(group_name_or_slot)]

    if not curr_admin.is_admin(group):
        msg_list.append(language.admin_privileges_required(group))

    # is he removing himself?
    for admin_phone in admin_list:
        del_admin = Watumiaji.resolve(admin_phone)

        if curr_admin.user_id == del_admin.user_id:
            admin_count = group.get_admin_count()
            if admin_count == 1:
                msg_list.append(
                    language.cannot_delete_only_admin(curr_admin, group))

    # have to stay admin of your own group
    if curr_admin.is_mine(group):
        msg_list.append(
            language.cannot_delete_self_from_my_group(curr_admin, group))

    if len(msg_list) > 0:
        return [False, string.join(msg_list, " ")]

    msg_list = []
    valid_users = []
    invalid_users = []

    for admin_phone in admin_list:
        del_admin = Watumiaji.resolve(del_admin_phone)

        if del_admin == None:
            invalid_users.append(admin_phone)
        else:
            if del_admin.is_admin(group):
                group.delete_admin(curr_admin, del_admin)
            valid_users.append(admin_phone)

    if len(valid_users) > 0:
        valid_users = string.join(valid_users, ",")
        msg_list.append(language.deleted_admin(valid_users, group))

    if len(invalid_users) > 0:
        invalid_users = string.join(invalid_users, ",")
        msg_list.append(language.unknown_user(invalid_users))

    return [True, string.join(msg_list, " ")]
Пример #2
0
def delete_admin_from_group(request, curr_admin, language, group_name_or_slot, del_admin_phone):
    admin_list = del_admin_phone.replace("+", " ").split()
    logger.debug("group: %s users: %s" % (group_name_or_slot, admin_list))

    msg_list = []

    group = Vikundi.resolve(curr_admin, group_name_or_slot)

    if group is None:
        return [False, language.unknown_group(group_name_or_slot)]

    if not curr_admin.is_admin(group):
        msg_list.append(language.admin_privileges_required(group))

    # is he removing himself?
    for admin_phone in admin_list:
        del_admin = Watumiaji.resolve(admin_phone)

        if curr_admin.user_id == del_admin.user_id:
            admin_count = group.get_admin_count()
            if admin_count == 1:
                msg_list.append(language.cannot_delete_only_admin(curr_admin, group))

    # have to stay admin of your own group
    if curr_admin.is_mine(group):
        msg_list.append(language.cannot_delete_self_from_my_group(curr_admin, group))

    if len(msg_list) > 0:
        return [False, string.join(msg_list, " ")]

    msg_list = []
    valid_users = []
    invalid_users = []

    for admin_phone in admin_list:
        del_admin = Watumiaji.resolve(del_admin_phone)

        if del_admin == None:
            invalid_users.append(admin_phone)
        else:
            if del_admin.is_admin(group):
                group.delete_admin(curr_admin, del_admin)
            valid_users.append(admin_phone)

    if len(valid_users) > 0:
        valid_users = string.join(valid_users, ",")
        msg_list.append(language.deleted_admin(valid_users, group))

    if len(invalid_users) > 0:
        invalid_users = string.join(invalid_users, ",")
        msg_list.append(language.unknown_user(invalid_users))

    return [True, string.join(msg_list, " ")]
Пример #3
0
def add_admin_to_group(request, curr_admin, language, group_name_or_slot,
                       new_admin_phone):

    admin_list = new_admin_phone.replace("+", " ").split()
    logger.debug("group: %s admins: %s" % (group_name_or_slot, admin_list))

    msg_list = []

    group = Vikundi.resolve(curr_admin, group_name_or_slot)

    if group is None:
        return [False, language.unknown_group(group_name_or_slot)]

    if not curr_admin.is_admin(group):
        msg_list.append(language.admin_privileges_required(group))

    if len(msg_list) > 0:
        return [False, string.join(msg_list, " ")]

    msg_list = []
    invalid_users = []
    non_members = []
    valid_users = []

    for admin_phone in admin_list:
        new_admin = Watumiaji.resolve(admin_phone)

        if new_admin == None:
            invalid_users.append(admin_phone)
        else:
            if not new_admin.is_member(group):
                non_members.append(admin_phone)
            else:
                if not new_admin.is_admin(group):
                    group.add_admin(curr_admin, new_admin)
                    valid_users.append(admin_phone)

    if len(valid_users) > 0:
        valid_users = string.join(valid_users, ",")
        msg_list.append(language.added_admin(valid_users, group))

    if len(non_members) > 0:
        non_members = string.join(non_members, ",")
        msg_list.append(language.admin_must_be_member(non_members))

    if len(invalid_users) > 0:
        invalid_users = string.join(invalid_users, ",")
        msg_list.append(language.unknown_user(invalid_users))

    return [False, string.join(msg_list, " ")]
Пример #4
0
def add_admin_to_group(request, curr_admin, language, group_name_or_slot, new_admin_phone):

    admin_list = new_admin_phone.replace("+", " ").split()
    logger.debug("group: %s admins: %s" % (group_name_or_slot, admin_list))

    msg_list = []

    group = Vikundi.resolve(curr_admin, group_name_or_slot)

    if group is None:
        return [False, language.unknown_group(group_name_or_slot)]

    if not curr_admin.is_admin(group):
        msg_list.append(language.admin_privileges_required(group))

    if len(msg_list) > 0:
        return [False, string.join(msg_list, " ")]

    msg_list = []
    invalid_users = []
    non_members = []
    valid_users = []

    for admin_phone in admin_list:
        new_admin = Watumiaji.resolve(admin_phone)

        if new_admin == None:
            invalid_users.append(admin_phone)
        else:
            if not new_admin.is_member(group):
                non_members.append(admin_phone)
            else:
                if not new_admin.is_admin(group):
                    group.add_admin(curr_admin, new_admin)
                    valid_users.append(admin_phone)

    if len(valid_users) > 0:
        valid_users = string.join(valid_users, ",")
        msg_list.append(language.added_admin(valid_users, group))

    if len(non_members) > 0:
        non_members = string.join(non_members, ",")
        msg_list.append(language.admin_must_be_member(non_members))

    if len(invalid_users) > 0:
        invalid_users = string.join(invalid_users, ",")
        msg_list.append(language.unknown_user(invalid_users))

    return [False, string.join(msg_list, " ")]
Пример #5
0
def delete_user_from_group(request, admin, language, group_name_or_slot, del_user_phone):
    del_user_list = del_user_phone.replace("+", " ").split()
    logger.debug("group: %s users: %s" % (group_name_or_slot, del_user_list))

    msg_list = []

    group = Vikundi.resolve(admin, group_name_or_slot)

    if group is None:
        return [False, language.unknown_group(group_name_or_slot)]

    if len(del_user_list) < 1:
        return [False, language.no_user_specified()]

    del_user = Watumiaji.objects.filter(name_text=del_user_list[0])
    if not del_user:
        return [False, language.unknown_user(del_user_list[0])]

    if del_user[0].pk == admin.pk:
        msg_list.append(language.cannot_leave_own_group())

    if not admin.is_admin(group):
        msg_list.append(language.admin_privileges_required(group))

    if len(msg_list) > 0:
        return [False, string.join(msg_list, " ")]

    msg_list = []
    valid_users = []
    invalid_users = []
    non_members = []

    for user_phone in del_user_list:
        if user_phone.isdigit():
            del_user = Watumiaji.resolve(user_phone)
        else:
            # in case the admin used the members nickname
            del_user = Watumiaji.objects.filter(name_text=user_phone)
            if len(del_user) > 0:
                del_user = del_user[0]

        if not del_user:
            invalid_users.append(user_phone)
        else:
            if del_user.is_member(group):
                # delete as admin as well
                if del_user.is_admin(group):
                    group.delete_admin(admin, del_user_phone)

                group.delete_user(admin, del_user)
                valid_users.append(user_phone)

    if len(valid_users) > 0:
        valid_users = string.join(valid_users, ",")
        msg_list.append(language.deleted_user_from_group(valid_users, group))

    if len(invalid_users) > 0:
        invalid_users = string.join(invalid_users, ",")
        msg_list.append(language.unknown_user(invalid_users))

    return [True, string.join(msg_list, " ")]
Пример #6
0
def delete_user_from_group(request, admin, language, group_name_or_slot,
                           del_user_phone):
    del_user_list = del_user_phone.replace("+", " ").split()
    logger.debug("group: %s users: %s" % (group_name_or_slot, del_user_list))

    msg_list = []

    group = Vikundi.resolve(admin, group_name_or_slot)

    if group is None:
        return [False, language.unknown_group(group_name_or_slot)]

    if len(del_user_list) < 1:
        return [False, language.no_user_specified()]

    del_user = Watumiaji.objects.filter(name_text=del_user_list[0])
    if not del_user:
        return [False, language.unknown_user(del_user_list[0])]

    if del_user[0].pk == admin.pk:
        msg_list.append(language.cannot_leave_own_group())

    if not admin.is_admin(group):
        msg_list.append(language.admin_privileges_required(group))

    if len(msg_list) > 0:
        return [False, string.join(msg_list, " ")]

    msg_list = []
    valid_users = []
    invalid_users = []
    non_members = []

    for user_phone in del_user_list:
        if user_phone.isdigit():
            del_user = Watumiaji.resolve(user_phone)
        else:
            #in case the admin used the members nickname
            del_user = Watumiaji.objects.filter(name_text=user_phone)
            if len(del_user) > 0:
                del_user = del_user[0]

        if not del_user:
            invalid_users.append(user_phone)
        else:
            if del_user.is_member(group):
                #delete as admin as well
                if del_user.is_admin(group):
                    group.delete_admin(admin, del_user_phone)

                group.delete_user(admin, del_user)
                valid_users.append(user_phone)

    if len(valid_users) > 0:
        valid_users = string.join(valid_users, ",")
        msg_list.append(language.deleted_user_from_group(valid_users, group))

    if len(invalid_users) > 0:
        invalid_users = string.join(invalid_users, ",")
        msg_list.append(language.unknown_user(invalid_users))

    return [True, string.join(msg_list, " ")]