Exemple #1
0
    def get(self, request):

        try:
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '25'))
        except ValueError:
            page = 1
            per_page = 25

        start = (page - 1) * per_page
        end = page * per_page + 1
        users = ccnet_api.get_emailusers('DB', start, end)
        total_count = ccnet_api.count_emailusers('DB') + \
                ccnet_api.count_inactive_emailusers('DB')

        data = []
        for user in users:
            user_info = get_user_info(user.email)
            data.append(user_info)

        result = {'data': data, 'total_count': total_count}
        resp = Response(result)

        ## generate `Links` header for paginator
        base_url = reverse('api-v2.1-admin-users')
        links_header = generate_links_header_for_paginator(
            base_url, page, per_page, total_count)
        resp['Links'] = links_header

        return resp
Exemple #2
0
    def get(self, request):

        try:
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '25'))
        except ValueError:
            page = 1
            per_page = 25

        start = (page - 1) * per_page
        end = page * per_page + 1
        users = ccnet_api.get_emailusers('DB', start, end)
        total_count = ccnet_api.count_emailusers('DB') + \
                ccnet_api.count_inactive_emailusers('DB')

        data = []
        for user in users:
            user_info = get_user_info(user.email)
            data.append(user_info)

        result = {'data': data, 'total_count': total_count}
        resp = Response(result)

        ## generate `Links` header for paginator
        base_url = reverse('api-v2.1-admin-users')
        links_header = generate_links_header_for_paginator(base_url,
                page, per_page, total_count)
        resp['Links'] = links_header

        return resp
Exemple #3
0
    def get(self, request, review_id, format=None):
        """List all comments of a review.
        """
        # resource check
        try:
            r = DraftReview.objects.get(pk=review_id)
        except DraftReview.DoesNotExist:
            return api_error(status.HTTP_404_NOT_FOUND,
                             'Review %s not found' % review_id)

        resolved = request.GET.get('resolved', None)
        if resolved not in ('true', 'false', None):
            error_msg = 'resolved invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        # permission check
        if check_folder_permission(request, r.origin_repo_id, '/') is None:
            return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')

        try:
            avatar_size = int(
                request.GET.get('avatar_size', AVATAR_DEFAULT_SIZE))
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '25'))
        except ValueError:
            avatar_size = AVATAR_DEFAULT_SIZE
            page = 1
            per_page = 25

        start = (page - 1) * per_page
        end = page * per_page

        total_count = ReviewComment.objects.filter(review_id=r).count()
        comments = []

        if resolved is None:
            file_comments = ReviewComment.objects.filter(review_id=r)
        else:
            comment_resolved = to_python_boolean(resolved)
            file_comments = ReviewComment.objects.filter(
                review_id=r, resolved=comment_resolved)[start:end]

        for file_comment in file_comments:
            comment = file_comment.to_dict()
            comment.update(
                user_to_dict(file_comment.author,
                             request=request,
                             avatar_size=avatar_size))
            comments.append(comment)

        result = {'comments': comments, 'total_count': total_count}
        resp = Response(result)
        base_url = reverse('api2-review-comments', args=[review_id])
        links_header = generate_links_header_for_paginator(
            base_url, page, per_page, total_count)
        resp['Links'] = links_header
        return resp
Exemple #4
0
    def get(self, request, repo_id, format=None):
        """List all comments of a file.
        """
        path = request.GET.get('p', '/').rstrip('/')
        if not path:
            return api_error(status.HTTP_400_BAD_REQUEST, 'Wrong path.')

        resolved = request.GET.get('resolved', None)
        if resolved not in ('true', 'false', None):
            error_msg = 'resolved invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        # permission check
        if check_folder_permission(request, repo_id, '/') is None:
            return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')

        try:
            avatar_size = int(
                request.GET.get('avatar_size', AVATAR_DEFAULT_SIZE))
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '25'))
        except ValueError:
            avatar_size = AVATAR_DEFAULT_SIZE
            page = 1
            per_page = 25

        start = (page - 1) * per_page
        end = page * per_page

        total_count = FileComment.objects.get_by_file_path(repo_id,
                                                           path).count()
        comments = []

        if resolved is None:
            file_comments = FileComment.objects.get_by_file_path(
                repo_id, path)[start:end]
        else:
            comment_resolved = to_python_boolean(resolved)
            file_comments = FileComment.objects.get_by_file_path(
                repo_id, path).filter(resolved=comment_resolved)[start:end]

        for file_comment in file_comments:
            comment = file_comment.to_dict()
            comment.update(
                user_to_dict(file_comment.author,
                             request=request,
                             avatar_size=avatar_size))
            comments.append(comment)

        result = {'comments': comments, 'total_count': total_count}
        resp = Response(result)
        base_url = reverse('api2-file-comments', args=[repo_id])
        links_header = generate_links_header_for_paginator(
            base_url, page, per_page, total_count)
        resp['Links'] = links_header
        return resp
