示例#1
0
 def get_context_data(self, **kwargs):
     kwargs['urlpath'] = self.urlpath
     kwargs['article'] = self.article
     kwargs['article_tabs'] = registry.get_article_tabs()
     kwargs['children_slice'] = self.children_slice[:20]
     kwargs['children_slice_more'] = len(self.children_slice) > 20
     kwargs['plugins'] = registry.get_plugins()
     return kwargs
示例#2
0
 def get_context_data(self, **kwargs):
     kwargs['urlpath'] = self.urlpath
     kwargs['article'] = self.article
     kwargs['article_tabs'] = registry.get_article_tabs()
     kwargs['children_slice'] = self.children_slice[:20]
     kwargs['children_slice_more'] = len(self.children_slice) > 20
     kwargs['plugins'] = registry.get_plugins()
     return kwargs
示例#3
0
 def get_context_data(self, **kwargs):
     kwargs["urlpath"] = self.urlpath
     kwargs["article"] = self.article
     kwargs["article_tabs"] = registry.get_article_tabs()
     kwargs["children_slice"] = self.children_slice[:20]
     kwargs["children_slice_more"] = len(self.children_slice) > 20
     kwargs["plugins"] = registry.get_plugins()
     return kwargs
示例#4
0
 def get_plugin_urls(self):
     urlpatterns = patterns('',)
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, 'slug', None)
         plugin_urlpatterns = getattr(plugin, 'urlpatterns', None)
         if slug and plugin_urlpatterns:
             urlpatterns += patterns('',
                 url('^(?P<article_id>\d+)/plugin/' + slug + '/', include(plugin_urlpatterns)),
                 url('^(?P<path>.+/|)_plugin/' + slug + '/', include(plugin_urlpatterns)),
            )
     return urlpatterns
示例#5
0
 def get_plugin_urls(self):
     urlpatterns = patterns('',)
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, 'slug', None)
         plugin_urlpatterns = getattr(plugin, 'urlpatterns', None)
         if slug and plugin_urlpatterns:
             urlpatterns += patterns('',
                 url('^(?P<article_id>\d+)/plugin/' + slug + '/', include(plugin_urlpatterns)),
                 url('^(?P<path>.+/|)_plugin/' + slug + '/', include(plugin_urlpatterns)),
            )
     return urlpatterns
示例#6
0
 def get_plugin_urls():
     urlpatterns = []
     for plugin in list(registry.get_plugins().values()):
         slug = getattr(plugin, "slug", None)
         if slug:
             article_urlpatterns = plugin.urlpatterns.get("article", [])
             urlpatterns += [
                 url("^(?P<article_id>\d+)/plugin/" + slug + "/", include(article_urlpatterns)),
                 url("^(?P<path>.+/|)_plugin/" + slug + "/", include(article_urlpatterns)),
             ]
             root_urlpatterns = plugin.urlpatterns.get("root", [])
             urlpatterns += [url("^_plugin/" + slug + "/", include(root_urlpatterns))]
     return urlpatterns
示例#7
0
def wiki_render(article, preview_content=None):
    
    if preview_content:
        content = article.render(preview_content=preview_content)
    else:
        content = None
    return {
        'article': article,
        'content': content,
        'preview': not preview_content is None,
        'plugins': plugin_registry.get_plugins(),
        'STATIC_URL': django_settings.STATIC_URL,
    }
示例#8
0
def wiki_render(article, preview_content=None):

    if preview_content:
        content = article.render(preview_content=preview_content)
    else:
        content = None
    return {
        "article": article,
        "content": content,
        "preview": not preview_content is None,
        "plugins": plugin_registry.get_plugins(),
        "STATIC_URL": django_settings.STATIC_URL,
    }
def wiki_languages_render(context, article, preview_content=None):
    if preview_content:
        content = render(article, context, preview_content=preview_content)
    else:
        content = None
    context.update({
        'article': article,
        'content': content,
        'preview': not preview_content is None,
        'plugins': plugin_registry.get_plugins(),
        'STATIC_URL': django_settings.STATIC_URL,
        'CACHE_TIMEOUT': settings.CACHE_TIMEOUT,
    })
    return context
