An extensible wiki app for Django with a Git backend
Project description
Waliki is an extensible wiki app for Django with a Git backend.
- home:
- demo:
- documentation:
- twitter:
- group:
- license:
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
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.
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 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.