Commits

Josh VanderLinden committed 85962e6

Fixed a problem with creating new tags. Refactored the RST directives. Added an ARTICLES_DEFAULT_DB.

  • Participants
  • Parent commits e996740

Comments (0)

Files changed (4)

 * ``django.core.context_processors.media``
 * ``django.core.context_processors.request``
 
+.. versionadded:: 2.1.2
+
+If you want to specify the default database to use for ``django-articles``, you
+can specify the ``ARTICLES_DEFAULT_DB`` setting.  This defaults to ``default``.
+
 Template Integration
 ====================
 

File articles/__init__.py

-__version__ = '2.1.1'
+__version__ = '2.1.2'
 
+from articles.directives import *
 try:
     import listeners
 except ImportError:
     # this happens when setup.py is grabbing __version__; nothing to worry
     # about
     pass
-
-"""
-The Pygments reStructuredText directive
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This fragment is a Docutils_ 0.4 directive that renders source code
-(to HTML only, currently) via Pygments.
-
-To use it, adjust the options below and copy the code into a module
-that you import on initialization.  The code then automatically
-registers a ``sourcecode`` directive that you can use instead of
-normal code blocks like this::
-
-    .. sourcecode:: python
-
-        My code goes here.
-
-If you want to have different code styles, e.g. one with line numbers
-and one without, add formatters with their names in the VARIANTS dict
-below.  You can invoke them instead of the DEFAULT one by using a
-directive option::
-
-    .. sourcecode:: python
-        :linenos:
-
-        My code goes here.
-
-Look at the `directive documentation`_ to get all the gory details.
-
-.. _Docutils: http://docutils.sf.net/
-.. _directive documentation:
-    http://docutils.sourceforge.net/docs/howto/rst-directives.html
-
-:copyright: 2007 by Georg Brandl.
-:license: BSD, see LICENSE for more details.
-"""
-
-# Options
-# ~~~~~~~
-
-# Set to True if you want inline CSS styles instead of classes
-INLINESTYLES = False
-
-try:
-    from pygments.formatters import HtmlFormatter
-
-    # The default formatter
-    DEFAULT = HtmlFormatter(noclasses=INLINESTYLES)
-
-    # Add name -> formatter pairs for every variant you want to use
-    VARIANTS = {
-        'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True),
-    }
-
-    from docutils import nodes
-    from docutils.parsers.rst import directives
-
-    from pygments import highlight
-    from pygments.lexers import get_lexer_by_name, TextLexer
-
-    def pygments_directive(name, arguments, options, content, lineno,
-                        content_offset, block_text, state, state_machine):
-        try:
-            lexer = get_lexer_by_name(arguments[0])
-        except ValueError:
-            # no lexer found - use the text one instead of an exception
-            lexer = TextLexer()
-        # take an arbitrary option if more than one is given
-        formatter = options and VARIANTS[options.keys()[0]] or DEFAULT
-        parsed = highlight(u'\n'.join(content), lexer, formatter)
-        parsed = '<div class="codeblock">%s</div>' % parsed
-        return [nodes.raw('', parsed, format='html')]
-
-    pygments_directive.arguments = (1, 0, 1)
-    pygments_directive.content = 1
-    pygments_directive.options = dict([(key, directives.flag) for key in VARIANTS])
-
-    directives.register_directive('sourcecode', pygments_directive)
-
-    # create an alias, so we can use it with rst2pdf... leave the other for
-    # backwards compatibility
-    directives.register_directive('code-block', pygments_directive)
-except:
-    # the user probably doesn't have pygments installed
-    pass
-

File articles/directives.py

