fnp
/
redakcja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
#1744: go back after chunk edit,
[redakcja.git]
/
apps
/
catalogue
/
views.py
diff --git
a/apps/catalogue/views.py
b/apps/catalogue/views.py
index
9298116
..
cac1bd2
100644
(file)
--- a/
apps/catalogue/views.py
+++ b/
apps/catalogue/views.py
@@
-2,15
+2,18
@@
from datetime import datetime
import logging
import os
from StringIO import StringIO
import logging
import os
from StringIO import StringIO
+from urllib import unquote
+from urlparse import urlsplit, urlunsplit
from django.contrib import auth
from django.contrib.auth.models import User
from django.contrib import auth
from django.contrib.auth.models import User
-from django.contrib.auth.decorators import login_required
+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 import http
from django.http import Http404
from django.shortcuts import get_object_or_404, render
from django.core.urlresolvers import reverse
from django.db.models import Count, Q
from django import http
from django.http import Http404
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.views.decorators.http import require_POST
from django.utils.http import urlquote_plus
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.http import require_POST
@@
-75,6
+78,7
@@
def logout_then_redirect(request):
return http.HttpResponseRedirect(urlquote_plus(request.GET.get('next', '/'), safe='/?='))
return http.HttpResponseRedirect(urlquote_plus(request.GET.get('next', '/'), safe='/?='))
+@permission_required('catalogue.add_book')
@active_tab('create')
def create_missing(request, slug=None):
if slug is None:
@active_tab('create')
def create_missing(request, slug=None):
if slug is None:
@@
-109,6
+113,7
@@
def create_missing(request, slug=None):
})
})
+@permission_required('catalogue.add_book')
@active_tab('upload')
def upload(request):
if request.method == "POST":
@active_tab('upload')
def upload(request):
if request.method == "POST":
@@
-316,6
+321,7
@@
def book(request, slug):
})
})
+@permission_required('catalogue.add_chunk')
def chunk_add(request, slug, chunk):
try:
doc = Chunk.get(slug, chunk)
def chunk_add(request, slug, chunk):
try:
doc = Chunk.get(slug, chunk)
@@
-356,15
+362,27
@@
def chunk_edit(request, slug, chunk):
form = forms.ChunkForm(request.POST, instance=doc)
if form.is_valid():
form.save()
form = forms.ChunkForm(request.POST, instance=doc)
if form.is_valid():
form.save()
- return http.HttpResponseRedirect(doc.book.get_absolute_url())
+ go_next = request.GET.get('next', None)
+ if go_next:
+ go_next = urlquote_plus(unquote(iri_to_uri(go_next)), safe='/?=&')
+ else:
+ go_next = doc.book.get_absolute_url()
+ return http.HttpResponseRedirect(go_next)
else:
form = forms.ChunkForm(instance=doc)
else:
form = forms.ChunkForm(instance=doc)
+
+ parts = urlsplit(request.META['HTTP_REFERER'])
+ parts = ['', ''] + list(parts[2:])
+ go_next = urlquote_plus(urlunsplit(parts))
+
return direct_to_template(request, "catalogue/chunk_edit.html", extra_context={
"chunk": doc,
"form": form,
return direct_to_template(request, "catalogue/chunk_edit.html", extra_context={
"chunk": doc,
"form": form,
+ "go_next": go_next,
})
})
+@permission_required('catalogue.change_book')
def book_append(request, slug):
book = get_object_or_404(Book, slug=slug)
if request.method == "POST":
def book_append(request, slug):
book = get_object_or_404(Book, slug=slug)
if request.method == "POST":
@@
-381,6
+399,7
@@
def book_append(request, slug):
})
})
+@permission_required('catalogue.change_book')
def book_edit(request, slug):
book = get_object_or_404(Book, slug=slug)
if request.method == "POST":
def book_edit(request, slug):
book = get_object_or_404(Book, slug=slug)
if request.method == "POST":