def extra_context(cls, book, request): from .channel import get_book_statuses_dict return { 'roles_permissions': security.get_user_permissions(request.user, book), 'status_list': get_book_statuses_dict(book) }
def render_to_response(self, context, **response_kwargs): book = self.object book_security = security.get_security_for_book(self.request.user, book) book_permissions = security.get_user_permissions(self.request.user, book) return self.render_json_response({ 'admin': book_security.is_admin(), 'permissions': book_permissions, })
def get_context_data(self, **kwargs): context = super(TemplateView, self).get_context_data(**kwargs) try: book = models.Book.objects.get(url_title__iexact=kwargs['bookid']) except models.Book.DoesNotExist: return {'book': None, 'book_id': kwargs['bookid']} book_version = book.get_version(None) toc = get_toc_for_book(book_version) context['request'] = self.request context['book'] = book context['book_version'] = book_version.get_version() context[ 'book_language'] = book.language.abbrevation if book.language else 'en' context['security'] = self.security try: rtl = models.Info.objects.get(book=book, kind=0, name='{http://booki.cc/}dir') context['book_dir'] = rtl.get_value().lower() except models.Info.DoesNotExist: context['book_dir'] = 'ltr' context['chapters'] = toc # check if we should track changes for current user user_permissions = get_user_permissions(self.request.user, book) context['track_changes_approve'] = self.security.has_perm( 'edit.track_changes_approve') context['track_changes_enable'] = self.security.has_perm( 'edit.track_changes_enable') should_track_changes = 'edit.track_changes' in user_permissions context['track_changes'] = json.dumps(book_version.track_changes or should_track_changes) context['base_url'] = settings.BOOKTYPE_URL context['static_url'] = settings.STATIC_URL context['is_admin'] = self.security.is_admin() context['is_owner'] = book.owner == self.request.user context['publish_options'] = config.get_configuration( 'PUBLISH_OPTIONS') context['autosave'] = json.dumps({ 'enabled': config.get_configuration('EDITOR_AUTOSAVE_ENABLED'), 'delay': config.get_configuration('EDITOR_AUTOSAVE_DELAY') }) context['upload_docx_form'] = UploadDocxFileForm() return context
def extra_context(cls, book, request): from django.utils.translation import ugettext_lazy as _lazy all_statuses = (BookStatus.objects .filter(book=book) .annotate(num_chapters=Count('chapter')) .order_by('-weight')) all_statuses = [{'pk': status.pk, 'name': _lazy(status.name)} for status in all_statuses] return { 'roles_permissions': security.get_user_permissions(request.user, book), 'status_list': all_statuses, }
def post(self, *args, **kwargs): request = self.request book = self.object = self.get_object() title = request.POST.get("title", "") book_security = security.get_security_for_book(request.user, book) book_permissions = security.get_user_permissions(request.user, book) self.template_name = "reader/book_delete_error.html" if (book_security.has_perm('edit.delete_book') and title.strip() == book.title.strip()): remove_book(book) self.template_name = "reader/book_delete_redirect.html" messages.success(request, _('Book successfully deleted.')) return self.render_to_response(context=self.get_context_data())
def get_context_data(self, **kwargs): context = super(TemplateView, self).get_context_data(**kwargs) try: book = models.Book.objects.get(url_title__iexact=kwargs['bookid']) except models.Book.DoesNotExist: return {'book': None, 'book_id': kwargs['bookid']} book_version = book.get_version(None) toc = get_toc_for_book(book_version) context['request'] = self.request context['book'] = book context['book_version'] = book_version.get_version() context['book_language'] = book.language.abbrevation if book.language else 'en' context['security'] = self.security try: rtl = models.Info.objects.get(book=book, kind=0, name='{http://booki.cc/}dir') context['book_dir'] = rtl.get_value().lower() except models.Info.DoesNotExist: context['book_dir'] = 'ltr' context['chapters'] = toc # check if we should track changes for current user user_permissions = get_user_permissions(self.request.user, book) context['track_changes_approve'] = self.security.has_perm('edit.track_changes_approve') context['track_changes_enable'] = self.security.has_perm('edit.track_changes_enable') should_track_changes = 'edit.track_changes' in user_permissions context['track_changes'] = json.dumps( book_version.track_changes or should_track_changes) context['base_url'] = settings.BOOKTYPE_URL context['static_url'] = settings.STATIC_URL context['is_admin'] = self.security.is_admin() context['is_owner'] = book.owner == self.request.user context['publish_options'] = config.get_configuration('PUBLISH_OPTIONS') return context
def get_context_data(self, **kwargs): context = super(TemplateView, self).get_context_data(**kwargs) try: book = models.Book.objects.get(url_title__iexact=kwargs['bookid']) except models.Book.DoesNotExist: return {'book': None, 'book_id': kwargs['bookid']} book_version = book.get_version(None) toc = get_toc_for_book(book_version) context['request'] = self.request context['book'] = book context['book_version'] = book_version.get_version() context['book_language'] = book.language.abbrevation if book.language else 'en' context['security'] = self.security try: rtl = models.Info.objects.get(book=book, kind=0, name='{http://booki.cc/}dir') context['book_dir'] = rtl.get_value().lower() except models.Info.DoesNotExist: context['book_dir'] = 'ltr' context['chapters'] = toc # check if we should track changes for current user user_permissions = get_user_permissions(self.request.user, book) context['track_changes_approve'] = self.security.has_perm('edit.track_changes_approve') context['track_changes_enable'] = self.security.has_perm('edit.track_changes_enable') should_track_changes = 'edit.track_changes' in user_permissions context['track_changes'] = json.dumps( book_version.track_changes or should_track_changes) context['is_admin'] = self.security.is_admin() context['is_owner'] = book.owner == self.request.user context['icc_profiles_choices'] = config.get_configuration('ICC_PROFILES_CHOICES', None) # publish options are used in panel_publish.html to render available converters publish_options = config.get_configuration('PUBLISH_OPTIONS') context['publish_options'] = publish_options context['page_size_data'] = config.get_configuration('PAGE_SIZE_DATA') outputs_map = {} converters = convert_loader.find_all( module_names=convert_utils.get_converter_module_names()) for output_key in publish_options: # if saved option is not in converters, let's just ignore it if output_key not in converters: continue converter_class = converters[output_key] support_section_settings = getattr(converter_class, 'support_section_settings', False) if not support_section_settings: continue safe_key = output_key.replace('-', '_') outputs_map[safe_key] = getattr(converter_class, 'verbose_name', output_key) context['publish_options_ordered_tuple'] = sorted(outputs_map.items(), key=operator.itemgetter(1)) context['TocSettings'] = TocSettings context['autosave'] = json.dumps({ 'enabled': config.get_configuration('EDITOR_AUTOSAVE_ENABLED'), 'delay': config.get_configuration('EDITOR_AUTOSAVE_DELAY') }) context['settings_roles_show_permissions'] = config.get_configuration('EDITOR_SETTINGS_ROLES_SHOW_PERMISSIONS') context['upload_docx_form'] = UploadDocxFileForm() # get book participants members_query = self._get_book_participants(book_version) from booktype.apps.core.templatetags.booktype_tags import tag_username book_members_list = [tag_username(x) for x in members_query] # we should also get assigned users to other chapters assigned_users = book_version.chapter_set.all().values_list("assigned", flat=True) assigned_users = list(assigned_users) + book_members_list context['book_members'] = sorted(assigned_users) return context