示例#10
0
 def get_plugin_urls(self):
     urlpatterns = patterns('',)
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, 'slug', None)
         if slug:
             article_urlpatterns = plugin.urlpatterns.get('article', [])
             urlpatterns += patterns('',
                 url('^(?P<article_id>\d+)/plugin/' + slug + '/', include(article_urlpatterns)),
                 url('^(?P<path>.+/|)_plugin/' + slug + '/', include(article_urlpatterns)),
             )
             root_urlpatterns = plugin.urlpatterns.get('root', [])
             urlpatterns += patterns('',
                 url('^_plugin/' + slug + '/', include(root_urlpatterns)),
            )
     return urlpatterns
示例#11
0
文件: urls.py 项目: visitorone/yats
 def get_plugin_urls(self):
     urlpatterns = patterns('',)
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, 'slug', None)
         if slug:
             article_urlpatterns = plugin.urlpatterns.get('article', [])
             urlpatterns += patterns('',
                 url('^(?P<article_id>\d+)/plugin/' + slug + '/', include(article_urlpatterns)),
                 url('^(?P<path>.+/|)_plugin/' + slug + '/', include(article_urlpatterns)),
             )
             root_urlpatterns = plugin.urlpatterns.get('root', [])
             urlpatterns += patterns('',
                 url('^_plugin/' + slug + '/', include(root_urlpatterns)),
            )
     return urlpatterns
示例#12
0
def wiki_render(context, article, preview_content=None):

    if preview_content:
        content = article.render(preview_content=preview_content)
    else:
        content = None
    context.update({
        'article': article,
        'content': content,
        'preview': not preview_content is None,
        'plugins': plugin_registry.get_plugins(),
        'STATIC_URL': django_settings.STATIC_URL,
        'CACHE_TIMEOUT': settings.CACHE_TIMEOUT,
    })
    return context
示例#13
0
    def get_context_data(self, **kwargs):
        kwargs['urlpath'] = self.urlpath
        kwargs['article'] = self.article
        kwargs['article_tabs'] = registry.get_article_tabs()
        kwargs['children_slice'] = self.children_slice[:20]
        kwargs['children_slice_more'] = len(self.children_slice) > 20
        kwargs['plugins'] = registry.get_plugins()

        can_watch = self.request.user.is_authenticated() and len(registry.get_notification()) > 0
        kwargs['can_watch'] = can_watch
        if can_watch:
            plugin = registry.get_notification()[0]
            kwargs['watching_status'] = plugin.watching_status(article=self.article, viewer=self.request.user)

        return kwargs
示例#14
0
    def get_context_data(self, **kwargs):
        kwargs['urlpath'] = self.urlpath
        kwargs['article'] = self.article
        kwargs['article_tabs'] = registry.get_article_tabs()
        kwargs['children_slice'] = self.children_slice[:20]
        kwargs['children_slice_more'] = len(self.children_slice) > 20
        kwargs['plugins'] = registry.get_plugins()

        # team112 - comment management
        kwargs['can_read_comment'] = self.article.can_read_comment(self.request.user)
        kwargs['can_delete_comment'] = self.article.can_delete_comment(self.request.user)
        kwargs['can_comment'] = self.article.can_comment(self.request.user)
        kwargs['commentform'] = CommentForm
        kwargs['comments'] = Comment.objects.get_comments(self.article)

        return kwargs
示例#15
0
 def get_plugin_urls():
     urlpatterns = []
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, 'slug', None)
         if slug:
             article_urlpatterns = plugin.urlpatterns.get('article', [])
             urlpatterns += [
                 url(r'^(?P<article_id>[0-9]+)/plugin/' + slug + '/',
                     include(article_urlpatterns)),
                 url(r'^(?P<path>.+/|)_plugin/' + slug + '/',
                     include(article_urlpatterns)),
             ]
             root_urlpatterns = plugin.urlpatterns.get('root', [])
             urlpatterns += [
                 url(r'^_plugin/' + slug + '/', include(root_urlpatterns)),
             ]
     return urlpatterns
