- zip = form.cleaned_data['zip']
- skipped_list = []
- ok_list = []
- error_list = []
- slugs = {}
- existing = [book.slug for book in Book.objects.all()]
- for filename in zip.namelist():
- if filename[-1] == '/':
- continue
- title = os.path.basename(filename)[:-4]
- slug = slughifi(title)
- if not (slug and filename.endswith('.xml')):
- skipped_list.append(filename)
- elif slug in slugs:
- error_list.append((filename, slug, _('Slug already used for %s' % slugs[slug])))
- elif slug in existing:
- error_list.append((filename, slug, _('Slug already used in repository.')))
- else:
- try:
- zip.read(filename).decode('utf-8') # test read
- ok_list.append((filename, slug, title))
- except UnicodeDecodeError:
- error_list.append((filename, title, _('File should be UTF-8 encoded.')))
- slugs[slug] = filename
-
- if not error_list:
- for filename, slug, title in ok_list:
- book = Book.create(
- text=zip.read(filename).decode('utf-8'),
- creator=creator,
- slug=slug,
- title=title,
- )
-
- return direct_to_template(request, "catalogue/document_upload.html", extra_context={
- "form": form,
- "ok_list": ok_list,
- "skipped_list": skipped_list,
- "error_list": error_list,
-
- "logout_to": '/',
- })
+ try:
+ published_revision = doc.publish_log.all()[0].revision
+ except IndexError:
+ published_revision = None
+
+ if rev_pk is None:
+ if preview:
+ revision = doc.revision
+ else:
+ if published_revision is not None:
+ revision = published_revision
+ else:
+ # No published version, fallback to preview mode.
+ preview = True
+ revision = doc.revision