def test_wikify_markup_wrapper_double_wrap(self):
     ''' ensure that wrapped functions can't be double wrapped '''
     wrapped_upper_filter = wikify_markup_wrapper(lambda text: text.upper())
     self.assertEquals(wrapped_upper_filter,
                       wikify_markup_wrapper(wrapped_upper_filter))
DEFAULT_MARKUP_TYPE = getattr(settings, 'MARKUPWIKI_DEFAULT_MARKUP_TYPE',
                              'markdown')
WRITE_LOCK_SECONDS = getattr(settings, 'MARKUPWIKI_WRITE_LOCK_SECONDS', 300)
MARKUP_TYPES = getattr(settings, 'MARKUPWIKI_MARKUP_TYPES',
                       markup.DEFAULT_MARKUP_TYPES)
ESCAPE_HTML = getattr(settings, 'MARKUPWIKI_ESCAPE_HTML',
                      True)
EDITOR_TEST_FUNC = getattr(settings, 'MARKUPWIKI_EDITOR_TEST_FUNC',
                           lambda u: u.is_authenticated())
MODERATOR_TEST_FUNC = getattr(settings, 'MARKUPWIKI_MODERATOR_TEST_FUNC',
                              lambda u: u.is_staff)

# add make_wiki_links to MARKUP_TYPES
WIKI_MARKUP_TYPES = []
for name, func in MARKUP_TYPES:
    WIKI_MARKUP_TYPES.append((name, wikify_markup_wrapper(func)))

PUBLIC, LOCKED, DELETED = range(3)
ARTICLE_STATUSES = (
    (PUBLIC, 'Public'),     # public - no restrictions on viewing/editing
    (LOCKED, 'Locked'),     # locked - only admins can edit
    (DELETED, 'Deleted'),   # deleted - display deleted page
)

class Article(models.Model):
    title = models.CharField(max_length=200)
    creator = models.ForeignKey(User, related_name='wiki_articles')
    status = models.IntegerField(choices=ARTICLE_STATUSES, default=PUBLIC)
    redirect_to = models.ForeignKey('self', null=True)

    def __unicode__(self):
    def test_wikify_markup_wrapper(self):
        wrapped_upper_filter = wikify_markup_wrapper(lambda text: text.upper())

        result = wrapped_upper_filter('[[test]]')
        self.assertEquals(result, self._get_url('TEST'))