skip to navigation
skip to content

waliki 0.7

An extensible wiki app for Django with a Git backend

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

Attention!

It’s in an early development stage. I’ll appreciate your feedback and help.

home:https://github.com/mgaitan/waliki/
demo:http://waliki.pythonanywhere.com
documentation:http://waliki.rtfd.org
twitter:@Waliki_ // @tin_nqn_
group:https://groups.google.com/forum/#!forum/waliki-devs
license:BSD

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.4 or PyPy in Django 1.8, 1.9 (and 1.10, most probably)

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 https://github.com/mgaitan/waliki/tarball/master

Add waliki and the optionals plugins to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'waliki',
    'waliki.git',           # optional but recommended
    'waliki.attachments',   # optional but recommended
    'waliki.pdf',           # optional
    'waliki.search',        # optional, additional configuration required
    'waliki.slides',        # optional
    'waliki.togetherjs',    # optional
    ...
)

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

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

Configure search in your projects settings.py. For example:

HAYSTACK_CONNECTIONS = {
  'default': {
    'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
    'PATH': os.path.join(BASE_DIR, 'search_index'),
  },
}

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

Sync your database:

$ python manage.py migrate   # syncdb in django < 1.7

Tip

Do you already have some content? Put it in your WALIKI_DATA_DIR (or set it to the actual path) and run:

$ python manage.py sync_waliki

Do you want everybody be able to edit your wiki? Set:

WALIKI_ANONYMOUS_USER_PERMISSIONS = ('view_page', 'add_page', 'change_page')

in your project’s settings.

Contribute

This project is looking for contributors. If you have a feature you’d like to see implemented or a bug you’d liked fixed, the best and fastest way to make that happen is to implement it and submit it back upstream for consideration. All contributions will be given thorough consideration.

Everyone interacting in the Waliki project’s codebases, issue trackers and mailing lists is expected to follow the PyPA Code of Conduct.

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.

[1]wiki itself is a hawaiian word

Changelog

0.6 (2016-12-19)

  • Fix compatibility with Django 1.9.x and Markup 2.x (thanks to Oleg Girko for the contribution)

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 setup.py 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.
 
File Type Py Version Uploaded on Size
waliki-0.7-py2.py3-none-any.whl (md5) Python Wheel 3.4 2016-12-20 943KB