fnp
/
redakcja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ajax decorator
[redakcja.git]
/
apps
/
catalogue
/
views.py
diff --git
a/apps/catalogue/views.py
b/apps/catalogue/views.py
index
e1dc2a3
..
a1a1ab3
100644
(file)
--- a/
apps/catalogue/views.py
+++ b/
apps/catalogue/views.py
@@
-1,7
+1,7
@@
-from datetime import datetime, date, timedelta
+# -*- coding: utf-8 -*-
+from datetime import date, timedelta
import logging
import os
import logging
import os
-from StringIO import StringIO
from urllib import unquote
from urlparse import urlsplit, urlunsplit
from urllib import unquote
from urlparse import urlsplit, urlunsplit
@@
-10,7
+10,7
@@
from django.contrib import auth
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required, permission_required
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required, permission_required
from django.core.urlresolvers import reverse
-from django.db.models import Count
, Q
+from django.db.models import Count
from django.db import transaction
from django import http
from django.http import Http404, HttpResponse, HttpResponseForbidden
from django.db import transaction
from django import http
from django.http import Http404, HttpResponse, HttpResponseForbidden
@@
-25,8
+25,8
@@
from apiclient import NotAuthorizedError
from catalogue import forms
from catalogue import helpers
from catalogue.helpers import active_tab
from catalogue import forms
from catalogue import helpers
from catalogue.helpers import active_tab
-from catalogue.models import Book, Chunk,
BookPublishRecord, ChunkPublishRecord,
Project
-from fileupload.views import UploadView
+from catalogue.models import Book, Chunk, Project
+from fileupload.views import UploadView
, PackageView
#
# Quick hack around caching problems, TODO: use ETags
#
# Quick hack around caching problems, TODO: use ETags
@@
-53,11
+53,11
@@
def user(request, username):
@never_cache
def my(request):
return render(request, 'catalogue/my_page.html', {
@never_cache
def my(request):
return render(request, 'catalogue/my_page.html', {
- 'last_books': sorted(
request.session.get("wiki_last_books", {}).items(),
-
key=lambda x: x[1]['time'], reverse=True
),
-
-
"logout_to"
: '/',
-
})
+ 'last_books': sorted(
+
request.session.get("wiki_last_books", {}).items(
),
+ key=lambda x: x[1]['time'], reverse=True),
+
'logout_to'
: '/',
+ })
@active_tab('users')
@active_tab('users')
@@
-114,12
+114,11
@@
def create_missing(request, slug=None):
gallery=form.cleaned_data['gallery'],
)
gallery=form.cleaned_data['gallery'],
)
- return http.HttpResponseRedirect(reverse("
catalogue_book
", args=[book.slug]))
+ return http.HttpResponseRedirect(reverse("
wiki_editor
", args=[book.slug]))
else:
form = forms.DocumentCreateForm(initial={
"slug": slug,
"title": slug.replace('-', ' ').title(),
else:
form = forms.DocumentCreateForm(initial={
"slug": slug,
"title": slug.replace('-', ' ').title(),
- "gallery": slug,
})
return render(request, "catalogue/document_create_missing.html", {
})
return render(request, "catalogue/document_create_missing.html", {
@@
-136,7
+135,7
@@
def upload(request):
if request.method == "POST":
form = forms.DocumentsUploadForm(request.POST, request.FILES)
if form.is_valid():
if request.method == "POST":
form = forms.DocumentsUploadForm(request.POST, request.FILES)
if form.is_valid():
- import slughifi
+
from slughifi
import slughifi
if request.user.is_authenticated():
creator = request.user
if request.user.is_authenticated():
creator = request.user
@@
-162,7
+161,7
@@
def upload(request):
error_list.append((filename, slug, _('Slug already used in repository.')))
else:
try:
error_list.append((filename, slug, _('Slug already used in repository.')))
else:
try:
- zip.read(filename).decode('utf-8') # test read
+ zip.read(filename).decode('utf-8')
# test read
ok_list.append((filename, slug, title))
except UnicodeDecodeError:
error_list.append((filename, title, _('File should be UTF-8 encoded.')))
ok_list.append((filename, slug, title))
except UnicodeDecodeError:
error_list.append((filename, title, _('File should be UTF-8 encoded.')))
@@
-239,7
+238,8
@@
def book_html(request, slug):
# book_themes = book_themes.items()
# book_themes.sort(key=lambda s: s[0].sort_key)
# book_themes = book_themes.items()
# book_themes.sort(key=lambda s: s[0].sort_key)
- return render_to_response('catalogue/book_text.html', locals(),
+ return render_to_response(
+ 'catalogue/book_text.html', locals(),
context_instance=RequestContext(request))
context_instance=RequestContext(request))
@@
-254,8
+254,7
@@
def book_pdf(request, slug):
# TODO: error handling
pdf_file = doc.as_pdf()
from catalogue.ebook_utils import serve_file
# TODO: error handling
pdf_file = doc.as_pdf()
from catalogue.ebook_utils import serve_file
- return serve_file(pdf_file.get_filename(),
- book.slug + '.pdf', 'application/pdf')
+ return serve_file(pdf_file.get_filename(), book.slug + '.pdf', 'application/pdf')
@never_cache
@never_cache
@@
-331,7
+330,8
@@
def chunk_add(request, slug, chunk):
creator = request.user
else:
creator = None
creator = request.user
else:
creator = None
- doc.split(creator=creator,
+ doc.split(
+ creator=creator,
slug=form.cleaned_data['slug'],
title=form.cleaned_data['title'],
gallery_start=form.cleaned_data['gallery_start'],
slug=form.cleaned_data['slug'],
title=form.cleaned_data['title'],
gallery_start=form.cleaned_data['gallery_start'],
@@
-352,6
+352,7
@@
def chunk_add(request, slug, chunk):
})
})
+@login_required
def chunk_edit(request, slug, chunk):
try:
doc = Chunk.get(slug, chunk)
def chunk_edit(request, slug, chunk):
try:
doc = Chunk.get(slug, chunk)
@@
-389,19
+390,21
@@
def chunk_edit(request, slug, chunk):
@transaction.commit_on_success
@transaction.commit_on_success
+@login_required
def chunk_mass_edit(request):
if request.method == 'POST':
def chunk_mass_edit(request):
if request.method == 'POST':
- ids = map(int, filter(lambda i: i.strip()
!=
'', request.POST.get('ids').split(',')))
+ ids = map(int, filter(lambda i: i.strip()
!=
'', request.POST.get('ids').split(',')))
chunks = map(lambda i: Chunk.objects.get(id=i), ids)
stage = request.POST.get('stage')
if stage:
try:
stage = Chunk.tag_model.objects.get(slug=stage)
chunks = map(lambda i: Chunk.objects.get(id=i), ids)
stage = request.POST.get('stage')
if stage:
try:
stage = Chunk.tag_model.objects.get(slug=stage)
- except Chunk.DoesNotExist
, e
:
+ except Chunk.DoesNotExist:
stage = None
stage = None
- for c in chunks: c.stage = stage
+ for c in chunks:
+ c.stage = stage
username = request.POST.get('user')
logger.info("username: %s" % username)
username = request.POST.get('user')
logger.info("username: %s" % username)
@@
-412,7
+415,8
@@
def chunk_mass_edit(request):
except User.DoesNotExist, e:
user = None
except User.DoesNotExist, e:
user = None
- for c in chunks: c.user = user
+ for c in chunks:
+ c.user = user
status = request.POST.get('status')
if status:
status = request.POST.get('status')
if status:
@@
-440,7
+444,8
@@
def chunk_mass_edit(request):
book.project = project
book.save()
book.project = project
book.save()
- for c in chunks: c.save()
+ for c in chunks:
+ c.save()
return HttpResponse("", content_type="text/plain")
else:
return HttpResponse("", content_type="text/plain")
else:
@@
-486,19
+491,29
@@
def publish(request, slug):
return http.HttpResponseRedirect(book.get_absolute_url())
return http.HttpResponseRedirect(book.get_absolute_url())
-class GalleryView(UploadView):
- def get_object(self, request, slug):
+class GalleryMixin(object):
+ def get_directory(self):
+ return "%s%s/" % (settings.IMAGE_DIR, self.object.gallery)
+
+ @staticmethod
+ def get_object(request, slug):
book = get_object_or_404(Book, slug=slug)
if not book.gallery:
raise Http404
return book
book = get_object_or_404(Book, slug=slug)
if not book.gallery:
raise Http404
return book
+
+class GalleryView(GalleryMixin, UploadView):
+
def breadcrumbs(self):
return [
def breadcrumbs(self):
return [
- (
_('books')
, reverse('catalogue_document_list')),
+ (
u'moduły'
, reverse('catalogue_document_list')),
(self.object.title, self.object.get_absolute_url()),
(self.object.title, self.object.get_absolute_url()),
- (
_('scan gallery')
,),
+ (
u'materiały'
,),
]
]
- def get_directory(self):
- return "%s%s/" % (settings.IMAGE_DIR, self.object.gallery)
+
+class GalleryPackageView(GalleryMixin, PackageView):
+
+ def get_redirect_url(self, slug):
+ return reverse('catalogue_book_gallery', kwargs={'slug': slug})