Adaption to new libraries
This commit is contained in:
parent
114a82e176
commit
5f1420a0a9
96
context.py
96
context.py
@ -1,5 +1,8 @@
|
|||||||
|
from django.conf import settings
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from .help import actionbar as actionbar_add_help
|
from .help import actionbar as actionbar_add_help
|
||||||
|
import inspect
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
from themes import gray_icon_url, color_icon_url
|
from themes import gray_icon_url, color_icon_url
|
||||||
from users.context import menubar as menubar_user
|
from users.context import menubar as menubar_user
|
||||||
@ -7,6 +10,9 @@ from users.context import PROFILE_ENTRY_UID
|
|||||||
import pygal
|
import pygal
|
||||||
from pygal.models import get_item_by_rel_path
|
from pygal.models import get_item_by_rel_path
|
||||||
|
|
||||||
|
logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__name__)
|
||||||
|
|
||||||
|
|
||||||
MY_FAVOURITES_ENTRY_UID = 'my_favourites-main'
|
MY_FAVOURITES_ENTRY_UID = 'my_favourites-main'
|
||||||
HELP_UID = 'help-main'
|
HELP_UID = 'help-main'
|
||||||
NAVIGATION_ENTRY_UID = 'navigation-main-%s'
|
NAVIGATION_ENTRY_UID = 'navigation-main-%s'
|
||||||
@ -15,30 +21,57 @@ SEARCH_ENTRY_UID = 'search-main'
|
|||||||
BACK_ENTRY_UID = 'back-main'
|
BACK_ENTRY_UID = 'back-main'
|
||||||
|
|
||||||
|
|
||||||
def context_adaption(context, request, rel_path, wrapper_instance=None, title='', current_help_page=None):
|
def context_adaption(context, request, **kwargs):
|
||||||
context[context.MENUBAR].append_entry(HELP_UID, _('Help'), color_icon_url(request, 'help.png'), pygal.url_helpview(request, 'main'), True, False)
|
caller_name = inspect.currentframe().f_back.f_code.co_name
|
||||||
menubar_user(context[context.MENUBAR], request)
|
wrapper_instance = kwargs.get("wrapper_instance")
|
||||||
menubar(context[context.MENUBAR], request, rel_path)
|
#
|
||||||
navigationbar(context[context.NAVIGATIONBAR], request, rel_path)
|
menubar(context, request, **kwargs)
|
||||||
|
navigationbar(context, request, **kwargs)
|
||||||
if wrapper_instance is None:
|
if wrapper_instance is None:
|
||||||
# Pages without direct connection to an item (e.g. Helpview, ...)
|
# Pages without direct connection to an item (e.g. Helpview, ...)
|
||||||
context.set_additional_title(title)
|
context.set_additional_title(kwargs.get("title", ""))
|
||||||
context[context.ACTIONBAR].append_entry(
|
#
|
||||||
BACK_ENTRY_UID, # uid
|
actionbar(context, request, caller_name)
|
||||||
_('Back'), # name
|
|
||||||
color_icon_url(request, 'back.png'), # icon
|
|
||||||
'javascript:history.back()', # url
|
|
||||||
True, # left
|
|
||||||
False # active
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
wrapper_instance.context_adaption(context)
|
wrapper_instance.context_adaption(context)
|
||||||
# HELP
|
# HELP
|
||||||
if pygal.is_helpview(request):
|
if pygal.is_helpview(request):
|
||||||
actionbar_add_help(context, request, current_help_page=current_help_page)
|
actionbar_add_help(context, request, current_help_page=kwargs.get("current_help_page"))
|
||||||
|
for key in kwargs:
|
||||||
|
context[key] = kwargs[key]
|
||||||
|
logger.debug("context adapted: %s", repr(context))
|
||||||
|
|
||||||
|
def navigationbar(context, request, **kwargs):
|
||||||
|
bar = context[context.NAVIGATIONBAR]
|
||||||
|
rel_path = kwargs.get("rel_path", '')
|
||||||
|
#
|
||||||
|
if pygal.is_favouriteview(request):
|
||||||
|
if rel_path:
|
||||||
|
bar.append_entry(*navigation_entry_parameters(request, rel_path, None))
|
||||||
|
anchor = get_item_by_rel_path(rel_path).name
|
||||||
|
else:
|
||||||
|
anchor = None
|
||||||
|
elif pygal.is_searchview(request):
|
||||||
|
if rel_path:
|
||||||
|
bar.append_entry(*navigation_entry_parameters(request, rel_path, None))
|
||||||
|
anchor = get_item_by_rel_path(rel_path).name
|
||||||
|
else:
|
||||||
|
anchor = None
|
||||||
|
else:
|
||||||
|
anchor = None
|
||||||
|
while len(rel_path) > 0 and rel_path != os.path.sep:
|
||||||
|
bar.append_entry(*navigation_entry_parameters(request, rel_path, anchor))
|
||||||
|
anchor = get_item_by_rel_path(rel_path).name
|
||||||
|
rel_path = os.path.dirname(rel_path)
|
||||||
|
bar.append_entry(*home_entry_parameters(request, anchor))
|
||||||
|
|
||||||
|
|
||||||
def menubar(bar, request, rel_path):
|
def menubar(context, request, **kwargs):
|
||||||
|
bar = context[context.MENUBAR]
|
||||||
|
rel_path = kwargs.get("rel_path", '')
|
||||||
|
#
|
||||||
|
bar.append_entry(HELP_UID, _('Help'), color_icon_url(request, 'help.png'), pygal.url_helpview(request, 'main'), True, False)
|
||||||
|
menubar_user(bar, request)
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
bar.append_entry(*my_favourites_entry_parameters(request, rel_path))
|
bar.append_entry(*my_favourites_entry_parameters(request, rel_path))
|
||||||
try:
|
try:
|
||||||
@ -47,27 +80,16 @@ def menubar(bar, request, rel_path):
|
|||||||
pass # Profile entry does not exist, so exchange is not needed (e.g. no user is logged in)
|
pass # Profile entry does not exist, so exchange is not needed (e.g. no user is logged in)
|
||||||
|
|
||||||
|
|
||||||
def navigationbar(bar, request, path):
|
def actionbar(context, request, caller_name, **kwargs):
|
||||||
if pygal.is_favouriteview(request):
|
bar = context[context.ACTIONBAR]
|
||||||
if path:
|
bar.append_entry(
|
||||||
bar.append_entry(*navigation_entry_parameters(request, path, None))
|
BACK_ENTRY_UID, # uid
|
||||||
anchor = get_item_by_rel_path(path).name
|
_('Back'), # name
|
||||||
else:
|
color_icon_url(request, 'back.png'), # icon
|
||||||
anchor = None
|
'javascript:history.back()', # url
|
||||||
elif pygal.is_searchview(request):
|
True, # left
|
||||||
if path:
|
False # active
|
||||||
bar.append_entry(*navigation_entry_parameters(request, path, None))
|
)
|
||||||
anchor = get_item_by_rel_path(path).name
|
|
||||||
else:
|
|
||||||
anchor = None
|
|
||||||
else:
|
|
||||||
anchor = None
|
|
||||||
while len(path) > 0 and path != os.path.sep:
|
|
||||||
bar.append_entry(*navigation_entry_parameters(request, path, anchor))
|
|
||||||
anchor = get_item_by_rel_path(path).name
|
|
||||||
path = os.path.dirname(path)
|
|
||||||
bar.append_entry(*home_entry_parameters(request, anchor))
|
|
||||||
|
|
||||||
|
|
||||||
def profile_entry_parameters(request):
|
def profile_entry_parameters(request):
|
||||||
return (
|
return (
|
||||||
|
18
models.py
18
models.py
@ -1,4 +1,5 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import formats, timezone
|
from django.utils import formats, timezone
|
||||||
@ -11,6 +12,9 @@ import os
|
|||||||
import pygal
|
import pygal
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__name__)
|
||||||
|
|
||||||
|
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
|
|
||||||
@ -25,14 +29,6 @@ EXTENTIONS_AUDIO = ['.mp3', ]
|
|||||||
EXTENTIONS_VIDEO = ['.avi', '.mpg', '.mpeg', '.mpe', '.mov', '.qt', '.mp4', '.webm', '.ogv', '.flv', '.3gp', ]
|
EXTENTIONS_VIDEO = ['.avi', '.mpg', '.mpeg', '.mpe', '.mov', '.qt', '.mp4', '.webm', '.ogv', '.flv', '.3gp', ]
|
||||||
|
|
||||||
|
|
||||||
# Get a logger instance
|
|
||||||
try:
|
|
||||||
from config import APP_NAME as ROOT_LOGGER_NAME
|
|
||||||
except ImportError:
|
|
||||||
ROOT_LOGGER_NAME = 'root'
|
|
||||||
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def get_item_type(full_path):
|
def get_item_type(full_path):
|
||||||
if os.path.isdir(full_path):
|
if os.path.isdir(full_path):
|
||||||
return TYPE_FOLDER
|
return TYPE_FOLDER
|
||||||
@ -273,11 +269,11 @@ class Item(models.Model):
|
|||||||
return reverse('admin:%s_%s_change' % info, args=(self.pk,))
|
return reverse('admin:%s_%s_change' % info, args=(self.pk,))
|
||||||
|
|
||||||
def suspended(self, user):
|
def suspended(self, user):
|
||||||
if pygal.suspend_public() and not user.is_authenticated:
|
return pygal.suspend_public() and not user.is_authenticated
|
||||||
return True
|
|
||||||
|
|
||||||
def may_read(self, user):
|
def may_read(self, user):
|
||||||
if self.suspended(user):
|
if self.suspended(user):
|
||||||
|
logger.info("Permiision denied to '%s' due to suspended not authenticated user.", self.name)
|
||||||
return False
|
return False
|
||||||
elif self.type == TYPE_FOLDER:
|
elif self.type == TYPE_FOLDER:
|
||||||
return True
|
return True
|
||||||
@ -286,8 +282,10 @@ class Item(models.Model):
|
|||||||
if parent.public_access is True:
|
if parent.public_access is True:
|
||||||
return True
|
return True
|
||||||
if user is None:
|
if user is None:
|
||||||
|
logger.info("Permiision denied to %s due to user is None.", self.name)
|
||||||
return False
|
return False
|
||||||
if not user.is_authenticated:
|
if not user.is_authenticated:
|
||||||
|
logger.info("Permiision denied to %s due to user is not authenticated.", self.name)
|
||||||
return False
|
return False
|
||||||
if user.is_superuser:
|
if user.is_superuser:
|
||||||
return True
|
return True
|
||||||
|
@ -8,11 +8,7 @@ from whoosh.qparser.dateparse import DateParserPlugin
|
|||||||
from whoosh import index, qparser
|
from whoosh import index, qparser
|
||||||
from pygal.models import TYPE_FOLDER
|
from pygal.models import TYPE_FOLDER
|
||||||
|
|
||||||
try:
|
logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__name__)
|
||||||
from config import APP_NAME as ROOT_LOGGER_NAME
|
|
||||||
except ImportError:
|
|
||||||
ROOT_LOGGER_NAME = 'root'
|
|
||||||
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
SCHEMA = Schema(
|
SCHEMA = Schema(
|
||||||
|
11
signals.py
11
signals.py
@ -1,3 +1,4 @@
|
|||||||
|
from django.conf import settings
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.db.models.signals import post_delete
|
from django.db.models.signals import post_delete
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
@ -7,12 +8,8 @@ from .search import load_index, delete_item, update_item
|
|||||||
import shutil
|
import shutil
|
||||||
from .views.xnail import base_item
|
from .views.xnail import base_item
|
||||||
|
|
||||||
# Get a logger instance
|
logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__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__)
|
|
||||||
|
|
||||||
__pre_remove__ = None
|
__pre_remove__ = None
|
||||||
__pre_add__ = None
|
__pre_add__ = None
|
||||||
@ -21,7 +18,7 @@ __pre_add__ = None
|
|||||||
@receiver(post_delete, sender=Item)
|
@receiver(post_delete, sender=Item)
|
||||||
def item_delete(instance, **kwargs):
|
def item_delete(instance, **kwargs):
|
||||||
# delete cached xnails
|
# delete cached xnails
|
||||||
clogger.info('Deleting Xnails stored in "%s".', base_item.__cache_image_folder__(None, instance.rel_path))
|
logger.info('Deleting Xnails stored in "%s".', base_item.__cache_image_folder__(None, instance.rel_path))
|
||||||
shutil.rmtree(base_item.__cache_image_folder__(None, instance.rel_path), True)
|
shutil.rmtree(base_item.__cache_image_folder__(None, instance.rel_path), True)
|
||||||
# delete index entry
|
# delete index entry
|
||||||
ix = load_index()
|
ix = load_index()
|
||||||
|
@ -73,7 +73,11 @@ def pygal_responses(request, responsetype=pygal.RESP_TYPE_USERVIEW, datatype=pyg
|
|||||||
def pygal_search(request, rel_path):
|
def pygal_search(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
|
||||||
w = query_view(request, search_result_query(request))
|
w = query_view(request, search_result_query(request))
|
||||||
context_adaption(context, request, '', wrapper_instance=w)
|
context_adaption(
|
||||||
|
context,
|
||||||
|
request,
|
||||||
|
wrapper_instance=w
|
||||||
|
)
|
||||||
context.set_additional_title(w.name)
|
context.set_additional_title(w.name)
|
||||||
return w.render(context)
|
return w.render(context)
|
||||||
|
|
||||||
@ -128,17 +132,12 @@ def pygal_helpview(request, page='main'):
|
|||||||
context_adaption(
|
context_adaption(
|
||||||
context, # the base context
|
context, # the base context
|
||||||
request, # the request object to be used in context_adaption
|
request, # the request object to be used in context_adaption
|
||||||
rel_path='', # the current help_page to identify which taskbar entry has to be highlighted
|
|
||||||
title=_('Help'), # the title for the page (template)
|
title=_('Help'), # the title for the page (template)
|
||||||
current_help_page=page,
|
current_help_page=page,
|
||||||
)
|
)
|
||||||
context['help_content'] = help_content # the help content itself (template)
|
context['help_content'] = help_content # the help content itself (template)
|
||||||
return render(request, 'pygal/help.html', context=context)
|
return render(request, 'pygal/help.html', context=context)
|
||||||
|
|
||||||
context = Context(request) # needs to be executed first because of time mesurement
|
|
||||||
context_adaption(context, request, '', title=_('Help'))
|
|
||||||
return help_data(request, context)
|
|
||||||
|
|
||||||
|
|
||||||
def pygal_userview_infoview(request, responsetype, rel_path):
|
def pygal_userview_infoview(request, responsetype, 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
|
||||||
@ -149,9 +148,14 @@ def pygal_userview_infoview(request, responsetype, rel_path):
|
|||||||
else:
|
else:
|
||||||
w = get_userview_wrapper_instance(full_path, request)
|
w = get_userview_wrapper_instance(full_path, request)
|
||||||
except LookupError:
|
except LookupError:
|
||||||
context_adaption(context, request, '')
|
context_adaption(context, request)
|
||||||
return pygal_item_does_not_exist(request, context)
|
return pygal_item_does_not_exist(request, context)
|
||||||
context_adaption(context, request, rel_path, wrapper_instance=w)
|
context_adaption(
|
||||||
|
context,
|
||||||
|
request,
|
||||||
|
rel_path=rel_path,
|
||||||
|
wrapper_instance=w
|
||||||
|
)
|
||||||
#
|
#
|
||||||
if w.may_read():
|
if w.may_read():
|
||||||
context.set_additional_title(w.name)
|
context.set_additional_title(w.name)
|
||||||
@ -194,11 +198,16 @@ def pygal_profile(request):
|
|||||||
current_thumbnail_size = pygal.get_thumbnail_size(request)
|
current_thumbnail_size = pygal.get_thumbnail_size(request)
|
||||||
current_webnail_size = pygal.get_webnail_size(request)
|
current_webnail_size = pygal.get_webnail_size(request)
|
||||||
profile_pre_actions(request, context, UserProfileFormLanguageOnly)
|
profile_pre_actions(request, context, UserProfileFormLanguageOnly)
|
||||||
context_adaption(context, request, '', title=_('Profile for %(username)s') % {'username': request.user.username})
|
context_adaption(
|
||||||
context['THUMBNAIL_SIZES'] = settings.THUMBNAIL_SIZES
|
context,
|
||||||
context['thumbnail_size'] = current_thumbnail_size
|
request,
|
||||||
context['WEBNAIL_SIZES'] = settings.WEBNAIL_SIZES
|
title=_('Profile for %(username)s') % {'username': request.user.username},
|
||||||
context['webnail_size'] = current_webnail_size
|
#
|
||||||
|
THUMBNAIL_SIZES=settings.THUMBNAIL_SIZES,
|
||||||
|
thumbnail_size=current_thumbnail_size,
|
||||||
|
WEBNAIL_SIZES=settings.WEBNAIL_SIZES,
|
||||||
|
webnail_size=current_webnail_size
|
||||||
|
)
|
||||||
if request.POST:
|
if request.POST:
|
||||||
# store thumbnail size, if changed
|
# store thumbnail size, if changed
|
||||||
thumbnail_size = int(request.POST.get('thumbnail_size'))
|
thumbnail_size = int(request.POST.get('thumbnail_size'))
|
||||||
@ -241,7 +250,7 @@ def pygal_addtag(request, rel_path):
|
|||||||
context_adaption(
|
context_adaption(
|
||||||
context,
|
context,
|
||||||
request,
|
request,
|
||||||
rel_path,
|
rel_path=rel_path,
|
||||||
title=_('Add Tag for %s') % w.name
|
title=_('Add Tag for %s') % w.name
|
||||||
)
|
)
|
||||||
tag_context_adaption(context, w, request, get_item_type(full_path) in [TYPE_IMAGE])
|
tag_context_adaption(context, w, request, get_item_type(full_path) in [TYPE_IMAGE])
|
||||||
@ -273,7 +282,7 @@ def pygal_tagedit(request, tag_id):
|
|||||||
context_adaption(
|
context_adaption(
|
||||||
context,
|
context,
|
||||||
request,
|
request,
|
||||||
t.item.rel_path,
|
rel_path=t.item.rel_path,
|
||||||
title=_('Edit Tag %(tag_id)d for %(item_name)s') % {'tag_id': tag_id, 'item_name': w.name}
|
title=_('Edit Tag %(tag_id)d for %(item_name)s') % {'tag_id': tag_id, 'item_name': w.name}
|
||||||
)
|
)
|
||||||
tag_context_adaption(context, w, request, t.item.type in [TYPE_IMAGE])
|
tag_context_adaption(context, w, request, t.item.type in [TYPE_IMAGE])
|
||||||
|
@ -7,12 +7,7 @@ from ..models import get_item_type, TYPE_IMAGE, TYPE_VIDEO
|
|||||||
import os
|
import os
|
||||||
import pygal
|
import pygal
|
||||||
|
|
||||||
# Get a logger instance
|
logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__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__)
|
|
||||||
|
|
||||||
|
|
||||||
def get_image_class(full_path):
|
def get_image_class(full_path):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user