mirror of
https://git.cmoser.eu/tinytools/django-tinywiki.git
synced 2026-02-04 06:06:33 +01:00
2026.01.14 17:58:06 (cachyos.cmoser.eu)
This commit is contained in:
@@ -124,6 +124,7 @@ TEMPLATES = [
|
|||||||
'django.contrib.auth.context_processors.auth',
|
'django.contrib.auth.context_processors.auth',
|
||||||
'django.contrib.messages.context_processors.messages',
|
'django.contrib.messages.context_processors.messages',
|
||||||
'tinywiki.context_processors.sidebar',
|
'tinywiki.context_processors.sidebar',
|
||||||
|
'tinywiki.context_processors.base_template',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from .models import SidebarSection
|
from .models import SidebarSection
|
||||||
|
from . import settings
|
||||||
|
|
||||||
def sidebar(request: HttpRequest = None):
|
def sidebar(request: HttpRequest = None):
|
||||||
sections = [
|
sections = [
|
||||||
section.widget
|
section.widget
|
||||||
for section in SidebarSection.objects.filter(is_visible=True).order_by('-priority')
|
for section in SidebarSection.objects.filter(is_visible=True).order_by('-priority')
|
||||||
]
|
]
|
||||||
return {'tinywiki_sidebar': mark_safe("\n".join(sections))}
|
return {
|
||||||
|
'tinywiki_sidebar': mark_safe("\n".join(sections))
|
||||||
|
}
|
||||||
|
|
||||||
|
def base_template(request: HttpRequest = None):
|
||||||
|
return {'base_template': settings.TINYWIKI_BASE_TEMPLATE}
|
||||||
|
|||||||
@@ -4,67 +4,65 @@ from django.views.generic import FormView as DjangoFormView
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
class Base:
|
class Base:
|
||||||
base_template_name = settings.TINYWIKI_BASE_TEMPLATE
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_can_edit_pages(self)->bool:
|
def user_can_edit_pages(self)->bool:
|
||||||
if (self.request.user.is_staff
|
if (self.request.user.is_staff
|
||||||
or self.request.user.has_perm('page.tiynwiki-edit')
|
or self.request.user.has_perm('page.tiynwiki-edit')
|
||||||
or self.request.user.has_perm('page.tinywiki-edit-all')):
|
or self.request.user.has_perm('page.tinywiki-edit-all')):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_can_edit_all_pages(self)->bool:
|
def user_can_edit_all_pages(self)->bool:
|
||||||
if (self.request.user.is_staff
|
if (self.request.user.is_staff
|
||||||
or self.request.user.has_perm('page.tinywiki-edit-all')):
|
or self.request.user.has_perm('page.tinywiki-edit-all')):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_can_edit_system_pages(self)->bool:
|
def user_can_edit_system_pages(self)->bool:
|
||||||
if (self.request.user.is_staff
|
if (self.request.user.is_staff
|
||||||
or self.request.user.has_perm('page.tiynwiki-edit-system')):
|
or self.request.user.has_perm('page.tiynwiki-edit-system')):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_can_create_pages(self)->bool:
|
def user_can_create_pages(self)->bool:
|
||||||
if (self.request.user.is_staff
|
if (self.request.user.is_staff
|
||||||
or self.request.user.has_perm('page.tiynwiki-create')):
|
or self.request.user.has_perm('page.tiynwiki-create')):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_can_create_system_pages(self)->bool:
|
def user_can_create_system_pages(self)->bool:
|
||||||
if (self.request.user.is_staff
|
if (self.request.user.is_staff
|
||||||
or self.request.user.has_perm('page.tiynwiki-create-system')):
|
or self.request.user.has_perm('page.tiynwiki-create-system')):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def page_is_creatable(self,slug:str)->bool:
|
def page_is_creatable(self,slug:str)->bool:
|
||||||
if not slug:
|
if not slug:
|
||||||
return False
|
return False
|
||||||
if slug.startswith('tw-'):
|
if slug.startswith('tw-'):
|
||||||
return self.user_can_create_system_pages
|
return self.user_can_create_system_pages
|
||||||
return self.user_can_create_pages
|
return self.user_can_create_pages
|
||||||
|
|
||||||
def page_is_editable(self,page)->bool:
|
def page_is_editable(self,page)->bool:
|
||||||
if page.slug.startswith('tw-'):
|
if page.slug.startswith('tw-'):
|
||||||
return self.user_can_edit_system_pages
|
return self.user_can_edit_system_pages
|
||||||
elif (self.user_can_edit_all_pages
|
elif (self.user_can_edit_all_pages
|
||||||
or (self.request.user.pk == page.author.pk and self.user_can_edit_pages)):
|
or (self.request.user.pk == page.author.pk and self.user_can_edit_pages)):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_base_template_name(cls)->str:
|
def get_base_template_name(cls)->str:
|
||||||
return cls.base_template_name
|
return cls.base_template_name
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_template_name(cls)->str:
|
def get_template_name(cls)->str:
|
||||||
return cls.template_name
|
return cls.template_name
|
||||||
|
|
||||||
def get_tinywiki_context_data(self):
|
def get_tinywiki_context_data(self):
|
||||||
create_pages = False
|
create_pages = False
|
||||||
if self.request.user.is_authenticated:
|
if self.request.user.is_authenticated:
|
||||||
@@ -73,22 +71,20 @@ class Base:
|
|||||||
return {
|
return {
|
||||||
'brand_logo': settings.TINYWIKI_BRAND_LOGO,
|
'brand_logo': settings.TINYWIKI_BRAND_LOGO,
|
||||||
'brand_name': settings.TINYWIKI_BRAND_NAME,
|
'brand_name': settings.TINYWIKI_BRAND_NAME,
|
||||||
'base_template': self.get_base_template_name(),
|
|
||||||
'use_bootstrap': settings.USE_BOOTSTRAP,
|
'use_bootstrap': settings.USE_BOOTSTRAP,
|
||||||
'user_can_create_wiki_pages':create_pages
|
'user_can_create_wiki_pages':create_pages
|
||||||
}
|
}
|
||||||
|
|
||||||
class View(Base,DjangoView):
|
class View(Base,DjangoView):
|
||||||
template_name = "tinywiki"
|
template_name = "tinywiki"
|
||||||
|
|
||||||
def get_context_data(self,**kwargs):
|
def get_context_data(self,**kwargs):
|
||||||
context = self.get_tinywiki_context_data()
|
context = self.get_tinywiki_context_data()
|
||||||
context.update(kwargs)
|
context.update(kwargs)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
class FormView(Base,DjangoFormView):
|
class FormView(Base,DjangoFormView):
|
||||||
def get_context_data(self, **kwargs) -> dict[str, Any]:
|
def get_context_data(self, **kwargs) -> dict[str, Any]:
|
||||||
context = self.get_tinywiki_context_data()
|
context = self.get_tinywiki_context_data()
|
||||||
context.update(kwargs)
|
context.update(kwargs)
|
||||||
return super().get_context_data(**context)
|
return super().get_context_data(**context)
|
||||||
|
|
||||||
Reference in New Issue
Block a user