Exemple #5
0
    def get(self, request):
        """ List all logs

        Permission checking:
        1. Admin user;
        """

        if not request.user.admin_permissions.can_view_admin_log():
            return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')

        email = request.GET.get('email', '')
        operation = request.GET.get('operation', '')
        if operation:
            if operation not in ADMIN_LOG_OPERATION_TYPE:
                error_msg = 'operation invalid.'
                return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        try:
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '100'))
        except ValueError:
            page = 1
            per_page = 100

        if page <= 0:
            error_msg = 'page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        if per_page <= 0:
            error_msg = 'per_page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        # generate data result
        data = []
        offset = per_page * (page - 1)
        total_count = AdminLog.objects.get_admin_logs(
            email=email, operation=operation).count()
        admin_logs = AdminLog.objects.get_admin_logs(
            email=email, operation=operation)[offset:offset + per_page]

        for log in admin_logs:
            log_info = get_log_info(log)
            data.append(log_info)

        result = {'data': data, 'total_count': total_count}
        resp = Response(result)

        ## generate `Links` header for paginator
        options_dict = {'email': email, 'operation': operation}
        base_url = reverse('api-v2.1-admin-admin-operation-logs')
        links_header = generate_links_header_for_paginator(
            base_url, page, per_page, total_count, options_dict)
        resp['Links'] = links_header

        return resp
Exemple #6
0
    def get(self, request):
        """ List all logs

        Permission checking:
        1. Admin user;
        """

        email = request.GET.get('email', '')
        operation = request.GET.get('operation', '')
        if operation:
            if operation not in ADMIN_LOG_OPERATION_TYPE:
                error_msg = 'operation invalid.'
                return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        try:
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '100'))
        except ValueError:
            page = 1
            per_page = 100

        if page <= 0:
            error_msg = 'page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        if per_page <= 0:
            error_msg = 'per_page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        # generate data result
        data = []
        offset = per_page * (page -1)
        total_count = AdminLog.objects.get_admin_logs(email=email, operation=operation).count()
        admin_logs = AdminLog.objects.get_admin_logs(email=email, operation=operation)[offset:offset+per_page]

        for log in admin_logs:
            log_info = get_log_info(log)
            data.append(log_info)

        result = {'data': data, 'total_count': total_count}
        resp = Response(result)

        ## generate `Links` header for paginator
        options_dict = {'email': email, 'operation': operation}
        base_url = reverse('api-v2.1-admin-admin-operation-logs')
        links_header = generate_links_header_for_paginator(base_url,
                page, per_page, total_count, options_dict)
        resp['Links'] = links_header

        return resp
