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
/
wiki
/
views.py
diff --git
a/apps/wiki/views.py
b/apps/wiki/views.py
index
75650e0
..
15fc462
100644
(file)
--- a/
apps/wiki/views.py
+++ b/
apps/wiki/views.py
@@
-9,9
+9,10
@@
from django.http import Http404
from django.middleware.gzip import GZipMiddleware
from django.utils.decorators import decorator_from_middleware
from django.utils.encoding import smart_unicode
from django.middleware.gzip import GZipMiddleware
from django.utils.decorators import decorator_from_middleware
from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext
_lazy
as _
+from django.utils.translation import ugettext as _
from django.views.decorators.http import require_POST, require_GET
from django.views.generic.simple import direct_to_template
from django.views.decorators.http import require_POST, require_GET
from django.views.generic.simple import direct_to_template
+from django.shortcuts import get_object_or_404
from catalogue.models import Book, Chunk
import nice_diff
from catalogue.models import Book, Chunk
import nice_diff
@@
-99,11
+100,8
@@
def editor_readonly(request, slug, chunk=None, template_name='wiki/document_deta
@never_cache
@decorator_from_middleware(GZipMiddleware)
@never_cache
@decorator_from_middleware(GZipMiddleware)
-def text(request, slug, chunk=None):
- try:
- doc = Chunk.get(slug, chunk)
- except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist):
- raise Http404
+def text(request, chunk_id):
+ doc = get_object_or_404(Chunk, pk=chunk_id)
if request.method == 'POST':
form = forms.DocumentTextSaveForm(request.POST, prefix="textsave")
if request.method == 'POST':
form = forms.DocumentTextSaveForm(request.POST, prefix="textsave")
@@
-114,7
+112,10
@@
def text(request, slug, chunk=None):
author = None
text = form.cleaned_data['text']
parent_revision = form.cleaned_data['parent_revision']
author = None
text = form.cleaned_data['text']
parent_revision = form.cleaned_data['parent_revision']
- parent = doc.at_revision(parent_revision)
+ if parent_revision is not None:
+ parent = doc.at_revision(parent_revision)
+ else:
+ parent = None
stage = form.cleaned_data['stage_completed']
tags = [stage] if stage else []
doc.commit(author=author,
stage = form.cleaned_data['stage_completed']
tags = [stage] if stage else []
doc.commit(author=author,
@@
-137,24
+138,26
@@
def text(request, slug, chunk=None):
try:
revision = int(revision)
except (ValueError, TypeError):
try:
revision = int(revision)
except (ValueError, TypeError):
- revision = None
+ revision = doc.revision()
+
+ if revision is not None:
+ text = doc.at_revision(revision).materialize()
+ else:
+ text = ''
return JSONResponse({
return JSONResponse({
- 'text':
doc.at_revision(revision).materialize()
,
+ 'text':
text
,
'meta': {},
'meta': {},
- 'revision': revision
if revision else doc.revision()
,
+ 'revision': revision,
})
@never_cache
@require_POST
})
@never_cache
@require_POST
-def revert(request,
slug, chunk=None
):
+def revert(request,
chunk_id
):
form = forms.DocumentTextRevertForm(request.POST, prefix="textrevert")
if form.is_valid():
form = forms.DocumentTextRevertForm(request.POST, prefix="textrevert")
if form.is_valid():
- try:
- doc = Chunk.get(slug, chunk)
- except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist):
- raise Http404
+ doc = get_object_or_404(Chunk, pk=chunk_id)
revision = form.cleaned_data['revision']
revision = form.cleaned_data['revision']
@@
-167,7
+170,7
@@
def revert(request, slug, chunk=None):
author = None
before = doc.revision()
author = None
before = doc.revision()
- logger.info("Reverting %s to %s",
slug
, revision)
+ logger.info("Reverting %s to %s",
chunk_id
, revision)
doc.at_revision(revision).revert(author=author, description=comment)
return JSONResponse({
doc.at_revision(revision).revert(author=author, description=comment)
return JSONResponse({
@@
-207,7
+210,7
@@
def gallery(request, directory):
@never_cache
@never_cache
-def diff(request,
slug, chunk=None
):
+def diff(request,
chunk_id
):
revA = int(request.GET.get('from', 0))
revB = int(request.GET.get('to', 0))
revA = int(request.GET.get('from', 0))
revB = int(request.GET.get('to', 0))
@@
-217,11
+220,12
@@
def diff(request, slug, chunk=None):
if revB == 0:
revB = None
if revB == 0:
revB = None
- try:
- doc = Chunk.get(slug, chunk)
- except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist):
- raise Http404
- docA = doc.at_revision(revA).materialize()
+ doc = get_object_or_404(Chunk, pk=chunk_id)
+ # allow diff from the beginning
+ if revA:
+ docA = doc.at_revision(revA).materialize()
+ else:
+ docA = ""
docB = doc.at_revision(revB).materialize()
return http.HttpResponse(nice_diff.html_diff_table(docA.splitlines(),
docB = doc.at_revision(revB).materialize()
return http.HttpResponse(nice_diff.html_diff_table(docA.splitlines(),
@@
-229,21
+233,15
@@
def diff(request, slug, chunk=None):
@never_cache
@never_cache
-def revision(request, slug, chunk=None):
- try:
- doc = Chunk.get(slug, chunk)
- except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist):
- raise Http404
+def revision(request, chunk_id):
+ doc = get_object_or_404(Chunk, pk=chunk_id)
return http.HttpResponse(str(doc.revision()))
@never_cache
return http.HttpResponse(str(doc.revision()))
@never_cache
-def history(request,
slug, chunk=None
):
+def history(request,
chunk_id
):
# TODO: pagination
# TODO: pagination
- try:
- doc = Chunk.get(slug, chunk)
- except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist):
- raise Http404
+ doc = get_object_or_404(Chunk, pk=chunk_id)
changes = []
for change in doc.history().order_by('-created_at'):
changes = []
for change in doc.history().order_by('-created_at'):
@@
-252,28
+250,24
@@
def history(request, slug, chunk=None):
"description": change.description,
"author": change.author_str(),
"date": change.created_at,
"description": change.description,
"author": change.author_str(),
"date": change.created_at,
- "publishable":
"Publishable
\n" if change.publishable else "",
+ "publishable":
_("Publishable") + "
\n" if change.publishable else "",
"tag": ',\n'.join(unicode(tag) for tag in change.tags.all()),
})
return JSONResponse(changes)
@require_POST
"tag": ',\n'.join(unicode(tag) for tag in change.tags.all()),
})
return JSONResponse(changes)
@require_POST
-@ajax_require_permission('
wiki
.can_pubmark')
-def pubmark(request,
slug, chunk=None
):
+@ajax_require_permission('
catalogue
.can_pubmark')
+def pubmark(request,
chunk_id
):
form = forms.DocumentPubmarkForm(request.POST, prefix="pubmark")
if form.is_valid():
form = forms.DocumentPubmarkForm(request.POST, prefix="pubmark")
if form.is_valid():
- try:
- doc = Chunk.get(slug, chunk)
- except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist):
- raise Http404
+ doc = get_object_or_404(Chunk, pk=chunk_id)
revision = form.cleaned_data['revision']
publishable = form.cleaned_data['publishable']
change = doc.at_revision(revision)
if publishable != change.publishable:
revision = form.cleaned_data['revision']
publishable = form.cleaned_data['publishable']
change = doc.at_revision(revision)
if publishable != change.publishable:
- change.publishable = publishable
- change.save()
+ change.set_publishable(publishable)
return JSONResponse({"message": _("Revision marked")})
else:
return JSONResponse({"message": _("Nothing changed")})
return JSONResponse({"message": _("Revision marked")})
else:
return JSONResponse({"message": _("Nothing changed")})