Commit 97f8413e by Bridger Maxwell

Fixed some circular imports that were causing errors.

parent 8e76eaeb
from django.utils.translation import ugettext as _
"""Base classes for different plugin objects.
* BasePlugin: Create a wiki_plugin.py with a class that inherits from BasePlugin.
* PluginSidebarFormMixin: Mix in this class in the form that should be rendered in the editor sidebar
* PluginSettingsFormMixin: ..and this one for a form in the settings tab.
Please have a look in wiki.models.pluginbase to see where to inherit your
plugin's models.
"""
class BasePlugin(object):
"""Plugins should inherit from this"""
# Must fill in!
slug = None
# Optional
settings_form = None# A form class to add to the settings tab
urlpatterns = []
article_tab = None #(_(u'Attachments'), "icon-file")
article_view = None # A view for article_id/plugin/slug/
notifications = [] # A list of notification handlers to be subscribed if the notification system is active
# Example
# [{'model': models.AttachmentRevision,
# 'message': lambda obj: _(u"A file was changed: %s") % obj.get_filename(),
# 'key': ARTICLE_EDIT,
# 'created': True,
# 'get_article': lambda obj: obj.attachment.article}
# ]
markdown_extensions = []
pass
class PluginSidebarFormMixin(object):
def get_usermessage(self):
pass
class PluginSettingsFormMixin(object):
settings_form_headline = _(u'Settings for plugin')
settings_order = 1
settings_write_access = False
def get_usermessage(self):
pass
...@@ -5,11 +5,13 @@ _EditorClass = None ...@@ -5,11 +5,13 @@ _EditorClass = None
_editor = None _editor = None
def getEditorClass(): def getEditorClass():
global _EditorClass
if not _EditorClass: if not _EditorClass:
_EditorClass = get_callable(settings.EDITOR) _EditorClass = get_callable(settings.EDITOR)
return _EditorClass return _EditorClass
def getEditor(): def getEditor():
global _editor
if not _editor: if not _editor:
_editor = getEditorClass()() _editor = getEditorClass()()
return _editor return _editor
...@@ -9,24 +9,24 @@ from django.utils.html import escape, conditional_escape ...@@ -9,24 +9,24 @@ from django.utils.html import escape, conditional_escape
from itertools import chain from itertools import chain
from wiki import models from wiki import models
from wiki.editors import editor from wiki.editors import getEditor
from wiki.core.diff import simple_merge from wiki.core.diff import simple_merge
from django.forms.widgets import HiddenInput from django.forms.widgets import HiddenInput
from wiki.plugins import PluginSettingsFormMixin from wiki.core import baseplugin
class CreateRootForm(forms.Form): class CreateRootForm(forms.Form):
title = forms.CharField(label=_(u'Title'), help_text=_(u'Initial title of the article. May be overridden with revision titles.')) title = forms.CharField(label=_(u'Title'), help_text=_(u'Initial title of the article. May be overridden with revision titles.'))
content = forms.CharField(label=_(u'Type in some contents'), content = forms.CharField(label=_(u'Type in some contents'),
help_text=_(u'This is just the initial contents of your article. After creating it, you can use more complex features like adding plugins, meta data, related articles etc...'), help_text=_(u'This is just the initial contents of your article. After creating it, you can use more complex features like adding plugins, meta data, related articles etc...'),
required=False, widget=editor.get_widget()) #@UndefinedVariable required=False, widget=getEditor().get_widget()) #@UndefinedVariable
class EditForm(forms.Form): class EditForm(forms.Form):
title = forms.CharField(label=_(u'Title'),) title = forms.CharField(label=_(u'Title'),)
content = forms.CharField(label=_(u'Contents'), content = forms.CharField(label=_(u'Contents'),
required=False, widget=editor.get_widget()) #@UndefinedVariable required=False, widget=getEditor().get_widget()) #@UndefinedVariable
summary = forms.CharField(label=_(u'Summary'), help_text=_(u'Give a short reason for your edit, which will be stated in the revision log.'), summary = forms.CharField(label=_(u'Summary'), help_text=_(u'Give a short reason for your edit, which will be stated in the revision log.'),
required=False) required=False)
...@@ -181,7 +181,7 @@ class CreateForm(forms.Form): ...@@ -181,7 +181,7 @@ class CreateForm(forms.Form):
title = forms.CharField(label=_(u'Title'),) title = forms.CharField(label=_(u'Title'),)
slug = forms.SlugField(label=_(u'Slug'), help_text=_(u"This will be the address where your article can be found. Use only alphanumeric characters and - or _. Note that you cannot change the slug after creating the article."),) slug = forms.SlugField(label=_(u'Slug'), help_text=_(u"This will be the address where your article can be found. Use only alphanumeric characters and - or _. Note that you cannot change the slug after creating the article."),)
content = forms.CharField(label=_(u'Contents'), content = forms.CharField(label=_(u'Contents'),
required=False, widget=editor.get_widget()) #@UndefinedVariable required=False, widget=getEditor().get_widget()) #@UndefinedVariable
summary = forms.CharField(label=_(u'Summary'), help_text=_(u"Write a brief message for the article's history log."), summary = forms.CharField(label=_(u'Summary'), help_text=_(u"Write a brief message for the article's history log."),
required=False) required=False)
...@@ -225,7 +225,7 @@ class DeleteForm(forms.Form): ...@@ -225,7 +225,7 @@ class DeleteForm(forms.Form):
return cd return cd
class PermissionsForm(PluginSettingsFormMixin, forms.ModelForm): class PermissionsForm(baseplugin.PluginSettingsFormMixin, forms.ModelForm):
settings_form_headline = _(u'Permissions') settings_form_headline = _(u'Permissions')
settings_order = 5 settings_order = 5
......
...@@ -124,10 +124,11 @@ class URLPath(MPTTModel): ...@@ -124,10 +124,11 @@ class URLPath(MPTTModel):
root_nodes = cls.objects.root_nodes().filter(site=site) root_nodes = cls.objects.root_nodes().filter(site=site)
if not root_nodes: if not root_nodes:
# (get_or_create does not work for MPTT models??) # (get_or_create does not work for MPTT models??)
root = cls.objects.create(site=site)
article = Article() article = Article()
article.add_revision(ArticleRevision(title=title, **kwargs), article.add_revision(ArticleRevision(title=title, **kwargs),
save=True) save=True)
article.save()
root = cls.objects.create(site=site, article=article)
article.add_object_relation(root) article.add_object_relation(root)
else: else:
root = root_nodes[0] root = root_nodes[0]
...@@ -152,9 +153,12 @@ class URLPath(MPTTModel): ...@@ -152,9 +153,12 @@ class URLPath(MPTTModel):
###################################################### ######################################################
# Just get this once # Just get this once
urlpath_content_type = ContentType.objects.get_for_model(URLPath) urlpath_content_type = None
def on_article_relation_save(instance, *args, **kwargs): def on_article_relation_save(instance, *args, **kwargs):
global urlpath_content_type
if not urlpath_content_type:
urlpath_content_type = ContentType.objects.get_for_model(URLPath)
if instance.content_type == urlpath_content_type: if instance.content_type == urlpath_content_type:
URLPath.objects.filter(id=instance.object_id).update(article=instance.article) URLPath.objects.filter(id=instance.object_id).update(article=instance.article)
......
from django import forms
from django.utils.translation import ugettext as _
"""Base classes for different plugin objects.
* BasePlugin: Create a wiki_plugin.py with a class that inherits from BasePlugin.
* PluginSidebarFormMixin: Mix in this class in the form that should be rendered in the editor sidebar
* PluginSettingsFormMixin: ..and this one for a form in the settings tab.
Please have a look in wiki.models.pluginbase to see where to inherit your
plugin's models.
"""
class BasePlugin(object):
"""Plugins should inherit from this"""
# Must fill in!
slug = None
# Optional
settings_form = None# A form class to add to the settings tab
urlpatterns = []
article_tab = None #(_(u'Attachments'), "icon-file")
article_view = None # A view for article_id/plugin/slug/
notifications = [] # A list of notification handlers to be subscribed if the notification system is active
# Example
# [{'model': models.AttachmentRevision,
# 'message': lambda obj: _(u"A file was changed: %s") % obj.get_filename(),
# 'key': ARTICLE_EDIT,
# 'created': True,
# 'get_article': lambda obj: obj.attachment.article}
# ]
markdown_extensions = []
pass
class PluginSidebarFormMixin(object):
def get_usermessage(self):
pass
class PluginSettingsFormMixin(object):
settings_form_headline = _(u'Settings for plugin')
settings_order = 1
settings_write_access = False
def get_usermessage(self):
pass
...@@ -2,15 +2,14 @@ ...@@ -2,15 +2,14 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls.defaults import patterns, url
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from wiki.core import plugins_registry from wiki.core import plugins_registry, baseplugin
from wiki import plugins
from wiki.plugins.attachments import views from wiki.plugins.attachments import views
from wiki.plugins.attachments import models from wiki.plugins.attachments import models
from wiki.plugins.attachments import settings from wiki.plugins.attachments import settings
from wiki.plugins.attachments.markdown_extensions import AttachmentExtension from wiki.plugins.attachments.markdown_extensions import AttachmentExtension
from wiki.plugins.notifications import ARTICLE_EDIT from wiki.plugins.notifications import ARTICLE_EDIT
class AttachmentPlugin(plugins.BasePlugin): class AttachmentPlugin(baseplugin.BasePlugin):
#settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm' #settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm'
......
from django import forms from django import forms
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from wiki.plugins import PluginSidebarFormMixin from wiki.core.baseplugin import PluginSidebarFormMixin
from wiki.plugins.images import models from wiki.plugins.images import models
......
...@@ -2,12 +2,11 @@ ...@@ -2,12 +2,11 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls.defaults import patterns, url
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from wiki.core import plugins_registry from wiki.core import plugins_registry, baseplugin
from wiki import plugins
from wiki.plugins.images import views, models, settings, forms from wiki.plugins.images import views, models, settings, forms
from wiki.plugins.notifications import ARTICLE_EDIT from wiki.plugins.notifications import ARTICLE_EDIT
class ImagePlugin(plugins.BasePlugin): class ImagePlugin(baseplugin.BasePlugin):
#settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm' #settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm'
......
...@@ -6,9 +6,9 @@ from django.contrib.contenttypes.models import ContentType ...@@ -6,9 +6,9 @@ from django.contrib.contenttypes.models import ContentType
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from wiki.plugins.notifications import ARTICLE_EDIT from wiki.plugins.notifications import ARTICLE_EDIT
from wiki.plugins import PluginSettingsFormMixin from wiki.core import baseplugin
class SubscriptionForm(PluginSettingsFormMixin, forms.Form): class SubscriptionForm(baseplugin.PluginSettingsFormMixin, forms.Form):
settings_form_headline = _(u'Notifications') settings_form_headline = _(u'Notifications')
settings_order = 1 settings_order = 1
......
from wiki.core import plugins_registry from wiki.core import plugins_registry, baseplugin
from wiki import plugins
class NotifyPlugin(plugins.BasePlugin): class NotifyPlugin(baseplugin.BasePlugin):
settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm' settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment