Compare commits

..

3 Commits

3 changed files with 55 additions and 16 deletions

View File

@ -5,7 +5,7 @@ from django.conf import settings
# TODO: Add whoosh and search # TODO: Add whoosh and search
import fstools import fstools
from pages import messages from pages import messages, url_page
import mycreole import mycreole
import os import os
@ -16,8 +16,9 @@ class creol_page(object):
FOLDER_CONTENT = 'content' FOLDER_CONTENT = 'content'
FILE_NAME = 'page' FILE_NAME = 'page'
def __init__(self, rel_path) -> None: def __init__(self, request, rel_path) -> None:
self._rel_path = rel_path self._rel_path = rel_path
self._request = request
def rel_path_is_valid(self): def rel_path_is_valid(self):
return not self.SPLITCHAR in self._rel_path return not self.SPLITCHAR in self._rel_path
@ -62,11 +63,11 @@ class creol_page(object):
with open(self.content_file_name, 'w') as fh: with open(self.content_file_name, 'w') as fh:
fh.write(page_txt) fh.write(page_txt)
def render_to_html(self, request): def render_to_html(self):
if self.is_available(): if self.is_available():
return self.render_text(request, self.raw_page_src) return self.render_text(self._request, self.raw_page_src)
else: else:
messages.unavailable_msg_page(request, self._rel_path) messages.unavailable_msg_page(self._request, self._rel_path)
return "" return ""
def render_text(self, request, txt): def render_text(self, request, txt):
@ -82,7 +83,7 @@ class creol_page(object):
except ValueError: except ValueError:
pass pass
params = kwargs.get('').split(",") params = kwargs.get('', '').split(",")
depth = parse_depth(params[0]) depth = parse_depth(params[0])
if len(params) == 2: if len(params) == 2:
startname = params[1] startname = params[1]
@ -95,15 +96,12 @@ class creol_page(object):
pathlist = fstools.dirlist(settings.PAGES_ROOT, rekursive=False) pathlist = fstools.dirlist(settings.PAGES_ROOT, rekursive=False)
pathlist.sort() pathlist.sort()
for path in pathlist: for path in pathlist:
dirname = os.path.basename(path) contentname = self.__folder_content_filter__(os.path.basename(path))
contentname = self.__folder_content_filter__(dirname)
# #
my_dirname = self.__content_folder_filter__(self._rel_path) if contentname.startswith(self._rel_path) and contentname != self._rel_path:
#
if dirname.startswith(my_dirname) and dirname != my_dirname:
name = contentname[len(self._rel_path)+1:] name = contentname[len(self._rel_path)+1:]
if name.count('/') <= depth and name.startswith(startname): if name.count('/') <= depth and name.startswith(startname):
rv += f' <li><a href="{contentname}">{name}</a></li>\n' rv += f' <li><a href="{url_page(self._request, contentname)}">{name}</a></li>\n'
if len(rv) > 0: if len(rv) > 0:
rv = "<ul>\n" + rv + "</ul>\n" rv = "<ul>\n" + rv + "</ul>\n"
return rv return rv

View File

@ -15,7 +15,11 @@ import mycreole
from .page import creol_page from .page import creol_page
from themes import Context from themes import Context
logger = logging.getLogger(__name__) try:
from config import APP_NAME as ROOT_LOGGER_NAME
except ImportError:
ROOT_LOGGER_NAME = 'root'
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
# TODO: /!\ Deactivate self registration # TODO: /!\ Deactivate self registration
# TODO: /!\ Remove config and add config_example with data from mm_tmux /!\ # TODO: /!\ Remove config and add config_example with data from mm_tmux /!\
@ -28,9 +32,9 @@ def root(request):
def page(request, rel_path): def page(request, rel_path):
context = Context(request) # needs to be executed first because of time mesurement context = Context(request) # needs to be executed first because of time mesurement
# #
p = creol_page(rel_path) p = creol_page(request, rel_path)
if access.read_page(request, rel_path): if access.read_page(request, rel_path):
page_content = p.render_to_html(request) page_content = p.render_to_html()
else: else:
messages.permission_denied_msg_page(request, rel_path) messages.permission_denied_msg_page(request, rel_path)
page_content = "" page_content = ""
@ -50,7 +54,7 @@ def edit(request, rel_path):
if access.write_page(request, rel_path): if access.write_page(request, rel_path):
context = Context(request) # needs to be executed first because of time mesurement context = Context(request) # needs to be executed first because of time mesurement
# #
p = creol_page(rel_path) p = creol_page(request, rel_path)
# #
if not request.POST: if not request.POST:
form = EditForm(page_data=p.raw_page_src) form = EditForm(page_data=p.raw_page_src)

View File

@ -148,6 +148,43 @@ USE_I18N = True
USE_TZ = True USE_TZ = True
# Logging Configuration
#
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'short': {
'format': "%(name)25s - %(levelname)10s - %(message)s",
'datefmt': '[%d/%b/%Y %H:%M:%S]',
},
'long': {
'format': """~~~~(%(levelname)-10s)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File "%(pathname)s", line %(lineno)d, in %(funcName)s
%(asctime)s: %(name)s - %(message)s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'short',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
'propagate': False,
},
ROOT_LOGGER_NAME: {
'handlers': ['console'],
'level': 'DEBUG' if DEBUG else 'INFO',
'propagate': False,
},
},
}
# Static files (CSS, JavaScript, Images) # Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.1/howto/static-files/ # https://docs.djangoproject.com/en/5.1/howto/static-files/