X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/d7faec10cb85ad286673eec266ccc397142bc20c..0327b33c1e7816f8a30269f8798bff5e216ccd7c:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index f8ff5996..74036f0d 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -26,7 +26,6 @@ from catalogue import forms from catalogue import helpers from catalogue.helpers import active_tab from catalogue.models import Book, Chunk, BookPublishRecord, ChunkPublishRecord -from catalogue.tasks import publishable_error # # Quick hack around caching problems, TODO: use ETags @@ -303,7 +302,7 @@ def book(request, slug): form = forms.ReadonlyBookForm(instance=book) editable = False - publish_error = publishable_error(book) + publish_error = book.publishable_error() publishable = publish_error is None return direct_to_template(request, "catalogue/book_detail.html", extra_context={ @@ -391,19 +390,47 @@ def chunk_edit(request, slug, chunk): @transaction.commit_on_success def chunk_mass_edit(request): if request.method == 'POST': - ids = map(int, 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) - try: - stage = Chunk.tag_model.objects.get(slug=request.POST.get('stage')) + + stage = request.POST.get('stage') + if stage: + try: + stage = Chunk.tag_model.objects.get(slug=stage) + except Chunk.DoesNotExist, e: + stage = None + for c in chunks: c.stage = stage - except KeyError: pass - try: - user = User.objects.get(username=request.POST.get('user')) + username = request.POST.get('user') + logger.info("username: %s" % username) + logger.info(request.POST) + if username: + try: + user = User.objects.get(username=username) + except User.DoesNotExist, e: + user = None + for c in chunks: c.user = user - except KeyError: pass + + status = request.POST.get('status') + if status: + books_affected = set() + for c in chunks: + if status == 'publish': + c.head.publishable = True + c.head.save() + elif status == 'unpublish': + c.head.publishable = False + c.head.save() + c.touch() # cache + books_affected.add(c.book) + for b in books_affected: + b.touch() # cache for c in chunks: c.save() + + return HttpResponse("", content_type="text/plain") else: raise Http404