Exemple #7
0
    def get(self, request, repo_id, format=None):
        """List all comments of a file.
        """
        path = request.GET.get('p', '/').rstrip('/')
        if not path:
            return api_error(status.HTTP_400_BAD_REQUEST, 'Wrong path.')

        resolved = request.GET.get('resolved', None)
        if resolved not in ('true', 'false', None):
            error_msg = 'resolved invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        # permission check
        if check_folder_permission(request, repo_id, '/') is None:
            return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')

        try:
            avatar_size = int(request.GET.get('avatar_size',
                                              AVATAR_DEFAULT_SIZE))
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '25'))
        except ValueError:
            avatar_size = AVATAR_DEFAULT_SIZE
            page = 1
            per_page = 25

        start = (page - 1) * per_page
        end = page * per_page 

        total_count = FileComment.objects.get_by_file_path(repo_id, path).count()
        comments = []

        if resolved is None:
            file_comments = FileComment.objects.get_by_file_path(repo_id, path)[start: end]
        else:
            comment_resolved = to_python_boolean(resolved)
            file_comments = FileComment.objects.get_by_file_path(repo_id, path).filter(resolved=comment_resolved)[start: end]

        for file_comment in file_comments:
            comment = file_comment.to_dict()
            comment.update(user_to_dict(file_comment.author, request=request, avatar_size=avatar_size))
            comments.append(comment)

        result = {'comments': comments, 'total_count': total_count}
        resp = Response(result)
        base_url = reverse('api2-file-comments', args=[repo_id])
        links_header = generate_links_header_for_paginator(base_url, page, 
                                                           per_page, total_count)
        resp['Links'] = links_header
        return resp
Exemple #8
0
    def get(self, request):

        if not request.user.admin_permissions.can_view_admin_log():
            return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')

        try:
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '100'))
        except ValueError:
            page = 1
            per_page = 100

        if page <= 0:
            error_msg = 'page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        if per_page <= 0:
            error_msg = 'per_page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        offset = per_page * (page - 1)

        from seahub_extra.sysadmin_extra.models import UserLoginLog
        admin_user_emails = self._get_admin_user_emails()
        all_logs = UserLoginLog.objects.filter(username__in=admin_user_emails)

        total_count = all_logs.count()
        logs = all_logs[offset:offset + per_page]

        data = self._get_response_data(logs)
        result = {'data': data, 'total_count': total_count}
        resp = Response(result)

        ## generate `Links` header for paginator
        base_url = reverse('api-v2.1-admin-admin-login-logs')
        links_header = generate_links_header_for_paginator(
            base_url, page, per_page, total_count)

        resp['Links'] = links_header

        return resp
Exemple #9
0
    def get(self, request, repo_id, format=None):
        """List all comments of a file.
        """
        path = request.GET.get('p', '/').rstrip('/')
        if not path:
            return api_error(status.HTTP_400_BAD_REQUEST, 'Wrong path.')

        try:
            avatar_size = int(
                request.GET.get('avatar_size', AVATAR_DEFAULT_SIZE))
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '25'))
        except ValueError:
            avatar_size = AVATAR_DEFAULT_SIZE
            page = 1
            per_page = 25

        start = (page - 1) * per_page
        end = page * per_page

        total_count = FileComment.objects.get_by_file_path(repo_id,
                                                           path).count()
        comments = []
        for o in FileComment.objects.get_by_file_path(repo_id,
                                                      path)[start:end]:
            comment = o.to_dict()
            comment.update(
                user_to_dict(o.author,
                             request=request,
                             avatar_size=avatar_size))
            comments.append(comment)

        result = {'comments': comments, 'total_count': total_count}
        resp = Response(result)
        base_url = reverse('api2-file-comments', args=[repo_id])
        links_header = generate_links_header_for_paginator(
            base_url, page, per_page, total_count)
        resp['Links'] = links_header
        return resp
Exemple #10
0
    def get(self, request):

        try:
            page = int(request.GET.get('page', '1'))
            per_page = int(request.GET.get('per_page', '100'))
        except ValueError:
            page = 1
            per_page = 100

        if page <= 0:
            error_msg = 'page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        if per_page <= 0:
            error_msg = 'per_page invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        offset = per_page * (page -1)

        from seahub_extra.sysadmin_extra.models import UserLoginLog
        admin_user_emails = self._get_admin_user_emails()
        all_logs = UserLoginLog.objects.filter(username__in=admin_user_emails)

        total_count = all_logs.count()
        logs = all_logs[offset:offset+per_page]

        data = self._get_response_data(logs)
        result = {'data': data, 'total_count': total_count}
        resp = Response(result)

        ## generate `Links` header for paginator
        base_url = reverse('api-v2.1-admin-admin-login-logs')
        links_header = generate_links_header_for_paginator(base_url,
                page, per_page, total_count)

        resp['Links'] = links_header

        return resp