A wiki system with complex functionality for simple integration and a superb interface. Store your knowledge with style: Use django models.

Overview

django-wiki

Docs Build Status Coverage Status PyPi Downloads IRC

Django support

The below table explains which Django versions are supported.

Release Django Upgrade from
0.7.x 2.2, 3.0, 3.1 0.5 or 0.6
0.6.x 2.1, 2.2, 3.0 0.5
0.5.x 2.1, 2.2 0.4
0.4.x 1.11, 2.0, 2.1 0.3
0.3.x 1.8, 1.9, 1.10, 1.11 0.2
0.2.x 1.8, 1.9, 1.10 0.1
0.1.x 1.5, 1.6, 1.7 0.0.24
0.0.24 1.4, 1.5, 1.6 1.7 (unstable) 0.0.?

For upgrade instructions, please refer to the Release Notes

Translations (Transifex)

Django-wiki has almost fully translated into 12 languages, apart from the default (English). But please help out in adding more languages! It's very easy, you don't even need to be a programmer.

Some languages...

  • Just need a little push, as they are almost fully complete
  • Got initiatied and need a new instigator to carry on the ambitions
  • Do not exist yet - but you can request them and become the coordinator.

Visit the django-wiki project on Transifex

Demo

A demo running the latest master is available here, sign up for an account to see the notification system, or you can log in with user:test and password:test.

https://demo.django-wiki.org

Community

Please use our IRC or mailing list (google group) for getting in touch on development and support. Please do not email developers asking for personal support.

THIS IS A WORK IN PROGRE...

Currently, the model API is subject to smaller changes, and the plugin API seems pretty stable.

In order to customize the wiki, best idea is to override templates and create your own template tags. Do not make your own hard copy of this repository in order to fiddle with internal parts of the wiki -- this strategy will lead you to lose out on future updates with highly improved features and plugins. Possibly security updates as well!

The release cycle has already begun, so you can administer django-wiki through Pypi and pip.

All views are class-based, however don't take it as an encouragement to extend them, unless you are prepared to modify both templates and view classes every time there is an update.

Contributing

Please read our Developer Guide

Manifesto

Django needs a mature wiki system appealing to all kinds of needs, both big and small:

  • Be pluggable and light-weight. Don't integrate optional features in the core.
  • Be open. Make an extension API that allows the ecology of the wiki to grow in a structured way. Wikipedia consists of over 1100 extension projects written for MediaWiki. We should learn from this.
  • Be smart. This is the map of tables in MediaWiki - we'll understand the choices of other wiki projects and make our own. After-all, this is a Django project.
  • Be simple. The source code should almost explain itself.
  • Be structured. Markdown is a simple syntax for readability. Features should be implemented either through easy coding patterns in the content field, but rather stored in a structured way (in the database) and managed through a friendly interface. This gives control back to the website developer, and makes knowledge more usable. Just ask: Why has Wikipedia never changed? Answer: Because it's knowledge is stored in a complicated way, thus it becomes very static.

Docs

See the docs/ folder, or read them at:

https://django-wiki.readthedocs.io/en/latest/

If you wish to add something, please ask in the google group or raise an issue if you're in doubt about whether something might change.

Background

Django-wiki is a rewrite of django-simplewiki, a project from 2009 that aimed to be a base system for a wiki. It proposed that the user should customize the wiki by overwriting templates, but soon learned that the only customization that really took place was that people forked the entire project. We don't want that for django-wiki, we want it to be modular and extendable.

As of now, Django has existed for too long without a proper wiki application. The dream of django-wiki is to become a contestant alongside Mediawiki, so that Django developers can stick to the Django platform even when facing tough challenges such as implementing a wiki.

