diff --git a/config_example/config.py b/config_example/config.py index 2b1f059..11fda35 100644 --- a/config_example/config.py +++ b/config_example/config.py @@ -1,27 +1,37 @@ +####################################################################### +# Configuration of your django application +####################################################################### # # Piki Setting # STARTPAGE = "startpage" +# +# Users library +# +# This enables or disables the self registration USERS_SELF_REGISTRATION = False +# +# Themes library +# +# This defines the default theme, if no theme is set in the django parameters +DEFAULT_THEME = 'clear-blue' # -# General settings +# Django # -# APP_NAME is used for logging -APP_NAME = 'piki' - +# This defines the mode of the running server # SECURITY WARNING: don't run with debug turned on in production! DEBUG = False -# SECURITY WARNING: don't run with a dummy secret in production! +# This a the secret key for your application. +# SECURITY WARNING: don't run with a dummy secret in production! And don't let others read this key! SECRET_KEY = None +# This defines the listener hostnames for your django server # SECURITY WARNING: don't run with '0.0.0.0' in in production, unless you know what you are doing! -ALLOWED_HOSTS = ['127.0.0.1', 'localhost', ] +# ALLOWED_HOSTS = ['', ] -# -# Style settings -# -DEFAULT_THEME = 'clear-blue' +# This might be needed for usage in a docker environment +# CSRF_TRUSTED_ORIGINS = ['', ] diff --git a/mycreole b/mycreole index e093c48..997594e 160000 --- a/mycreole +++ b/mycreole @@ -1 +1 @@ -Subproject commit e093c48e91aa378ac87bb32e90bc391a81024acb +Subproject commit 997594e37149b55e598f7dedfefed3c2998a2c87 diff --git a/pages/context.py b/pages/context.py index 2124d92..c57d678 100644 --- a/pages/context.py +++ b/pages/context.py @@ -2,9 +2,9 @@ import inspect import logging import os +from django.conf import settings from django.utils.translation import gettext as _ - from pages import access from .help import actionbar as actionbar_add_help import mycreole @@ -12,11 +12,7 @@ import pages from themes import empty_entry_parameters, gray_icon_url, color_icon_url from users.context import menubar as menubar_users -try: - from config import APP_NAME as ROOT_LOGGER_NAME -except ImportError: - ROOT_LOGGER_NAME = 'root' -logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__) +logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__name__) ATTACHMENT_UID = 'attachment' BACK_UID = 'back' diff --git a/pages/views.py b/pages/views.py index 0c8ca5e..059d57e 100644 --- a/pages/views.py +++ b/pages/views.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect from django.utils.translation import gettext as _ @@ -15,11 +16,7 @@ import mycreole from .page import creol_page from themes import Context -try: - from config import APP_NAME as ROOT_LOGGER_NAME -except ImportError: - ROOT_LOGGER_NAME = 'root' -logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__) +logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__name__) def root(request): diff --git a/piki/settings.py b/piki/settings.py index 89eb5a6..897be98 100644 --- a/piki/settings.py +++ b/piki/settings.py @@ -10,10 +10,10 @@ For the full list of settings and their values, see https://docs.djangoproject.com/en/5.1/ref/settings/ """ -import config -from config import APP_NAME as ROOT_LOGGER_NAME -import os from pathlib import Path + +import config +import os import random import stat import sys @@ -21,40 +21,6 @@ import sys # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent -# Check permission of config.py -# -if sys.platform == 'linux' or sys.platform == 'linux2': - st = os.stat(os.path.join(BASE_DIR, 'config.py')) - if st.st_mode & stat.S_IRGRP or st.st_mode & stat.S_IROTH: - raise PermissionError("conig.py is readable by group or others.") - -# Default values, if not defined in config.py -# -USER_CONFIG_DEFAULTS = { - 'DEBUG': False, - 'SECRET_KEY': None, - 'DEFAULT_THEME': 'clear-blue', - 'ALLOWED_HOSTS': ['127.0.0.1', 'localhost', ], - 'CSRF_TRUSTED_ORIGINS': [], -} - -# Set configuration parameters -# -thismodule = sys.modules[__name__] -for property_name in USER_CONFIG_DEFAULTS: - try: - value = getattr(config, property_name) - except AttributeError: - value = USER_CONFIG_DEFAULTS[property_name] - setattr(thismodule, property_name, value) - -# SECURITY WARNING: keep the secret key used in production secret! -# -if SECRET_KEY is None: - chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)' - s_key = ''.join([random.choice(chars) for n in range(50)]) - secret_key_warning = "You need to create a config.py file including at least a SECRET_KEY definition (e.g.: --> %s <--). " % repr(s_key) - raise KeyError(secret_key_warning) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ @@ -148,8 +114,72 @@ USE_I18N = True USE_TZ = True + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.1/howto/static-files/ +STATIC_ROOT = os.path.join(BASE_DIR, 'data', 'static') +STATIC_URL = 'static/' + +MEDIA_ROOT = os.path.join(BASE_DIR, 'data', 'media') +MEDIA_URL = '/media/' + +MYCREOLE_ROOT = os.path.join(BASE_DIR, 'data', 'pages') +MYCREOLE_ATTACHMENT_ACCESS = { + 'read': 'pages.access.read_attachment', + 'modify': 'pages.access.modify_attachment', +} +MYCREOLE_BAR = { + 'navibar': 'pages.context.navigationbar', + 'menubar': 'pages.context.menubar', +} + +PAGES_ROOT = os.path.join(BASE_DIR, 'data', 'pages') + +# Default primary key field type +# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + + +# Check permission of config.py +# +if sys.platform == 'linux' or sys.platform == 'linux2': + st = os.stat(os.path.join(BASE_DIR, 'config.py')) + if st.st_mode & stat.S_IRGRP or st.st_mode & stat.S_IROTH: + raise PermissionError("conig.py is readable by group or others.") + +# Default values, if not defined in config.py +# +USER_CONFIG_DEFAULTS = { + 'DEBUG': False, + 'SECRET_KEY': None, + 'DEFAULT_THEME': 'clear-blue', + 'ALLOWED_HOSTS': ['127.0.0.1', 'localhost', ], + 'CSRF_TRUSTED_ORIGINS': [], +} + +# Set configuration parameters +# +thismodule = sys.modules[__name__] +for property_name in USER_CONFIG_DEFAULTS: + try: + value = getattr(config, property_name) + except AttributeError: + value = USER_CONFIG_DEFAULTS[property_name] + setattr(thismodule, property_name, value) + +# SECURITY WARNING: keep the secret key used in production secret! +# +if SECRET_KEY is None: + chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)' + s_key = ''.join([random.choice(chars) for n in range(50)]) + secret_key_warning = "You need to create a config.py file including at least a SECRET_KEY definition (e.g.: --> %s <--). " % repr(s_key) + raise KeyError(secret_key_warning) + + # Logging Configuration # +ROOT_LOGGER_NAME = 'apps' LOGGING = { 'version': 1, 'disable_existing_loggers': False, @@ -186,27 +216,3 @@ File "%(pathname)s", line %(lineno)d, in %(funcName)s }, } -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/5.1/howto/static-files/ - -STATIC_ROOT = os.path.join(BASE_DIR, 'data', 'static') -STATIC_URL = 'static/' - -MEDIA_ROOT = os.path.join(BASE_DIR, 'data', 'media') -MEDIA_URL = '/media/' - -PAGES_ROOT = os.path.join(BASE_DIR, 'data', 'pages') - -MYCREOLE_ROOT = os.path.join(BASE_DIR, 'data', 'pages') -MYCREOLE_ATTACHMENT_ACCESS = { - 'read': 'pages.access.read_attachment', - 'modify': 'pages.access.modify_attachment', -} -MYCREOLE_BAR = { - 'navibar': 'pages.context.navigationbar', - 'menubar': 'pages.context.menubar', -} -# Default primary key field type -# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/users b/users index 6b55e81..c9532aa 160000 --- a/users +++ b/users @@ -1 +1 @@ -Subproject commit 6b55e81816ace1583051c8c62298c8a7281e2fcb +Subproject commit c9532aaf37cc785583d7ffc89d1d2f738985171d