Django-Niji

Django-NIJI is a pluggable forum APP for Django projects

Installation

Requirements

Django-NIJI is tested with the following Django and Python versions

Django from 1.8 to 1.10
Python from 2.7 3.4 3.5

Get the package

Django-NIJI is available on pypi, so just run

pip install django-niji

Configuration

Tweak project settings

Required Settings:

INSTALLED_APPS += [
    'django.contrib.humanize',
    'crispy_forms',
    'niji',
    'rest_framework',
]

# Template context_processors
TEMPLATES[0]['OPTIONS']['context_processors'].append("niji.context_processors.niji_processor")

# Media related settings are required for avatar uploading to function properly
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Other Settings:

# Form UI Settings
CRISPY_TEMPLATE_PACK = 'bootstrap3'

# Configure where to link to from the Login and Reg buttons in the forum
NIJI_LOGIN_URL_NAME = "account:login"
NIJI_REG_URL_NAME = "account:reg"

# Site Name
NIJI_SITE_NAME = "A lovely forum"

Configure URLs

Simply include the urls

from django.conf.urls import url, include
from niji import urls as niji_urls

urlpatterns = [
    ...
    url(r'', include(niji_urls, namespace="niji")),
]

Configure Celery

Django-NIJI requires celery to send notifications.

If you already have a celery configured for you Django project, you can use just that.

Otherwise, follow these simple steps:

Create celery.py inside project directory

Please replace ``project_name`` with your project’s name

from __future__ import absolute_import

import os
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings') # Change this to the project name

app = Celery('project_name')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Modify project __init__.py
from __future__ import absolute_import
from .celery import app as celery_app
Add setting entries

Please adjust some of the settings according to your case

BROKER_URL = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

If you don’t want to run a celery worker separately, include these entries:

BROKER_BACKEND = 'memory'
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
CELERY_ALWAYS_EAGER = True

Otherwise, you’ll need to run celery -A project_name worker -l INFO

Configure Editor (Optional)

If you have pagedown in your settings.py, Django-NIJI will enable that editor automatically.

In order not to break the layout you may need to include the following settings:

# Pagedown Editor
PAGEDOWN_WIDGET_CSS = ('pagedown/demo/browser/demo.css', "css/editor.css",)
PAGEDOWN_WIDGET_TEMPLATE = 'niji/widgets/pagedown.html'

Migrate

python manage.py migrate

Collect Static Assets

python manage.py collectstatic

Now, login to your project’s admin page and add some Nodes before you can post anything.