Q&A

  • Why is the module named just wiki ? Because when we tried pip install wiki, it returned "No distributions at all found for wiki", so we had to make up for that!
  • What markup language will you use? Markdown. The markup renderer is not a pluggable part but has been internalized into core parts. Discussion should go here: https://github.com/django-wiki/django-wiki/issues/76
  • Why not use django-reversion? It's a great project, but if the wiki has to grow ambitious, someone will have to optimize its behavior, and using a third-party application for something as crucial as the revision system is a no-go in this regard.
  • Any support for multiple wikis? Yes, in an sense you can just imagine that you always have multiple wikis, because you always have hierarchies and full control of their permissions. See this discussion: https://github.com/django-wiki/django-wiki/issues/63

Requirements

Please refer to current release to see exact version dependencies. And make note that Pillow needs to have certain build dependencies satisfied on your host system.

Docker tl;dr

There is a docker container available here: https://github.com/riotkit-org/docker-django-wiki

Acknowledgements

Comments
  • Django Wiki Edits timeout

    Django Wiki Edits timeout

    Hi from Gitcoin.

    We are seeing an issue at https://gitcoin.co/wiki/get_started/get-started-grant when we click edit and the server completely times out.

    Is there any known issue that could be causing this. Do u have any tips of how to profile this call on our install?

    wontfix 
    opened by owocki 49
  • markdown image tag is not working: Directory index forbidden

    markdown image tag is not working: Directory index forbidden

    When I upload an image in an wiki page it's getting up loaded to the server to in the location:

    media/wiki/images/9/3ebe4e2f840a4437b3de1d35c1b06ac2/P9260018.JPG

    I can point my browser at that file directly using it as a URL and the image gets displayed in my browser. So the image is there and is being served by the web server (Nginx). However when the image is embedded in a wiki page with "[image:1]" I get "image not found" being displayed instead of the image.

    I've looked at nginx logs I'm getting two error lines:

    2016/10/04 17:56:35 [error] 1236#0: *1 directory index of ".../media/wiki/images/9/3ebe4e2f840a4437b3de1d35c1b06ac2/" is forbidden, request: "GET /media/wiki/images/9/3ebe4e2f840a4437b3de1d35c1b06ac2/ HTTP/1.1",

    2016/10/04 18:00:18 [error] 1236#0: *11 open() ".../media/wiki/images/9/P9260018.JPG" failed (2: No such file or directory), request: "GET /media/wiki/images/9/P9260018.JPG HTTP/1.1",

    So it appears that the directory don't have permission to be indexed but on my server there is permission in the linux file system. Since django-wiki created this directory structure on the server I'd assume that it would set up the permissions required.

    opened by johnfwhitmore 29
  • Add support for use pyproject.toml

    Add support for use pyproject.toml

    Todo list for complete #1199:

    • [x] Create pyproject file
      • [x] Drop setup.py|cfg
    • [x] Add new environments for development lifecycle
      • [x] Test environment
      • [x] Develop environment
      • [x] Transifex environment
      • [x] Documentation environment
    • [x] Migrate Makefile commands to hatch commands
      • [x] Test commands
      • [x] Develop commands
      • [x] Transifex commands
      • [x] Documentation commands
    • [x] Add documentation for development/test/release commands
    • [x] Test sdist and wheel distribution

    Updated after a complete port (Nov 21, 2022):

    • [x] Drop tox.ini configuration and use hatch test matrix
    • [x] Update circleci configuration in order to use pyproject file
    • [x] Migrate pytest config to toml file
    • [x] Docs command set conf.py path
    • [x] Update or drop Manifest.in file
    enhancement clean-up 
    opened by oscarmcm 28
  • Using GAE

    Using GAE

    I'm using GAE which forces me to use blobstore for file uploading.

    Therefore, I am in the process of hacking your code to learn to create my own plugin.

    I am planning to use the original image plugin as my starting point.

    I it'll help me a lot if you give me a heads up for things that I should look into.

    If you think my situation is general enough I'd be glad to request a pull when I'm done.

    opened by gluwa 27
  • "This backend doesn't support absolute urls" deleting image

    I will try to explain the best as I can what I think is a bug but, given my relative knowledge of django could be some misconfiguration. Also, it could be more of a conflict between django wiki and S3 as storage.

    The use case is: having a production cookiecutter django, with S3 configured, and django wiki as application. In fact locally this doesn't happen so I had to bring every AWS configuration locally to make it work.

    When you delete an image, you get prompted if you want to delete the image. After that the method fires to delete the image. The problem is that ImageField using S3 storage class needs to use the "name" field instead of path because path isn't implemented in the storage class.

    def on_image_revision_delete(instance, *args, **kwargs):
        if not instance.image:
            return
        # Remove image file
        path = instance.image.path.split("/")[:-1] #path returns not implemented, while .name works.
        instance.image.delete(save=False)
    

    diango.core.files.storage.py

    def path(self, name):
            """
            Return a local filesystem path where the file can be retrieved using
            Python's built-in open() function. Storage systems that can't be
            accessed using open() should *not* implement this method.
            """
            raise NotImplementedError("This backend doesn't support absolute paths.")
    

    I realize that my explanation is faulty and missing some basic knowledge, sorry for that, I'm currently deepening my django skills so maybe there is something basic that I might be missing. I hope this helps figuring out a way to allow using S3 as a storage.

    It would be much appreciated to know if this is an issue or if I just missed something. I will post to stack overflow for help anyway but if this is an error I'd like to help fixing it.

    opened by superandrew 25
  • Blacklist slug/url patterns or set create privileges

    Blacklist slug/url patterns or set create privileges

    I'd like to have the wiki as the root of my site, but set aside a section /blog that is not managed by django-wiki. This is easily accomplished in urls.py, but there's nothing to stop someone entering /blog as the slug in a new article. I can think of 2 different solutions:

    1. Blacklist certain slugs/urls
    2. Only allow admins to create root level articles

    Is this possible at the moment?

    opened by pknowles 22
  • Images not found

    Images not found

    I'm having problems with getting images to show up.

    Pages show "Image not found" but I can still browse images, they upload successfully, they just don't show.

    I can see in my media folder that images are going into there (/media/wiki/images/1/043d6f8db89b72f0a9c39a4030363e78/picture.png).

    Have gone through the process of setting up django-wiki in a project several times and have come to this same problem. Help is greatly appreciated, I really like django-wiki.

    STATIC_URL, MEDIA_URL and STATIC_ROOT, MEDIA_ROOT are all set like so:

    MEDIA_ROOT = os.path.join(PROJECT_PATH, "media") MEDIA_URL = '/media/' STATIC_ROOT = os.path.join(PROJECT_PATH, "static") STATIC_URL = '/static/'

    opened by gmummaw 20
  •  New Editor 'simplemde' beta

    New Editor 'simplemde' beta

    From https://simplemde.com/ and https://github.com/onepill/django-simplemde

    Alt text

    install django-simplemde

    pip install django-simplemde
    

    2 add 'simplemde' to INSTALLED_APPS.

    
    INSTALLED_APPS = (
        # ...
       ` 'simplemde',`
        # ...
    )
    

    In wiki forms.py

    Add from wiki.simplemde.widgets import SimpleMDEEditor

    In class

    
    "CreateRootForm", "EditForm", "CreateForm"
    

    Replace:

    widget=getEditor().get_widget()`   with  `widget=SimpleMDEEditor() 
    

    Do the same in admin.py

    1. optional 'recommended' You could set SimpleMDE options in settings.py like this:
    SIMPLEMDE_OPTIONS = {
        'hideIcons':["guide", "heading"],
        'showIcons':["heading-2"],
        'promptURLs': True,
        'spellChecker': False,
        'placeholder': 'haha',
        'status': False,
        'autosave': {
            'enabled': True
        }
    }
    

    Alt text

    plugins 
    opened by teury 18
  • License Question

    License Question

    Hey all,

    Great work on the wiki - it was quick and easy to install and looks great out of the box. I've got a question on your GPLv3 license - does including the wiki on a commercial public facing Django site require the entire site to be open sourced? Or would it comply with the license if I only made the wiki portion of the site available and the rest remained under copyright?

    opened by Keilan 18
  • Error with django 1.8 and wiki from master

    Error with django 1.8 and wiki from master

    django-wiki: needs django.core.context_processors.request in TEMPLATE_CONTEXT_PROCESSORS') django.core.exceptions.ImproperlyConfigured: django-wiki: needs django.core.context_processors.request in TEMPLATE_CONTEXT_PROCESSORS

    It seems django.core.context_processors has been depreciated in 1.8 into django.template.context_processors.

    opened by artainis 17
  • Bootstrap4

    Bootstrap4

    Work towards closing off https://github.com/django-wiki/django-wiki/issues/518

    There are probably some tiny things i missed however this PR should cover most things (I used the testproject to make sure that most things have remain unchanged). The biggest difference is probably font size and spacings, which can be tweaked. I don't think it looks quite as polished as the current bootstrap 3 version, but it's not far off in my opinion.

    • Select2 is used in favour of typeahead, since typeahead appears to be abandoned and doesn't play well with bootstrap4.
    • jQuery-ui has been removed (also a bit of a dead project). This means the resizing of modals has been removed, but I think I've made that OK with some dynamic resizing according to window size.
    • Font-awesome was updated to latest, since bootstrap4 uses scss and I had to make changes here for that anyway
    • jQuery updated to latest
    opened by slinkymanbyday 16
  • SOME cards for default templates

    SOME cards for default templates

    Respectful of read permissions, we should add preview cards for Fediverse, Twitter, Facebook, LinkedIn etc.

    The default image path could perhaps be read from a setting.

    enhancement 
    opened by benjaoming 3
  • Content overview in search page don't work correctly for some languages.

    Content overview in search page don't work correctly for some languages.

    I'm reporting a bug in search page.

    I use japanese in django-wiki, but I found that content overview in search page is not work correctly especially in case using html tags in the content.

    I realized that get_content_snippet() in wiki-tags.py is optimized only for the language using space between words, but Japanese don't use space between words.

    I would like to propose the following in spite of current get_content_snippet()

    @register.filter
    def search_result_format(content, keyword, max_letters=300):
    
        content = striptags(content)
        content =re.sub(r'\r\n', ' ', content)
        content =re.sub(r'\n', ' ', content)
        keyword=re.escape(keyword)
    
        result=re.search(keyword, content, re.IGNORECASE)
    
        startposition=result.start()-int(max_letters/2)
        if startposition<0: startposition=0
    
        endposition=startposition+max_letters
        if endposition>len(content): endposition=len(content)
    
        result_content=content[startposition:endposition]
    
        if startposition>0:        
            #for the languages using space between words
            spase_position=result_content.find(" ")
            if spase_position >=0 and spase_position < 15: 
                result_content=result_content[spase_position:]
    
            result_content="...."+result_content
    
        if endposition<len(content):
            #for the languages using space between words
            spase_position=result_content.rfind(" ")
            if spase_position >=0 and len(result_content)-spase_position < 15: 
                result_content=result_content[:spase_position]
    
            result_content=result_content+"...."
    
        #html markup
        result_content=re.sub(r'('+keyword+')',r'<strong style="background:#ddd">\1</strong>',result_content ,flags=re.IGNORECASE)
        
        return result_content
    
    opened by tohort 0
  • Support for pymdown-extensions

    Support for pymdown-extensions

    The default of django-wiki should be to depend on pymdown-extensions and have out-of-the-box CSS support for a set of plugins.

    https://facelessuser.github.io/pymdown-extensions/

    enhancement 
    opened by benjaoming 0
  • "This slug conflicts with an existing URL." although there is no conflicting slug

    Hello,

    I recently upgraded to wiki==0.7.6 and for some reason I can't add any new page, because I get the following error

    This slug conflicts with an existing URL.

    Screenshot 2021-09-02 103131

    although there is definitely no conflicting slug.

    I do do some magic on the wiki urls to put them behind a login wall (see here). That said, this was not an issue with the previous versions of wiki.

    Any ideas what the problem could be? Thanks!

    opened by nicolazilio 7
  • Reusable plugins cannot have no article

    Reusable plugins cannot have no article

    I started to make test for models.baseplugins.py but I came across a problem

    def test_reusable_plugins_related(self):
        a1 = Article.objects.create()
        a2 = Article.objects.create()
    
        p = ReusablePlugin.objects.create(article=a1)
        pk = p.pk
        p.articles.add(a2)
        p.save()
    
        self.assertEqual(a1, p.article)
        self.assertNotIn(a1, p.articles.all())
    
        p.article = None
        p.save() # <---- Raise a RelatedObjectDoesNotExist exception
    
        self.assertIsEqual(p.article, a2)
    
        a2.delete()
        with self.assertRaises(ReusablePlugin.DoesNotExist):
            ReusablePlugin.objects.get(pk=pk)
    

    I feel like the intent of the presave signal isn't to raise an exception when instance.article is None.

    @disable_signal_for_loaddata
    def on_reusable_plugin_pre_save(**kwargs):
        # Automatically make the original article the first one in the added
        # set
        instance = kwargs["instance"]
        if not instance.article: # <---- Raise a RelatedObjectDoesNotExist exception
            articles = instance.articles.all()
            if articles.exists():
                instance.article = articles[0]
    

    My guess is the following part in ReusablePlugin class didn't do anything or not anymore.

    # The article on which the plugin was originally created.
    # Used to apply permissions.
    ArticlePlugin.article.on_delete = models.SET_NULL
    ArticlePlugin.article.verbose_name = _("original article")
    ArticlePlugin.article.help_text = _("Permissions are inherited from this article")
    ArticlePlugin.article.null = True
    ArticlePlugin.article.blank = True
    

    According to the django documentation you cannot modified inherited fields without a proper abstract class, so the ReusablePlugin.article cannot be different than ArticlePlugin.article

    I dont know how much of a hindrance it is for attachment plugin but we should either :

    • remove the part of the code that threat ReusablePlugin.article as if it has null==blank==True
    • make ArticlePlugin class abstract (with database change)
    • remove the inheritance of ReusablePlugin from ArticlePlugin (with database change)

    keep in mind that it also mean that on_delete==models.CASCADE and if we keep the current code the feature "the attachment isnt deleted when the main Article is deleted" didnt work as intended i assume.

    opened by SlyPerdrix 1
  • Documentation should mention i18n_patterns and translation

    Documentation should mention i18n_patterns and translation

    It would be nice if the documentation in some way mentioned how to have a Wiki in different languages, for instance what happens with /en/wiki and /fr/wiki supposing it's available in English and French:

    • How to using i18n_patterns, maybe this should be a real code snippet example in the main installation instructions since it's so commonly needed
    • How to host content in different languages (hint: it's not really supported but easy to make a solution for it)
    • How to make a language switcher (perhaps just link to a solution)
    opened by benjaoming 0
Releases(releases/0.9)
  • releases/0.9(Jun 27, 2022)

  • releases/0.8.2(May 7, 2022)

  • releases/0.8.1(Apr 25, 2022)

  • releases/0.8(Feb 14, 2022)

  • releases/0.7.10(Dec 29, 2021)

  • releases/0.7.9(Nov 16, 2021)

  • releases/0.7.8(Oct 25, 2021)

  • releases/0.7.7(Aug 28, 2021)

  • releases/0.7.6(Aug 1, 2021)

  • releases/0.7.5(Apr 10, 2021)

  • releases/0.7.4(Apr 10, 2021)

  • releases/0.7.3(Jan 11, 2021)

  • releases/0.7.2(Jan 7, 2021)

  • releases/0.7.1(Dec 29, 2020)

  • releases/0.7(Oct 28, 2020)

  • releases/0.6(Oct 4, 2020)

  • releases/0.5(Nov 19, 2019)

    Changed

    • Update to Markdown >= 3.1 #920 (Don Bowman, Benjamin Bach)
    • Several code-cleanups, test improvements and test

    Added

    • Django 2.2, 3.0 support

    NB! Django 3.0 support is pending other dependencies' Django 3.0 support

    Removed

    • Django 1.11 support
    Source code(tar.gz)
    Source code(zip)
  • releases/0.4.5(Jul 17, 2019)

    Fixed

    • Django admin error when uploading images: Column 'revision_number' cannot be null #950 (Benjamin Bach)

    Translations

    • Added: Romanian ro
    Source code(tar.gz)
    Source code(zip)
  • releases/0.4.4(Feb 1, 2019)

    Fixed

    • Projects fail to load with custom User models without a username #865 (trevorpeacock)
    • Use User.get_username() for article cache instead of User.__str__ #931 (Ole Anders Stokker)
    Source code(tar.gz)
    Source code(zip)
  • releases/0.4.3(Feb 1, 2019)

  • releases/0.4.2(Feb 1, 2019)

  • releases/0.4.1(Oct 20, 2018)

  • releases/0.4(Oct 18, 2018)

  • releases/0.3.1(Feb 10, 2018)

  • releases/0.3(Jan 29, 2018)

    Added

    • Search choice between either current or global tree (Christian Duvholt) #580 #731
    • New bootstrapped image insert dialog (Frank Loemker) #628
    • Allow the HTML tag <hr> (Frank Loemker) #629
    • Global History overview of page revisions (Frank Loemker and Maximilien Cuony) #627
    • Move article support with redirects (Frank Loemker) #640
    • Django 1.11 compatibility (Luke Plant) #634
    • Crop paginator window when there are >9 pages in a list (Frank Loemker) #646
    • Extended syntax for attachment macro: [attachment:id title:"text" size] (Frank Loemker) #678
    • Add Sphinx documentation for plugin settings (Frank Loemker) #681
    • Show “log out” in menu when account handling is disabled (jenda1) #691
    • Markdown tag with wiki paths now support fragments like [Click Here](wiki:/path#header) (Frank Loemker) #701

    Changed

    • Test refactor: Use django-functest and separate WebTest from Selenium (Luke Plant) #634
    • Repo refactor: Moved wiki package to src/ folder and test code to tests/ #631
    • Render django.contrib.messages with template tag and inclusion template: Configurable and bootstrap 3 compatible (Benjamin Bach and Frank Loemker) #654
    • Don’t hardcode redirect url in account update view (Benjamin Bach) #650
    • Python 3.6 support added to test matrix (Benjamin Bach) #664
    • Keep CSS global namespace clean, refactor CSS rule label -> .wiki-label label (Christian Duvholt) #679
    • Plugins can whitelist HTML tags and attributes (jenda1) #700
    • Optimizations to fundamental permission lookup managers (Christian Duvholt) #714
    • Code quality upgrade, remove obsolete code, linting and tidying up (Mads Jensen) #797, #705, #707, #716, #717, #718, #719, #720, #721, #722, #724, #725, #726, #727, #728, #730, #732, #733, #735, #736, #737, #738, #741, #743, #743
    • Added AppConfig class for all plugins (Raffaele Salmaso) #758
    • Explicit on_delete for all ForeignKey fields (Raffaele Salmaso) #759
    • Django 2.0 preparation: atomic=False for 3 migrations that rename tables/fields (Raffaele Salmaso) #760
    • Set dependency django-nyt<1.1 to avoid future breakage (Benjamin Bach) #761

    Fixed

    • Removed exception catch all in URLPath.delete_subtree which silenced errors while delete articles with descendents
    • Fix article settings page in Django 1.11 (Frank Loemker) #682
    • Fix upstream MPTT breaking deletion of articles from django-admin (Frank Loemker) #683
    • Wrong HTML attribute ‘type’ on search result page (Geoff Clapp) #698
    • Fix restoring of attachments and other RevisionPlugin types after deletion (Frank Loemker) #672
    • Allowing <sup> because of footnotes (Frank Loemker) #750
    • Hunted down unclosed HTML tags #750 (Mads Jensen) #741
    Source code(tar.gz)
    Source code(zip)
  • releases/0.2.5(Jan 29, 2018)

  • beta/0.3b4(Jan 15, 2018)

    Added

    • Search choice between either current or global tree (Christian Duvholt) #580 #731
    • New bootstrapped image insert dialog (Frank Loemker) #628
    • Allow the HTML tag <hr> (Frank Loemker) #629
    • Global History overview of page revisions (Frank Loemker and Maximilien Cuony) #627
    • Move article support with redirects (Frank Loemker) #640
    • Django 1.11 compatibility (Luke Plant) #634
    • Crop paginator window when there are >9 pages in a list (Frank Loemker) #646
    • Extended syntax for attachment macro: [attachment:id title:"text" size] (Frank Loemker) #678
    • Add Sphinx documentation for plugin settings (Frank Loemker) #681
    • Show “log out” in menu when account handling is disabled (jenda1) #691
    • Markdown tag with wiki paths now support fragments like [Click Here](wiki:/path#header) (Frank Loemker) #701

    Changed

    • Test refactor: Use django-functest and separate WebTest from Selenium (Luke Plant) #634
    • Repo refactor: Moved wiki package to src/ folder and test code to tests/ #631
    • Render django.contrib.messages with template tag and inclusion template: Configurable and bootstrap 3 compatible (Benjamin Bach and Frank Loemker) #654
    • Don’t hardcode redirect url in account update view (Benjamin Bach) #650
    • Python 3.6 support added to test matrix (Benjamin Bach) #664
    • Keep CSS global namespace clean, refactor CSS rule label -> .wiki-label label (Christian Duvholt) #679
    • Plugins can whitelist HTML tags and attributes (jenda1) #700
    • Optimizations to fundamental permission lookup managers (Christian Duvholt) #714
    • Code quality upgrade, remove obsolete code, linting and tidying up (Mads Jensen) #797, #705, #707, #716, #717, #718, #719, #720, #721, #722, #724, #725, #726, #727, #728, #730, #732, #733, #735, #736, #737, #738, #741, #743, #743

    Fixed

    • Removed exception catch all in URLPath.delete_subtree which silenced errors while delete articles with descendents
    • Fix article settings page in Django 1.11 (Frank Loemker) #682
    • Fix upstream MPTT breaking deletion of articles from django-admin (Frank Loemker) #683
    • Wrong HTML attribute ‘type’ on search result page (Geoff Clapp) #698
    • Fix restoring of attachments and other RevisionPlugin types after deletion (Frank Loemker) #672
    • Allowing <sup> because of footnotes (Frank Loemker) #750
    • Hunted down unclosed HTML tags #750 (Mads Jensen) #741
    Source code(tar.gz)
    Source code(zip)
  • beta/0.3b3(Sep 6, 2017)

  • beta/0.3b2(Sep 6, 2017)

  • beta/0.3b1(Jul 20, 2017)

Reference client for Bitmessage: a P2P encrypted decentralised communication protocol:

PyBitmessage Bitmessage is a P2P communication protocol used to send encrypted messages to another person or to many subscribers. It is decentralized

Bitmessage 2.7k Dec 30, 2022
the first third-party instant messaging client for Google Hangouts

hangups hangups is the first third-party instant messaging client for Google Hangouts. It includes both a Python library and a reference client with a

Tom Dryer 1.7k Dec 25, 2022
get things from one computer to another, safely

Magic Wormhole Get things from one computer to another, safely. This package provides a library and a command-line tool named wormhole, which makes it

15.4k Jan 01, 2023
Synapse: Matrix reference homeserver

Synapse Contents Introduction About Matrix Support Synapse Installation Connecting to Synapse from a client Registering a new user from a client ACME

matrix.org 10.4k Jan 02, 2023
Securely and anonymously share files, host websites, and chat with friends using the Tor network

OnionShare OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor ne

Micah Lee 5.4k Jan 02, 2023
MoinMoin Wiki Development (2.0+), unstable, for production please use 1.9.x.

MoinMoin - a wiki engine in Python MoinMoin is an easy to use, full-featured and extensible wiki software package written in Python. It can fulfill a

MoinMoin Wiki Engine 240 Dec 22, 2022
Online translation tool

Pootle Docs | Changes | Issues | Community Support | Contributing | Development Channel Pootle is an online translation and localization tool. It work

Translate 1.4k Jan 06, 2023
Generate links that users can use to submit messages encrypted with your public key.

Hawkpost Hawkpost lets you create unique links that you can share with the person that desires to send you important information but doesn't know how

Whitesmith 901 Dec 27, 2022
Zulip server and webapp - powerful open source team chat

Zulip overview Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of

Zulip 17k Jan 07, 2023
Mail hosting made simple

Modoboa Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface. It provides useful components such as

Modoboa 2.4k Jan 05, 2023
Build SMS applications with Python

RapidSMS RapidSMS is a free and open source framework for building interactive SMS applications, which integrates tightly with Django to provide a ric

RapidSMS 622 Dec 31, 2022
Insular email distribution - mail server as Docker images

Mailu is a simple yet full-featured mail server as a set of Docker images. It is free software (both as in free beer and as in free speech), open to s

Mailu 4.2k Jan 04, 2023
Askbot is a Django/Python Q&A forum. **Contributors README**: https://github.com/ASKBOT/askbot-devel#how-to-contribute. Commercial hosting of Askbot and support are available at https://askbot.com

ATTENTION: master branch is experimental, please read below Askbot - a Django Q&A forum platform This is Askbot project - open source Q&A system, like

ASKBOT 1.5k Dec 28, 2022
Abilian Social Business Engine - an enterprise social networking / collaboration platform.

About Abilian SBE (Social Business Engine) is a platform for social business applications, and more specifically collaborative / enterprise 2.0 busine

Abilian open source projects 63 Dec 29, 2022
Web based localization tool with tight version control integration.

Weblate is a copylefted libre software web-based continuous localization system, used by over 1150 libre projects and companies in more than 115 count

Weblate 3.3k Jan 02, 2023
ProPublica's collaborative tip-gathering framework. Import and manage CSV, Google Sheets and Screendoor data with ease.

Collaborate This is a web application for managing and building stories based on tips solicited from the public. This project is meant to be easy to s

ProPublica 86 Oct 18, 2022
Indico - A feature-rich event management system, made @ CERN, the place where the Web was born.

Indico Indico is: 🗓 a general-purpose event management tool; 🌍 fully web-based; 🧩 feature-rich but also extensible through the use of plugins; ⚖️ O

Indico 1.4k Dec 31, 2022
GitHub repository for the SecureDrop whistleblower platform. Do not submit tips here!

SecureDrop is an open-source whistleblower submission system that media organizations can use to securely accept documents from, and communicate with

Freedom of the Press Foundation 3.4k Jan 01, 2023
Main repo for Inboxen.org

Inboxen This is the complete system with everything you need to set up Inboxen. The current maintainer of this repo is Matt Molyneaux GPG keys GPG key

Inboxen 249 Nov 13, 2022
GlobaLeaks is free, open source software enabling anyone to easily set up and maintain a secure whistleblowing platform.

GlobaLeaks is free, open souce software enabling anyone to easily set up and maintain a secure whistleblowing platform. Continous Integration and Test

GlobaLeaks 995 Jan 01, 2023