+"""
+The Pygments reStructuredText directive
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This fragment is a Docutils_ 0.4 directive that renders source code
+(to HTML only, currently) via Pygments.
+
+To use it, adjust the options below and copy the code into a module
+that you import on initialization.  The code then automatically
+registers a ``sourcecode`` directive that you can use instead of
+normal code blocks like this::
+
+    .. sourcecode:: python
+
+        My code goes here.
+
+If you want to have different code styles, e.g. one with line numbers
+and one without, add formatters with their names in the VARIANTS dict
+below.  You can invoke them instead of the DEFAULT one by using a
+directive option::
+
+    .. sourcecode:: python
+        :linenos:
+
+        My code goes here.
+
+Look at the `directive documentation`_ to get all the gory details.
+
+.. _Docutils: http://docutils.sf.net/
+.. _directive documentation:
+    http://docutils.sourceforge.net/docs/howto/rst-directives.html
+
+:copyright: 2007 by Georg Brandl.
+:license: BSD, see LICENSE for more details.
+"""
+
+# Options
+# ~~~~~~~
+
+# Set to True if you want inline CSS styles instead of classes
+INLINESTYLES = False
+
+try:
+    from pygments.formatters import HtmlFormatter
+
+    # The default formatter
+    DEFAULT = HtmlFormatter(noclasses=INLINESTYLES)
+
+    # Add name -> formatter pairs for every variant you want to use
+    VARIANTS = {
+        'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True),
+    }
+
+    from docutils import nodes
+    from docutils.parsers.rst import directives
+
+    from pygments import highlight
+    from pygments.lexers import get_lexer_by_name, TextLexer
+
+    def pygments_directive(name, arguments, options, content, lineno,
+                        content_offset, block_text, state, state_machine):
+        try:
+            lexer = get_lexer_by_name(arguments[0])
+        except ValueError:
+            # no lexer found - use the text one instead of an exception
+            lexer = TextLexer()
+        # take an arbitrary option if more than one is given
+        formatter = options and VARIANTS[options.keys()[0]] or DEFAULT
+        parsed = highlight(u'\n'.join(content), lexer, formatter)
+        parsed = '<div class="codeblock">%s</div>' % parsed
+        return [nodes.raw('', parsed, format='html')]
+
+    pygments_directive.arguments = (1, 0, 1)
+    pygments_directive.content = 1
+    pygments_directive.options = dict([(key, directives.flag) for key in VARIANTS])
+
+    directives.register_directive('sourcecode', pygments_directive)
+
+    # create an alias, so we can use it with rst2pdf... leave the other for
+    # backwards compatibility
+    directives.register_directive('code-block', pygments_directive)
+except:
+    # the user probably doesn't have pygments installed
+    pass
+
+

File articles/models.py

 
 WORD_LIMIT = getattr(settings, 'ARTICLES_TEASER_LIMIT', 75)
 AUTO_TAG = getattr(settings, 'ARTICLES_AUTO_TAG', True)
+DEFAULT_DB = getattr(settings, 'ARTICLES_DEFAULT_DB', 'default')
 
 MARKUP_HTML = 'h'
 MARKUP_MARKDOWN = 'm'
         """
         Renders the article using the appropriate markup language.
         """
-        using = kwargs.get('using', 'default')
+        using = kwargs.get('using', DEFAULT_DB)
 
         self.do_render_markup()
         self.do_addthis_button()
 
         return False
 
-    def do_unique_slug(self, using):
+    def do_unique_slug(self, using=DEFAULT_DB):
         """
         Ensures that the slug is always unique for the year this article was
         posted
 
         return False
 
-    def do_auto_tag(self, using):
+    def do_auto_tag(self, using=DEFAULT_DB):
         """
         Performs the auto-tagging work if necessary.
 
 
         return found
 
-    def do_default_site(self, using):
+    def do_default_site(self, using=DEFAULT_DB):
         """
         If no site was selected, selects the site used to create the article
         as the default site.
 
         return False
 
-    def get_unique_slug(self, slug, using):
+    def get_unique_slug(self, slug, using=DEFAULT_DB):
         """Iterates until a unique slug is found"""
 
         # we need a publish date before we can do anything meaningful