X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/4fae06ea1b9fec1a45482ac043aa049ebce3f465..f769689fb6c21d76aa70f4113ba918e45b528576:/src/documents/views.py diff --git a/src/documents/views.py b/src/documents/views.py index 6c9f29e3..39320d5e 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -99,7 +99,7 @@ def activity(request, isodate=None): @never_cache def logout_then_redirect(request): auth.logout(request) - return http.HttpResponseRedirect(urlquote_plus(request.GET.get('next', '/'), safe='/?=')) + return http.HttpResponseRedirect(quote_plus(request.GET.get('next', '/'), safe='/?=')) @permission_required('documents.add_book') @@ -262,6 +262,7 @@ def book_html(request, slug): return render(request, 'documents/book_text.html', locals()) +@login_required @never_cache def book_pdf(request, slug, mobile=False): book = get_object_or_404(Book, slug=slug) @@ -278,6 +279,7 @@ def book_pdf(request, slug, mobile=False): book.slug + '.pdf', 'application/pdf') +@login_required @never_cache def book_epub(request, slug): book = get_object_or_404(Book, slug=slug) @@ -296,6 +298,7 @@ def book_epub(request, slug): return response +@login_required @never_cache def book_mobi(request, slug): book = get_object_or_404(Book, slug=slug) @@ -444,7 +447,7 @@ def chunk_edit(request, slug, chunk): form.save() go_next = request.GET.get('next', None) if go_next: - go_next = urlquote_plus(unquote(iri_to_uri(go_next)), safe='/?=&') + go_next = quote_plus(unquote(iri_to_uri(go_next)), safe='/?=&') else: go_next = doc.book.get_absolute_url() return http.HttpResponseRedirect(go_next) @@ -455,7 +458,7 @@ def chunk_edit(request, slug, chunk): if referer: parts = urlsplit(referer) parts = ['', ''] + list(parts[2:]) - go_next = urlquote_plus(urlunsplit(parts)) + go_next = quote_plus(urlunsplit(parts)) else: go_next = '' @@ -634,7 +637,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) @@ -659,10 +662,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)