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
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
# TODO: move to celery
doc = book.wldocument()
# TODO: error handling
- epub = doc.as_epub(base_url=request.build_absolute_uri(book.gallery_path())).get_bytes()
+
+ #### Problemas: images in children.
+ epub = doc.as_epub(base_url='file://' + book.gallery_path() + '/').get_bytes()
response = HttpResponse(content_type='application/epub+zip')
response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.epub'
response.write(epub)
# TODO: move to celery
doc = book.wldocument()
# TODO: error handling
- mobi = doc.as_mobi(base_url=request.build_absolute_uri(book.gallery_path())).get_bytes()
+ mobi = doc.as_mobi(base_url='file://' + book.gallery_path() + '/').get_bytes()
response = HttpResponse(content_type='application/x-mobipocket-ebook')
response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.mobi'
response.write(mobi)
publish_error = book.publishable_error()
publishable = publish_error is None
+ try:
+ doc = book.wldocument()
+ except:
+ doc = None
+
return render(request, "documents/book_detail.html", {
"book": book,
+ "doc": doc,
"publishable": publishable,
"publishable_error": publish_error,
"form": form,
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)
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)