Skip to main content

An extensible wiki app for Django with a Git backend

Project description

Waliki is an extensible wiki app for Django with a Git backend. Documentation Status Wheel Status




@Waliki_ // @tin_nqn_




At a glance, Waliki has these features:

  • File based content storage.

  • UI based on Bootstrap and CodeMirror

  • Version control and concurrent edition for your content using git

  • An extensible architecture through plugins

  • reStructuredText or Markdown support, configurable per page (and it’s easy to add extensions)

  • A very simple per slug ACL system

  • A nice attachments manager (that respects the permissions over the page)

  • Realtime collaborative edition via togetherJS

  • Wiki content embeddable in any django template (as a “dummy CMS”)

  • Few helpers to migrate content (particularly from MoinMoin, using moin2git)

  • It works with Python 2.7, 3.3, 3.4 or PyPy in Django 1.6 or newer

It’s easy to create a site powered by Waliki using the preconfigured project which is the same code that motorize the demo.

Waliki was inspired in Github’s wikis, but it tries to be a bit smarter than many others git backed wiki engines at handling changes: instead of a hard “newer wins” or “page blocking” approaches, Waliki uses git’s merge facilities on each save. So, if there was another change during an edition and git can merge them automatically, it’s done and the user is notified. If the merge fails, the last edition is still saved but the editor is reloaded asking the user to fix the conflict.

Getting started

Install it with pip:

$ pip install waliki[all]

Or the development version:

$ pip install

Add waliki and the optionals plugins to your INSTALLED_APPS:

    'waliki.git',           # optional but recommended
    'waliki.attachments',   # optional but recommended
    'waliki.pdf',           # optional
    'waliki.slides',        # optional
    'waliki.togetherjs',    # optional

Include waliki.urls in your project’s For example:

urlpatterns = patterns('',
    url(r'^wiki/', include('waliki.urls')),

Sync your database:

$ python migrate   # syncdb in django < 1.7

Why Waliki ?

Waliki is an Aymara word that means all right, fine.

It sounds a bit like wiki, has a meaningful sense and also plays with the idea of using a non-mainstream language [1] .

And last but most important, it’s a humble tribute to the president Evo Morales and the Bolivian people.


0.6 (2015-10-25)

  • Slides view use the cache. Fix #81

  • Implemented an RSS feed listing lastest changes. It’s part of #32

  • Added a configurable “sanitize” function.

  • Links to attachments doesn’t relay on IDs by default (but it’s backaward compatible). #96

  • Added an optional “breadcrumb “ hierarchical links for pages. #110

  • Run git with output to pipe instead of virtual terminal. #111

0.5 (2015-04-12)

  • Per page markup is now fully functional. It allows to have a mixed rst & markdown wiki. Fixed #2

  • Allow save a page without changes in a body. Fixed #85

  • Fixed #84, that marked deleted but no commited after a move

  • Allow to choice markup from new page dialog. #82

  • Fix wrong encoding for raw of an old revision. #75

0.4.2 (2015-03-31)

  • Fixed conflict with a broken dependecy

0.4.1 (2015-03-31)

  • Marked the release as beta (instead of alpha)

  • Improves on and the README

0.4 (2015-03-31)

  • Implemented views to add a new, move and delete pages

  • Implemented real-time collaborative editing via together.js (#33)

  • Added pagination in what changed page

  • Added a way to extend waliki’s docutils with directives and transformation for

  • A deep docs proofreading by chuna

  • Edit view redirect to detail if the page doesn’t exist (#37)

  • waliki_box fails with missing slug #40

  • can’t view diffs on LMDE #60

  • fix typos in tutorial #76 (martenson)

  • Fix build with Markups 0.6. #63 (loganchien)

  • fixed roundoff error for whatchanged pagination #61 (aszepieniec)

  • Enhance slides #59 (loganchien)

  • Fix UnicodeDecodeError in waliki.git.view. #58 (loganchien)

0.3.3 (2014-11-24)

  • Tracking page redirections

  • fix bugs related to attachments in sync_waliki

  • The edition form uses crispy forms if it’s installed

  • many small improvements to help the integration/customization

0.3.2 (2014-11-17)

  • Url pattern is configurable now. By default allow uppercase and underscores

  • Added moin_migration_cleanup, a tool to cleanup the result of a moin2git import

  • Improve git parsers for page history and what changed

0.3.1 (2014-11-11)

  • Plugin attachments

  • Implemented per namespace ACL rules

  • Added the waliki_box templatetag: use waliki content in any app

  • Added entry_point to extend templates from plugins

  • Added a webhook to pull and sync change from a remote repository (Git)

  • Fixed a bug in git that left the repo unclean

0.2 (2014-09-29)

  • Support concurrent edition

  • Added a simple ACL system

  • i18n support (and locales for es)

  • Editor based in Codemirror

  • Migrated templates to Bootstrap 3

  • Added the management command waliki_sync

  • Added a basic test suite and setup Travis CI.

  • Added “What changed” page (from Git)

  • Plugins can register links in the nabvar ({% navbar_links %})

0.1.2 / 0.1.3 (2014-10-02)

  • “Get as PDF” plugin

  • rst2html5 fixes

0.1.1 (2014-10-02)

  • Many Python 2/3 compatibility fixes

0.1.0 (2014-10-01)

  • First release on PyPI.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

waliki-0.6.tar.gz (750.2 kB view hashes)

Uploaded Source

Built Distribution

waliki-0.6-py2.py3-none-any.whl (962.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page