예제 #1
0
파일: forms.py 프로젝트: xanjay/Booktype
    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)
        }
예제 #2
0
    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,
        })
예제 #3
0
    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,
        })
예제 #4
0
파일: views.py 프로젝트: sirwlm/Booktype
    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
예제 #5
0
    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,
        }
예제 #6
0
    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())
예제 #7
0
    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())
예제 #8
0
    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
예제 #9
0
    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
예제 #10
0
    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