示例#16
0
def wiki_render(context, article, preview_content=None):

    if preview_content:
        content = article.render(preview_content=preview_content)
    else:
        content = None
    context.update(
        {
            "article": article,
            "content": content,
            "preview": not preview_content is None,
            "plugins": plugin_registry.get_plugins(),
            "STATIC_URL": django_settings.STATIC_URL,
            "CACHE_TIMEOUT": settings.CACHE_TIMEOUT,
        }
    )
    return context
示例#17
0
 def get_plugin_urls():
     urlpatterns = []
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, 'slug', None)
         if slug:
             article_urlpatterns = plugin.urlpatterns.get('article', [])
             urlpatterns += [
                 url(r'^(?P<article_id>[0-9]+)/plugin/' + slug + '/',
                     include(article_urlpatterns)),
                 url(r'^(?P<path>.+/|)_plugin/' + slug + '/',
                     include(article_urlpatterns)),
             ]
             root_urlpatterns = plugin.urlpatterns.get('root', [])
             urlpatterns += [
                 url(r'^_plugin/' + slug + '/', include(root_urlpatterns)),
             ]
     return urlpatterns
示例#18
0
def wiki_render(context, article, preview_content=None):

    if preview_content:
        content = article.render(preview_content=preview_content)
    elif article.current_revision:
        content = article.get_cached_content(user=context.get('user'))
    else:
        content = None

    context.update({
        'article': article,
        'content': content,
        'preview': preview_content is not None,
        'plugins': plugin_registry.get_plugins(),
        'STATIC_URL': django_settings.STATIC_URL,
        'CACHE_TIMEOUT': settings.CACHE_TIMEOUT,
    })
    return context
示例#19
0
    def get_context_data(self, **kwargs):
        kwargs['urlpath'] = self.urlpath
        kwargs['article'] = self.article
        kwargs['article_tabs'] = registry.get_article_tabs()
        kwargs['children_slice'] = self.children_slice[:20]
        kwargs['children_slice_more'] = len(self.children_slice) > 20
        kwargs['plugins'] = registry.get_plugins()

        # team112 - comment management
        kwargs['can_read_comment'] = self.article.can_read_comment(
            self.request.user)
        kwargs['can_delete_comment'] = self.article.can_delete_comment(
            self.request.user)
        kwargs['can_comment'] = self.article.can_comment(self.request.user)
        kwargs['commentform'] = CommentForm
        kwargs['comments'] = Comment.objects.get_comments(self.article)

        return kwargs
示例#20
0
def wiki_render(context, article, preview_content=None):

    if preview_content:
        content = article.render(preview_content=preview_content)
    elif article.current_revision:
        content = article.get_cached_content(user=context.get("user"))
    else:
        content = None

    context.update({
        "article": article,
        "content": content,
        "preview": preview_content is not None,
        "plugins": plugin_registry.get_plugins(),
        "STATIC_URL": django_settings.STATIC_URL,
        "CACHE_TIMEOUT": settings.CACHE_TIMEOUT,
    })
    return context
示例#21
0
def wiki_render(context, article, preview_content=None):

    if preview_content:
        content = article.render(preview_content=preview_content)
    elif article.current_revision:
        content = article.get_cached_content(user=context.get('user'))
    else:
        content = None

    context.update({
        'article': article,
        'content': content,
        'preview': preview_content is not None,
        'plugins': plugin_registry.get_plugins(),
        'STATIC_URL': django_settings.STATIC_URL,
        'CACHE_TIMEOUT': settings.CACHE_TIMEOUT,
    })
    return context
示例#22
0
 def get_plugin_urls(self):
     urlpatterns = []
     for plugin in registry.get_plugins().values():
         slug = getattr(plugin, "slug", None)
         if slug:
             article_urlpatterns = plugin.urlpatterns.get("article", [])
             urlpatterns += [
                 re_path(
                     r"^(?P<article_id>[0-9]+)/plugin/" + slug + "/",
                     include(article_urlpatterns),
                 ),
                 re_path(
                     r"^(?P<path>.+/|)_plugin/" + slug + "/",
                     include(article_urlpatterns),
                 ),
             ]
             root_urlpatterns = plugin.urlpatterns.get("root", [])
             urlpatterns += [
                 re_path(r"^_plugin/" + slug + "/", include(root_urlpatterns)),
             ]
     return urlpatterns
