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
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
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
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
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
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
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
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
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
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