4

I'm working on a Django-based web app in which the community fuels the content on the site, much like a wiki. Content is in the form of HTML, and users have total freedom to fork articles/chapters or make their own modifications to existing ones and add them to the current 'working version'. The maintainer of each article/chapter (the original authors[s]), will have the option of accepting these changes.

We're also planning on maintaining two versions - or at least views - of any given article: the author-approved edits version and the free-for-all community based edits version.

The revision system that would manage all this forking, merging and branching on top of detailed histories is starting to sound a lot like what a source revision system does. So I'm considering using Git to manage these revisions.

My question to those more experienced in this type of thing than I:

  • Is it worth the effort and after that, will it be better than rolling something out in a RDBMS?

  • And if so, roughly, how should I go about implementing this with Django/Python?

asked again in hopes of catching more replies, this is very important to me

Karan
  • 1,636
  • 4
  • 19
  • 35
  • I thought I saw this question yesterday, but now I can't find it. Did you delete the old one and repost it again? – Greg Hewgill Jan 26 '09 at 21:28
  • Yes :( I posted the initial one at a very odd hour and it got 1 reply. I'm not really sure what one is to do in such a case on SO; usually forms have a bump feature. Anyways, I hope I didn't anger anyone by doing so, but feedback on this is very important to me (as noted above) – Karan Jan 26 '09 at 21:54
  • Remember, a very odd hour for you might be a perfectly reasonable hour for a lot of other people. For bumping questions, see this answer in the faq: http://stackoverflow.com/questions/26049/how-to-get-attention-for-your-old-unanswered-questions#28310 – Greg Hewgill Jan 26 '09 at 22:29
  • This is something I'm interested in doing as well, what did you end up doing? – monkut Mar 29 '13 at 08:44

5 Answers5

4

I don't know any Django module which would offer what you want (at least wiki i.e. editable text with some lightweight markip language, coupled with version control system), but you can take a look at InterfacesFrontendsAndTools page at Git Wiki, section "Wikis, blogs, etc.". Among others you can find there:

  • wikiri: simple, single-file wiki written in Python, with optional git support for history tracking
  • Chuyen: a weblog software written in Python, using the Django web framework and Git as its data storage backend through PyGit
  • Pystl: very simple, small blog engine in Python, using Git for version control.
Jakub Narębski
  • 309,089
  • 65
  • 217
  • 230
2

You might consider looking at how ikiwiki works. It's a simple wiki system that can be backed by a real version control system (I use it with a Git repository).

Greg Hewgill
  • 951,095
  • 183
  • 1,149
  • 1,285
  • OP queried in reference to a Django-based app. ikiwiki is written in Perl. – Jeff Bauer Jan 26 '09 at 21:46
  • That's true, but I was referring the the principle of storing page revisions in a VCS, not as a "here, use this" answer. Ikiwiki is an *example* of such a system that does what the OP wants. Perhaps the OP could learn something from studying how Ikiwiki works. – Greg Hewgill Jan 26 '09 at 21:51
  • Thanks for the suggestion Greg, I'll take a look at how they implement it. – Karan Jan 26 '09 at 21:53
1

GitPython is a python library that interacts with Git repositories. I've played around with it, but not used it in production. It seems solid and relatively easy to use, and is under active development.

If you have difficulties integrating Git with your Django project, you might look at Mercurial. I strongly prefer Git, with its elegant and powerful data model, but Mercurial offers functionality similar to Git and it is written in python, so it might be easier for you.

Paul
  • 16,255
  • 3
  • 33
  • 25
1

django-rcsfield might be helpful. It is a field (like models.TextField) for the Django web framework which - under the hood - versionizes its content. The 'rcs' in the name is short for revision control system.

http://code.google.com/p/django-rcsfield/

Jesse
  • 373
  • 3
  • 5
0

I've just seen this on reddit:

https://launchpad.net/django-wikiapp/

Django WikiApp is a pluggable application for Django that aims to provide a complete Wiki (for really small values of "complete").

HIH,

Tiago
  • 9,457
  • 5
  • 39
  • 35