Esempio n. 1
0
def useradmin_search(request):
    """Search users in the institution.
    """
    inst = request.user.institution

    q = request.GET.get('q', '').lower()
    if not q:
        return HttpResponseRedirect(reverse('institutions:useradmin'))

    profiles = Profile.objects.filter(institution=inst.name)
    usernames = [x.user for x in profiles if q in x.user]
    users = [User.objects.get(x) for x in usernames]

    last_logins = UserLastLogin.objects.filter(
        username__in=[x.username for x in users])
    for u in users:
        if u.username == request.user.username:
            u.is_self = True

        populate_user_info(u)
        _populate_user_quota_usage(u)

        for e in last_logins:
            if e.username == u.username:
                u.last_login = e.last_login

    return render_to_response('institutions/useradmin_search.html', {
        'inst': inst,
        'users': users,
        'q': q,
    },
                              context_instance=RequestContext(request))
Esempio n. 2
0
def useradmin_search(request):
    """Search users in the institution.
    """
    inst = request.user.institution

    q = request.GET.get('q', '').lower()
    if not q:
        return HttpResponseRedirect(reverse('institutions:useradmin'))

    profiles = Profile.objects.filter(institution=inst.name)
    usernames = [x.user for x in profiles if q in x.user]
    users = [User.objects.get(x) for x in usernames]

    last_logins = UserLastLogin.objects.filter(username__in=[x.username for x in users])
    for u in users:
        if u.username == request.user.username:
            u.is_self = True

        populate_user_info(u)
        _populate_user_quota_usage(u)

        for e in last_logins:
            if e.username == u.username:
                u.last_login = e.last_login

    return render_to_response('institutions/useradmin_search.html', {
        'inst': inst,
        'users': users,
        'q': q,
    }, context_instance=RequestContext(request))
Esempio n. 3
0
def org_user_admin(request):
    """List organization user.
    """
    org = request.user.org

    # Make sure page request is an int. If not, deliver first page.
    try:
        current_page = int(request.GET.get('page', '1'))
        per_page = int(request.GET.get('per_page', '25'))
    except ValueError:
        current_page = 1
        per_page = 25
    users_plus_one = ccnet_api.get_org_users_by_url_prefix(
        org.url_prefix, per_page * (current_page - 1), per_page + 1)
    if len(users_plus_one) == per_page + 1:
        page_next = True
    else:
        page_next = False

    users = users_plus_one[:per_page]
    last_logins = UserLastLogin.objects.filter(
        username__in=[x.email for x in users])
    for user in users:
        if user.props.id == request.user.id:
            user.is_self = True

        populate_user_info(user)

        try:
            user.self_usage = get_org_user_self_usage(org.org_id, user.email)
            user.share_usage = 0  #seafile_api.get_user_share_usage(user.email)
            user.quota = get_org_user_quota(org.org_id, user.email)
        except SearpcError as e:
            logger.error(e)
            user.self_usage = -1
            user.share_usage = -1
            user.quota = -1

        user.is_org_staff = is_org_staff(org.org_id, user.email)

        # populate user last login time
        user.last_login = None
        for last_login in last_logins:
            if last_login.username == user.email:
                user.last_login = last_login.last_login

    return render(
        request, 'organizations/org_user_admin.html', {
            'users': users,
            'current_page': current_page,
            'prev_page': current_page - 1,
            'next_page': current_page + 1,
            'per_page': per_page,
            'page_next': page_next,
        })
Esempio n. 4
0
def org_useradmin_admins(request):
    """List organization admin user.
    """
    org = request.user.org

    admin_users = []
    not_admin_users = []
    users = ccnet_api.get_org_users_by_url_prefix(org.url_prefix, -1, -1)
    last_logins = UserLastLogin.objects.filter(
        username__in=[x.email for x in users])

    user_self = None
    for user in users:
        populate_user_info(user)

        if is_org_staff(org.org_id, user.email):
            try:
                user.self_usage = get_org_user_self_usage(
                    org.org_id, user.email)
                user.share_usage = 0  #seafile_api.get_user_share_usage(user.email)
                user.quota = get_org_user_quota(org.org_id, user.email)
            except SearpcError as e:
                logger.error(e)
                user.self_usage = -1
                user.share_usage = -1
                user.quota = -1

            # populate user last login time
            user.last_login = None
            for last_login in last_logins:
                if last_login.username == user.email:
                    user.last_login = last_login.last_login

            # set current user at the first of the user list
            if user.id == request.user.id:
                user.is_self = True
                user_self = user
                continue
            else:
                admin_users.append(user)
        else:
            not_admin_users.append(user)

    if user_self:
        admin_users.insert(0, user_self)

    return render(request, 'organizations/org_useradmin_admins.html', {
        'users': admin_users,
        'not_admin_users': not_admin_users,
    })
Esempio n. 5
0
def useradmin(request):
    """List users in the institution.
    """
    # Make sure page request is an int. If not, deliver first page.
    try:
        current_page = int(request.GET.get('page', '1'))
        per_page = int(request.GET.get('per_page', '100'))
    except ValueError:
        current_page = 1
        per_page = 100

    offset = per_page * (current_page - 1)
    inst = request.user.institution
    usernames = [
        x.user
        for x in Profile.objects.filter(institution=inst.name)[offset:offset +
                                                               per_page + 1]
    ]
    if len(usernames) == per_page + 1:
        page_next = True
    else:
        page_next = False
    users = [User.objects.get(x) for x in usernames[:per_page]]

    last_logins = UserLastLogin.objects.filter(
        username__in=[x.username for x in users])
    for u in users:
        if u.username == request.user.username:
            u.is_self = True

        populate_user_info(u)
        _populate_user_quota_usage(u)

        for e in last_logins:
            if e.username == u.username:
                u.last_login = e.last_login

    return render_to_response('institutions/useradmin.html', {
        'inst': inst,
        'users': users,
        'current_page': current_page,
        'prev_page': current_page - 1,
        'next_page': current_page + 1,
        'per_page': per_page,
        'page_next': page_next,
    },
                              context_instance=RequestContext(request))
Esempio n. 6
0
def useradmin(request):
    """List users in the institution.
    """
    # Make sure page request is an int. If not, deliver first page.
    try:
        current_page = int(request.GET.get('page', '1'))
        per_page = int(request.GET.get('per_page', '100'))
    except ValueError:
        current_page = 1
        per_page = 100

    offset = per_page * (current_page - 1)
    inst = request.user.institution
    usernames = [x.user for x in Profile.objects.filter(institution=inst.name)[offset:offset + per_page + 1]]
    if len(usernames) == per_page + 1:
        page_next = True
    else:
        page_next = False
    users = [User.objects.get(x) for x in usernames[:per_page]]

    last_logins = UserLastLogin.objects.filter(username__in=[x.username for x in users])
    for u in users:
        if u.username == request.user.username:
            u.is_self = True

        populate_user_info(u)
        _populate_user_quota_usage(u)

        for e in last_logins:
            if e.username == u.username:
                u.last_login = e.last_login

    return render_to_response('institutions/useradmin.html', {
        'inst': inst,
        'users': users,
        'current_page': current_page,
        'prev_page': current_page - 1,
        'next_page': current_page + 1,
        'per_page': per_page,
        'page_next': page_next,
    }, context_instance=RequestContext(request))