from catalogue import forms
from catalogue import helpers
from catalogue.helpers import active_tab
-from catalogue.models import Book, Chunk, BookPublishRecord, ChunkPublishRecord
+from catalogue.models import (Book, Chunk, Image, BookPublishRecord,
+ ChunkPublishRecord, ImagePublishRecord)
from catalogue.tasks import publishable_error
#
return render(request, 'catalogue/document_list.html')
+@active_tab('images')
+@never_cache
+def image_list(request, user=None):
+ return render(request, 'catalogue/image_list.html')
+
+
@never_cache
def user(request, username):
user = get_object_or_404(User, username=username)
try:
pdf_file = NamedTemporaryFile(delete=False)
- pdf.transform(RedakcjaDocProvider(),
+ pdf.transform(RedakcjaDocProvider(publishable=True),
file_path=xml_file.name,
output_file=pdf_file,
)
xml_file.flush()
epub_file = StringIO()
- epub.transform(RedakcjaDocProvider(), file_path=xml_file.name,
+ epub.transform(RedakcjaDocProvider(publishable=True),
+ file_path=xml_file.name,
output_file=epub_file)
response = HttpResponse(mimetype='application/epub+zip')
response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.epub'
})
+def image(request, slug):
+ image = get_object_or_404(Image, slug=slug)
+ if not image.accessible(request):
+ return HttpResponseForbidden("Not authorized.")
+
+ if request.user.has_perm('catalogue.change_image'):
+ if request.method == "POST":
+ form = forms.ImageForm(request.POST, instance=image)
+ if form.is_valid():
+ form.save()
+ return http.HttpResponseRedirect(image.get_absolute_url())
+ else:
+ form = forms.ImageForm(instance=image)
+ editable = True
+ else:
+ form = forms.ReadonlyImageForm(instance=image)
+ editable = False
+
+ publish_error = publishable_error(image)
+ publishable = publish_error is None
+
+ return direct_to_template(request, "catalogue/image_detail.html", extra_context={
+ "object": image,
+ "publishable": publishable,
+ "publishable_error": publish_error,
+ "form": form,
+ "editable": editable,
+ })
+
+
@permission_required('catalogue.add_chunk')
def chunk_add(request, slug, chunk):
try:
return http.HttpResponse(e)
else:
return http.HttpResponseRedirect(book.get_absolute_url())
+
+
+@require_POST
+@login_required
+def publish_image(request, slug):
+ image = get_object_or_404(Image, slug=slug)
+ if not image.accessible(request):
+ return HttpResponseForbidden("Not authorized.")
+
+ try:
+ image.publish(request.user)
+ except NotAuthorizedError:
+ return http.HttpResponseRedirect(reverse('apiclient_oauth'))
+ except BaseException, e:
+ return http.HttpResponse(e)
+ else:
+ return http.HttpResponseRedirect(image.get_absolute_url())