Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

AA Forum

Version License Python Django pre-commit Code Style: black Discord

Simple forum app for Alliance Auth

⚠️ Before you install this module ⚠️

This module needs quite some configuration done before working properly. You need to modify your Apache/Nginx configuration as well as the global URL config of Alliance Auth. So please only install if you know what you're doing/feel comfortable to make these kind of changes. For you own sanity, and mine :-)

Contents

Overview

Features

  • Simple permission system. Only 2 permissions ("has_access" and "can_manage")
  • Simple administration, no maze to click through to get where you wantet to go
  • Categories and boards are sortable via drag and drop in admin view
  • Mass creation of boards with a new categoy
  • Boards can be restricted to 1 or more groups, bards without restrictions are visible for everyone who has access to the forum
  • ckEditor with image upload
  • Unread topics counter as number on the "Forum" link in the left navigation

Screenshots

Forum Index

Forum Index

Topic Overview / Board Index

Topic Overview / Board Index

Topic View

Topic View

Start new Topic (ckEditor)

Start new Topic

Admin View

Admin View

Installation

Important: Please make sure you meet all preconditions before you proceed:

  • AA Forum is a plugin for Alliance Auth. If you don't have Alliance Auth running already, please install it first before proceeding. (see the official AA installation guide or details)
  • AA Forum needs a couple of changes made to your Webserver and Alliance Auth configuration. So make sure you know how to do so. The steps needed will be described in this document, but you need to understand what will be changed.

Step 1 - Install the package

Make sure you are in the virtual environment (venv) of your Alliance Auth installation Then install the latest release directly from PyPi.

pip install aa-forum

Step 2 - Configure Alliance Auth

This is fairly simple, configure your AA settings (local.py) as follows:

# AA Forum
INSTALLED_APPS += [
    "ckeditor",
    "ckeditor_uploader",
    "aa_forum",  # https://github.com/ppfeufer/aa-forum
]

MEDIA_URL = "/media/"
MEDIA_ROOT = "/var/www/myauth/media/"

X_FRAME_OPTIONS = "SAMEORIGIN"

CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_RESTRICT_BY_USER = True
CKEDITOR_ALLOW_NONIMAGE_FILES = False

CKEDITOR_CONFIGS = {"default": {"width": "100%", "height": "45vh"}}

Now let's move on to editing the global URL configuration of Alliance Auth. To do so, you need to open /home/allianceserver/myauth/myauth/urls.py and change the following:

from django.conf.urls import include, url
from allianceauth import urls

# *** New Imports for cKeditor
from django.urls import re_path
from django.contrib.auth.decorators import login_required
from django.views.decorators.cache import never_cache
from ckeditor_uploader import views as ckeditor_views

urlpatterns = [
    # *** New URL override for cKeditor BEFORE THE MAIN IMPORT
    re_path(r"^upload/", login_required(ckeditor_views.upload), name="ckeditor_upload"),
    re_path(
        r"^browse/",
        never_cache(login_required(ckeditor_views.browse)),
        name="ckeditor_browse",
    ),
    # Alliance Auth URLs
    url(r"", include(urls)),
]

handler500 = "allianceauth.views.Generic500Redirect"
handler404 = "allianceauth.views.Generic404Redirect"
handler403 = "allianceauth.views.Generic403Redirect"
handler400 = "allianceauth.views.Generic400Redirect"

Step 3 - Configure your webserver

Your webserver needs to know from where to serve the uploaded mages of course, so we have to tell it.

Apache

In your vhost configuration you have a line ProxyPassMatch ^/static !, which tells the server where to find all the static files. We are adding a similar line for the media, right below that one.

Add the following right below the static proxy match:

ProxyPassMatch ^/media !

Now we also need to let the server know where to find the media directory we just configured the proxy for. To do so, add a new Alias to your configuration. This can be done right below the already existing Alias for /static:

Alias "/media" "/var/www/myauth/media/"

At last a "Directory" rule is needed as well. Add the following below the already existing Directory rule for the static files:

<Directory "/var/www/myauth/media/">
    Require all granted
</Directory>

So the whole block should now look like this:

ProxyPassMatch ^/static !
ProxyPassMatch ^/media !  # *** NEW proxy rule
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
ProxyPreserveHost On

Alias "/static" "/var/www/myauth/static/"
Alias "/media" "/var/www/myauth/media/"

<Directory "/var/www/myauth/static/">
    Require all granted
</Directory>

<Directory "/var/www/myauth/media/">
    Require all granted
</Directory>

Restart your Apache webserver.

Nginx

In order to let Nginx know where to find the uploaded files, you need to add a new location rule to the configuration. Add the following right below the definition for your "static" location.

location /media {
    alias /var/www/myauth/media;
    autoindex off;
}

Restart your Nginx webserver.

Step 4 - Finalize the installation

Run static files collection and migrations

python manage.py collectstatic
python manage.py migrate

Restart your supervisor services for Auth

Step 5 - Set up permissions

Now it's time to set up access permissions for your new module. You can do so in your admin backend. Read the Permissions section for more information about the available permissions.

Permissions

ID Description Notes
basic_access Can access the AA-Forum module Grants read access to the forum
manage_forum Can manage the AA-Forum module (Categories, topics and messages) User with this permission can create, edit and delete boards and categories in the "Administration" view. They can also modify and delete messages and topics in the "Forum" view from boards they have access to. They cannot see all boards in the "Forum" view and are still bound by the board's groups restrictions.

Changelog

See CHANGELOG.md

Contributing

You want to contribute to this project? That's cool!

Please make sure to read the contribution guidelines (I promise, it's not much, just some basics)

Metadata

Release files for aa-forum 0.1.0b2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aa-forum 0.1.0b2
File Size Uploaded
aa-forum-0.1.0b2.tar.gz 638.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aa-forum 0.1.0b2
File Interpreter ABI Platform
aa_forum-0.1.0b2-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / aa-forum-0.1.0b2.tar.gz

Download URL aa-forum-0.1.0b2.tar.gz
Size 638.2 kB
Tags Source
SHA-256 checksum
How to use checksums
fafc6ea0f57703ec0b8ccedddb56446dd81e4da60631d08e94b3bdc5d384274c
BLAKE2b-256 checksum
How to use checksums
6be88f367ab167b8337cb10adf7359514e67202454a4690c7bfbff24dcc013c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

Release files / aa_forum-0.1.0b2-py3-none-any.whl

Download URL aa_forum-0.1.0b2-py3-none-any.whl
Size 676.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a7a08674924699bde87122ef310984bce2226e247c6fb5a869088abb46ad014a
BLAKE2b-256 checksum
How to use checksums
0785fa63250197d15511d4eb64ad7856c4f94b2504977dc860d8461fb22b27f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

Release history Release notifications | RSS feed

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.13.0

2 release files

2.10.0

2 release files

2.9.2

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.19.5

2 release files

1.19.4

2 release files

1.19.2

2 release files

1.19.1

2 release files

1.19.0

2 release files

1.18.0

2 release files

1.17.2

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.2

2 release files

1.15.1

2 release files

1.14.0

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.9.0

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

This release

0.1.0b2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page