示例#23
0
    def ready(self):
        """
        NOTIFICATIONS FOR PLUGINS
        """
        from django_nyt.utils import notify
        from wiki.core.plugins import registry
        from wiki.decorators import disable_signal_for_loaddata
        from . import models

        def get_receiver(notification_dict):
            @disable_signal_for_loaddata
            def plugin_notification(instance, **kwargs):
                if notification_dict.get("ignore", lambda x: False)(instance):
                    return
                if kwargs.get("created",
                              False) == notification_dict.get("created", True):
                    if "get_url" in notification_dict:
                        url = notification_dict["get_url"](instance)
                    else:
                        url = models.default_url(
                            notification_dict["get_article"](instance))

                    message = notification_dict["message"](instance)
                    notify(
                        message,
                        notification_dict["key"],
                        target_object=notification_dict["get_article"](
                            instance),
                        url=url,
                    )

            return plugin_notification

        for plugin in registry.get_plugins():

            notifications = getattr(plugin, "notifications", [])
            for notification_dict in notifications:

                signals.post_save.connect(get_receiver(notification_dict),
                                          sender=notification_dict["model"])
示例#24
0
    def ready(self):
        """
        NOTIFICATIONS FOR PLUGINS
        """
        from django_nyt.utils import notify
        from wiki.core.plugins import registry
        from wiki.decorators import disable_signal_for_loaddata
        from . import models

        for plugin in registry.get_plugins():

            notifications = getattr(plugin, 'notifications', [])
            for notification_dict in notifications:

                @disable_signal_for_loaddata
                def plugin_notification(instance, **kwargs):
                    if notification_dict.get('ignore',
                                             lambda x: False)(instance):
                        return
                    if kwargs.get('created', False) == notification_dict.get(
                            'created', True):
                        if 'get_url' in notification_dict:
                            url = notification_dict['get_url'](instance)
                        else:
                            url = models.default_url(
                                notification_dict['get_article'](instance))

                        message = notification_dict['message'](instance)
                        notify(
                            message,
                            notification_dict['key'],
                            target_object=notification_dict['get_article'](
                                instance),
                            url=url,
                        )

                signals.post_save.connect(plugin_notification,
                                          sender=notification_dict['model'])
示例#25
0

# Whenever a new revision is created, we notifý users that an article
# was edited
signals.post_save.connect(
    post_article_revision_save,
    sender=wiki_models.ArticleRevision,
)

# TODO: We should notify users when the current_revision of an article is
# changed...

##################################################
# NOTIFICATIONS FOR PLUGINS
##################################################
for plugin in registry.get_plugins():

    notifications = getattr(plugin, 'notifications', [])
    for notification_dict in notifications:

        @disable_signal_for_loaddata
        def plugin_notification(instance, **kwargs):
            if notification_dict.get('ignore', lambda x: False)(instance):
                return
            if kwargs.get('created',
                          False) == notification_dict.get('created', True):
                url = None
                if 'get_url' in notification_dict:
                    url = notification_dict['get_url'](instance)
                else:
                    url = default_url(
示例#26
0
 def dispatch(self, request, path=None, slug=None, **kwargs):
     kwargs['path'] = path
     for plugin in list(plugin_registry.get_plugins().values()):
         if getattr(plugin, 'slug', None) == slug:
             return plugin.article_view(request, **kwargs)
     raise Http404()
示例#27
0
                filter_exclude=filter_exclude)

# Whenever a new revision is created, we notifý users that an article
# was edited
signals.post_save.connect(
    post_article_revision_save,
    sender=wiki_models.ArticleRevision,
)

# TODO: We should notify users when the current_revision of an article is
# changed...

##################################################
# NOTIFICATIONS FOR PLUGINS
##################################################
for plugin in registry.get_plugins():

    notifications = getattr(plugin, 'notifications', [])
    for notification_dict in notifications:
        @disable_signal_for_loaddata
        def plugin_notification(instance, **kwargs):
            if notification_dict.get('ignore', lambda x: False)(instance):
                return
            if kwargs.get(
                    'created',
                    False) == notification_dict.get(
                    'created',
                    True):
                url = None
                if 'get_url' in notification_dict:
                    url = notification_dict['get_url'](instance)
