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
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
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
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
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_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
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
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
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
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
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
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
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
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
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
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
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"])
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'])
# 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(
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()
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)
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'),
# 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'),