Upgrades
[redakcja.git] / src / wiki / views.py
index 6b3586c..543a473 100644 (file)
@@ -1,9 +1,13 @@
+# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 from datetime import datetime
 import os
 import logging
 from time import mktime
 from urllib.parse import quote
 
 from datetime import datetime
 import os
 import logging
 from time import mktime
 from urllib.parse import quote
 
+from django.apps import apps
 from django.conf import settings
 from django.urls import reverse
 from django import http
 from django.conf import settings
 from django.urls import reverse
 from django import http
@@ -11,11 +15,11 @@ from django.http import Http404, HttpResponseForbidden
 from django.middleware.gzip import GZipMiddleware
 from django.utils.decorators import decorator_from_middleware
 from django.utils.formats import localize
 from django.middleware.gzip import GZipMiddleware
 from django.utils.decorators import decorator_from_middleware
 from django.utils.formats import localize
-from django.utils.translation import ugettext as _
+from django.utils.translation import gettext as _
 from django.views.decorators.http import require_POST, require_GET
 from django.shortcuts import get_object_or_404, render
 
 from django.views.decorators.http import require_POST, require_GET
 from django.shortcuts import get_object_or_404, render
 
-from catalogue.models import Book, Chunk
+from documents.models import Book, Chunk
 from . import nice_diff
 from wiki import forms
 from wiki.helpers import (JSONResponse, JSONFormInvalid, JSONServerError,
 from . import nice_diff
 from wiki import forms
 from wiki.helpers import (JSONResponse, JSONFormInvalid, JSONServerError,
@@ -44,7 +48,7 @@ def editor(request, slug, chunk=None, template_name='wiki/document_details.html'
             try:
                 book = Book.objects.get(slug=slug)
             except Book.DoesNotExist:
             try:
                 book = Book.objects.get(slug=slug)
             except Book.DoesNotExist:
-                return http.HttpResponseRedirect(reverse("catalogue_create_missing", args=[slug]))
+                return http.HttpResponseRedirect(reverse("documents_create_missing", args=[slug]))
         else:
             raise Http404
     if not chunk.book.accessible(request):
         else:
             raise Http404
     if not chunk.book.accessible(request):
@@ -69,11 +73,22 @@ def editor(request, slug, chunk=None, template_name='wiki/document_details.html'
             "text_revert": forms.DocumentTextRevertForm(prefix="textrevert"),
             "pubmark": forms.DocumentPubmarkForm(prefix="pubmark"),
         },
             "text_revert": forms.DocumentTextRevertForm(prefix="textrevert"),
             "pubmark": forms.DocumentPubmarkForm(prefix="pubmark"),
         },
-        'can_pubmark': request.user.has_perm('catalogue.can_pubmark'),
+        'can_pubmark': request.user.has_perm('documents.can_pubmark'),
         'REDMINE_URL': settings.REDMINE_URL,
     })
 
 
         'REDMINE_URL': settings.REDMINE_URL,
     })
 
 
+def editor_user_area(request):
+    return render(request, 'wiki/editor-user-area.html', {
+        'forms': {
+            "text_save": forms.DocumentTextSaveForm(user=request.user, prefix="textsave"),
+            "text_revert": forms.DocumentTextRevertForm(prefix="textrevert"),
+            "pubmark": forms.DocumentPubmarkForm(prefix="pubmark"),
+        },
+        'can_pubmark': request.user.has_perm('documents.can_pubmark'),
+    })
+
+
 @require_GET
 def editor_readonly(request, slug, chunk=None, template_name='wiki/document_details_readonly.html'):
     try:
 @require_GET
 def editor_readonly(request, slug, chunk=None, template_name='wiki/document_details_readonly.html'):
     try:
@@ -127,7 +142,7 @@ def text(request, chunk_id):
             stage = form.cleaned_data['stage_completed']
             tags = [stage] if stage else []
             publishable = (form.cleaned_data['publishable'] and
             stage = form.cleaned_data['stage_completed']
             tags = [stage] if stage else []
             publishable = (form.cleaned_data['publishable'] and
-                    request.user.has_perm('catalogue.can_pubmark'))
+                    request.user.has_perm('documents.can_pubmark'))
             doc.commit(author=author,
                        text=text,
                        parent=parent,
             doc.commit(author=author,
                        text=text,
                        parent=parent,
@@ -261,6 +276,8 @@ def revision(request, chunk_id):
     doc = get_object_or_404(Chunk, pk=chunk_id)
     if not doc.book.accessible(request):
         return HttpResponseForbidden("Not authorized.")
     doc = get_object_or_404(Chunk, pk=chunk_id)
     if not doc.book.accessible(request):
         return HttpResponseForbidden("Not authorized.")
+    Presence = apps.get_model('team', 'Presence')
+    Presence.report(request.user, doc, request.GET.get('a') == 'true')
     return http.HttpResponse(str(doc.revision()))
 
 
     return http.HttpResponse(str(doc.revision()))
 
 
@@ -288,7 +305,7 @@ def history(request, chunk_id):
 
 
 @require_POST
 
 
 @require_POST
-@ajax_require_permission('catalogue.can_pubmark')
+@ajax_require_permission('documents.can_pubmark')
 def pubmark(request, chunk_id):
     form = forms.DocumentPubmarkForm(request.POST, prefix="pubmark")
     if form.is_valid():
 def pubmark(request, chunk_id):
     form = forms.DocumentPubmarkForm(request.POST, prefix="pubmark")
     if form.is_valid():
@@ -311,3 +328,7 @@ def pubmark(request, chunk_id):
 def themes(request):
     prefix = request.GET.get('q', '')
     return http.HttpResponse('\n'.join([str(t) for t in Theme.objects.filter(name__istartswith=prefix)]))
 def themes(request):
     prefix = request.GET.get('q', '')
     return http.HttpResponse('\n'.join([str(t) for t in Theme.objects.filter(name__istartswith=prefix)]))
+
+
+def back(request):
+    return render(request, 'wiki/back.html')