editor: Handling backspace/delete on the text boundries
[redakcja.git] / apps / catalogue / views.py
index e09940d..9bd69f8 100644 (file)
@@ -25,8 +25,8 @@ from apiclient import NotAuthorizedError
 from catalogue import forms
 from catalogue import helpers
 from catalogue.helpers import active_tab
-from catalogue.models import Book, Chunk, BookPublishRecord, ChunkPublishRecord
-from fileupload.views import UploadView
+from catalogue.models import Book, Chunk, BookPublishRecord, ChunkPublishRecord, Project
+from fileupload.views import UploadView, PackageView
 
 #
 # Quick hack around caching problems, TODO: use ETags
@@ -352,6 +352,7 @@ def chunk_add(request, slug, chunk):
     })
 
 
+@login_required
 def chunk_edit(request, slug, chunk):
     try:
         doc = Chunk.get(slug, chunk)
@@ -389,6 +390,7 @@ def chunk_edit(request, slug, chunk):
 
 
 @transaction.commit_on_success
+@login_required
 def chunk_mass_edit(request):
     if request.method == 'POST':
         ids = map(int, filter(lambda i: i.strip()!='', request.POST.get('ids').split(',')))
@@ -429,6 +431,17 @@ def chunk_mass_edit(request):
             for b in books_affected:
                 b.touch()  # cache
 
+        project_id = request.POST.get('project')
+        if project_id:
+            try:
+                project = Project.objects.get(pk=int(project_id))
+            except (Project.DoesNotExist, ValueError), e:
+                project = None
+            for c in chunks:
+                book = c.book
+                book.project = project
+                book.save()
+
         for c in chunks: c.save()
 
         return HttpResponse("", content_type="text/plain")
@@ -475,9 +488,16 @@ def publish(request, slug):
         return http.HttpResponseRedirect(book.get_absolute_url())
 
 
-class GalleryView(UploadView):
+class GalleryMixin(object):
+    def get_directory(self):
+        return "%s%s/" % (settings.IMAGE_DIR, self.object.gallery)
     def get_object(self, request, slug):
-        return get_object_or_404(Book, slug=slug)
+        book = get_object_or_404(Book, slug=slug)
+        if not book.gallery:
+            raise Http404
+        return book
+
+class GalleryView(GalleryMixin, UploadView):
 
     def breadcrumbs(self):
         return [
@@ -486,5 +506,8 @@ class GalleryView(UploadView):
             (_('scan gallery'),),
         ]
 
-    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 = dict(slug=slug))