X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/c30cd74f1f4dcf0bfbabb0e5a739bcdf236b4946..631e1c32e1c23b24eda0c747f6bbd30cb394b791:/src/documents/views.py diff --git a/src/documents/views.py b/src/documents/views.py index 38e69c1b..ea222361 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -5,7 +5,7 @@ from collections import defaultdict from datetime import datetime, date, timedelta import logging import os -from urllib.parse import unquote, urlsplit, urlunsplit +from urllib.parse import quote_plus, unquote, urlsplit, urlunsplit from django.conf import settings from django.contrib import auth @@ -19,8 +19,7 @@ from django.http import Http404, HttpResponse, HttpResponseForbidden from django.http.response import HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.utils.encoding import iri_to_uri -from django.utils.http import urlquote_plus -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.decorators.http import require_POST from django_cas_ng.decorators import user_passes_test @@ -635,7 +634,7 @@ class GalleryView(UploadView): return "%s%s/" % (settings.IMAGE_DIR, self.object.gallery) -def active_users_list(request): +def active_users_list(request, csv=False): year = int(request.GET.get('y', date.today().year)) by_user = defaultdict(lambda: 0) by_email = defaultdict(lambda: 0) @@ -660,10 +659,24 @@ def active_users_list(request): for email, count in by_email.items(): active_users.append((email, names_by_email[email], count)) active_users.sort(key=lambda x: -x[2]) - return render(request, 'documents/active_users_list.html', { - 'users': active_users, - 'year': year, - }) + if csv: + return http.HttpResponse( + '\n'.join(( + ','.join( + (str(x[2]), x[0], ','.join(x[1])) + ) + for x in active_users + )), + content_type='text/csv', + headers={ + 'Content-Disposition': f'attachment; filename=redakcja-{year}.csv', + } + ) + else: + return render(request, 'documents/active_users_list.html', { + 'users': active_users, + 'year': year, + }) @user_passes_test(lambda u: u.is_superuser)