示例#28
0
 def dispatch(self, request, path=None, slug=None, **kwargs):
     kwargs['path'] = path
     for plugin in list(plugin_registry.get_plugins().values()):
         if getattr(plugin, 'slug', None) == slug:
             return plugin.article_view(request, **kwargs)
     raise Http404()
示例#29
0
        name='settings'),
    url('^(?P<article_id>\d+)/source/$',
        article.Source.as_view(),
        name='source'),
    url('^(?P<article_id>\d+)/revision/change/(?P<revision_id>\d+)/$',
        'wiki.views.article.change_revision',
        name='change_revision'),
    url('^(?P<article_id>\d+)/revision/merge/(?P<revision_id>\d+)/$',
        'wiki.views.article.merge',
        name='merge_revision'),
    url('^(?P<article_id>\d+)/plugin/(?P<slug>\w+)/$',
        article.Plugin.as_view(),
        name='plugin'),
)

for plugin in registry.get_plugins().values():
    slug = getattr(plugin, 'slug', None)
    plugin_urlpatterns = getattr(plugin, 'urlpatterns', None)
    if slug and plugin_urlpatterns:
        urlpatterns += patterns(
            '',
            url('^(?P<article_id>\d+)/plugin/' + slug + '/',
                include(plugin_urlpatterns)),
            url('^(?P<path>.+/|)_plugin/' + slug + '/',
                include(plugin_urlpatterns)),
        )

urlpatterns += patterns(
    '',
    # Paths decided by URLs
    url('^(?P<path>.+/|)_create/$', article.Create.as_view(), name='create'),
示例#30
0
    # Paths decided by article_ids
    url('^(?P<article_id>\d+)/$', article.ArticleView.as_view(), name='get'),   
    url('^(?P<article_id>\d+)/delete/$', article.Delete.as_view(), name='delete'),   
    url('^(?P<article_id>\d+)/deleted/$', article.Deleted.as_view(), name='deleted'),   
    url('^(?P<article_id>\d+)/edit/$', article.Edit.as_view(), name='edit'),   
    url('^(?P<article_id>\d+)/preview/$', article.Preview.as_view(), name='preview'),   
    url('^(?P<article_id>\d+)/history/$', article.History.as_view(), name='history'),   
    url('^(?P<article_id>\d+)/settings/$', article.Settings.as_view(), name='settings'),   
    url('^(?P<article_id>\d+)/source/$', article.Source.as_view(), name='source'),   
    url('^(?P<article_id>\d+)/revision/change/(?P<revision_id>\d+)/$', 'wiki.views.article.change_revision', name='change_revision'),   
    url('^(?P<article_id>\d+)/revision/merge/(?P<revision_id>\d+)/$', 'wiki.views.article.merge', name='merge_revision'),
    url('^(?P<article_id>\d+)/plugin/(?P<slug>\w+)/$', article.Plugin.as_view(), name='plugin'),

)

for plugin in registry.get_plugins().values():
    slug = getattr(plugin, 'slug', None)
    plugin_urlpatterns = getattr(plugin, 'urlpatterns', None)
    if slug and plugin_urlpatterns:
        urlpatterns += patterns('',
            url('^(?P<article_id>\d+)/plugin/'+slug+'/', include(plugin_urlpatterns)),   
            url('^(?P<path>.+/|)_plugin/'+slug+'/', include(plugin_urlpatterns)),   
        )

urlpatterns += patterns('',
    # Paths decided by URLs
    url('^(?P<path>.+/|)_create/$', article.Create.as_view(), name='create'),   
    url('^(?P<path>.+/|)_delete/$', article.Delete.as_view(), name='delete'),   
    url('^(?P<path>.+/|)_deleted/$', article.Deleted.as_view(), name='deleted'),   
    url('^(?P<path>.+/|)_edit/$', article.Edit.as_view(), name='edit'),   
    url('^(?P<path>.+/|)_preview/$', article.Preview.as_view(), name='preview'),