Compare commits
4 Commits
5b5d205476
...
7287643d98
Author | SHA1 | Date | |
---|---|---|---|
7287643d98 | |||
8b1612c840 | |||
3f6afc9996 | |||
55f12b2202 |
@ -9,6 +9,7 @@ SHUFFLE_ENABLE = 2
|
|||||||
|
|
||||||
REPEAT_DISABLE = 0
|
REPEAT_DISABLE = 0
|
||||||
REPEAT_ENABLE = 1
|
REPEAT_ENABLE = 1
|
||||||
|
REPEAT_KEEP = 2
|
||||||
|
|
||||||
SEARCH_DISABLE = 0
|
SEARCH_DISABLE = 0
|
||||||
SEARCH_KEEP = 1
|
SEARCH_KEEP = 1
|
||||||
@ -72,6 +73,8 @@ def url_args(request, repeat=REPEAT_DISABLE, shuffle=SHUFFLE_KEEP, search=SEARCH
|
|||||||
args_d = {}
|
args_d = {}
|
||||||
if repeat == REPEAT_ENABLE:
|
if repeat == REPEAT_ENABLE:
|
||||||
args_d['repeat'] = None
|
args_d['repeat'] = None
|
||||||
|
elif repeat == REPEAT_KEEP and is_repeatview(request):
|
||||||
|
args_d['repeat'] = None
|
||||||
if shuffle == SHUFFLE_ENABLE:
|
if shuffle == SHUFFLE_ENABLE:
|
||||||
args_d['shuffle'] = binascii.hexlify(os.urandom(24)).decode('utf-8')
|
args_d['shuffle'] = binascii.hexlify(os.urandom(24)).decode('utf-8')
|
||||||
elif shuffle == SHUFFLE_KEEP:
|
elif shuffle == SHUFFLE_KEEP:
|
||||||
|
@ -23,7 +23,7 @@ from users.views import profile_pre_actions, profile_post_actions
|
|||||||
from users.forms import UserProfileFormLanguageOnly
|
from users.forms import UserProfileFormLanguageOnly
|
||||||
from .userviews import get_wrapper_instance as get_userview_wrapper_instance
|
from .userviews import get_wrapper_instance as get_userview_wrapper_instance
|
||||||
import zipfile
|
import zipfile
|
||||||
from pygal.views.userviews import query_view
|
from pygal.views.userviews import query_view, ItemDoesNotEsistWithinParent
|
||||||
|
|
||||||
|
|
||||||
def pygal_item_does_not_exist(request, context):
|
def pygal_item_does_not_exist(request, context):
|
||||||
@ -155,7 +155,10 @@ def pygal_userview_infoview(request, responsetype, rel_path):
|
|||||||
#
|
#
|
||||||
if w.may_read():
|
if w.may_read():
|
||||||
context.set_additional_title(w.name)
|
context.set_additional_title(w.name)
|
||||||
return w.render(context)
|
try:
|
||||||
|
return w.render(context)
|
||||||
|
except ItemDoesNotEsistWithinParent:
|
||||||
|
return redirect('?'.join([request.META['PATH_INFO'].replace(rel_path, ''), request.META['QUERY_STRING']]))
|
||||||
else:
|
else:
|
||||||
return pygal_access_denied(request, context)
|
return pygal_access_denied(request, context)
|
||||||
|
|
||||||
@ -244,13 +247,13 @@ def pygal_addtag(request, rel_path):
|
|||||||
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])
|
||||||
if request.POST:
|
if request.POST:
|
||||||
tag = Tag(item=w.item)
|
tag = Tag(item=w.item)
|
||||||
form = TagForm(request.POST, instance=tag, factor_to_original=context['factor_to_original'])
|
form = TagForm(request.POST, instance=tag, factor_to_original=context.get('factor_to_original'))
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
messages.info(request, _('Thanks for adding a Tag to %s') % w.name)
|
messages.info(request, _('Thanks for adding a Tag to %s') % w.name)
|
||||||
return redirect(get_next(request))
|
return redirect(get_next(request))
|
||||||
else:
|
else:
|
||||||
form = TagForm(factor_to_original=context['factor_to_original'])
|
form = TagForm(factor_to_original=context.get('factor_to_original'))
|
||||||
context['form'] = form
|
context['form'] = form
|
||||||
return render(request, 'pygal/tagedit.html', context=context)
|
return render(request, 'pygal/tagedit.html', context=context)
|
||||||
|
|
||||||
@ -277,7 +280,7 @@ def pygal_tagedit(request, tag_id):
|
|||||||
context['enable_delete_button'] = True
|
context['enable_delete_button'] = True
|
||||||
if request.POST:
|
if request.POST:
|
||||||
if request.POST.get('save'):
|
if request.POST.get('save'):
|
||||||
form = TagForm(request.POST, instance=t, factor_to_original=context['factor_to_original'])
|
form = TagForm(request.POST, instance=t, factor_to_original=context.get('factor_to_original'))
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
messages.info(request, _('Thanks for editing Tag %(tag_id)d to %(item_name)s') % {'tag_id': tag_id, 'item_name': w.name})
|
messages.info(request, _('Thanks for editing Tag %(tag_id)d to %(item_name)s') % {'tag_id': tag_id, 'item_name': w.name})
|
||||||
@ -287,7 +290,7 @@ def pygal_tagedit(request, tag_id):
|
|||||||
messages.info(request, _('Tag %(tag_id)d of %(item_name)s has been deleted.') % {'tag_id': tag_id, 'item_name': w.name})
|
messages.info(request, _('Tag %(tag_id)d of %(item_name)s has been deleted.') % {'tag_id': tag_id, 'item_name': w.name})
|
||||||
return redirect(get_next(request))
|
return redirect(get_next(request))
|
||||||
else:
|
else:
|
||||||
form = TagForm(instance=t, factor_to_original=context['factor_to_original'])
|
form = TagForm(instance=t, factor_to_original=context.get('factor_to_original'))
|
||||||
context['form'] = form
|
context['form'] = form
|
||||||
return render(request, 'pygal/tagedit.html', context=context)
|
return render(request, 'pygal/tagedit.html', context=context)
|
||||||
|
|
||||||
|
@ -20,6 +20,10 @@ REPEAT_ENTRY = 'repeat-main'
|
|||||||
SHUFFLE_ENTRY = 'shuffle-main'
|
SHUFFLE_ENTRY = 'shuffle-main'
|
||||||
|
|
||||||
|
|
||||||
|
class ItemDoesNotEsistWithinParent(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def get_wrapper_class(full_path):
|
def get_wrapper_class(full_path):
|
||||||
return {
|
return {
|
||||||
TYPE_FOLDER: folder_view,
|
TYPE_FOLDER: folder_view,
|
||||||
@ -30,8 +34,8 @@ def get_wrapper_class(full_path):
|
|||||||
}.get(get_item_type(full_path), base_view)
|
}.get(get_item_type(full_path), base_view)
|
||||||
|
|
||||||
|
|
||||||
def get_wrapper_instance(full_path, request):
|
def get_wrapper_instance(full_path, request, is_nxt_prv_item=False):
|
||||||
return get_wrapper_class(full_path)(request, full_path)
|
return get_wrapper_class(full_path)(request, full_path, is_nxt_prv_item)
|
||||||
|
|
||||||
|
|
||||||
def random_copy(request, lst):
|
def random_copy(request, lst):
|
||||||
@ -46,9 +50,10 @@ def random_copy(request, lst):
|
|||||||
|
|
||||||
|
|
||||||
class base_view(object):
|
class base_view(object):
|
||||||
def __init__(self, request, full_path):
|
def __init__(self, request, full_path, is_nxt_prv_item):
|
||||||
self.request = request
|
self.request = request
|
||||||
self.full_path = full_path
|
self.full_path = full_path
|
||||||
|
self.is_nxt_prv_item = is_nxt_prv_item
|
||||||
#
|
#
|
||||||
self.item = get_item_by_rel_path(pygal.get_rel_path(full_path))
|
self.item = get_item_by_rel_path(pygal.get_rel_path(full_path))
|
||||||
if self.item is None:
|
if self.item is None:
|
||||||
@ -198,7 +203,12 @@ class base_view(object):
|
|||||||
for t in self.item.tag_set.all():
|
for t in self.item.tag_set.all():
|
||||||
i += 1
|
i += 1
|
||||||
edit_url = pygal.url_tagedit(self.request, t.id) if self.may_modify() else None
|
edit_url = pygal.url_tagedit(self.request, t.id) if self.may_modify() else None
|
||||||
|
search_query = 'tag:%s' % t.text
|
||||||
|
search_url = pygal.url_userview(self.request, '', search=search_query)
|
||||||
b.append_entry('tag-%d' % i, t.text, themes.color_icon_url(self.request, '%d.png' % (i % 10)), edit_url, True, False)
|
b.append_entry('tag-%d' % i, t.text, themes.color_icon_url(self.request, '%d.png' % (i % 10)), edit_url, True, False)
|
||||||
|
if pygal.get_search_query(self.request) != search_query:
|
||||||
|
b.append_entry_to_entry('tag-%d' % i, 'tagedit-%d' % i, _('Edit'), themes.gray_icon_url(self.request, 'edit2.png'), edit_url, True, False)
|
||||||
|
b.append_entry_to_entry('tag-%d' % i, 'tagsearch-%d' % i, _('Search'), themes.gray_icon_url(self.request, 'search.png'), search_url, True, False)
|
||||||
return b
|
return b
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -227,7 +237,10 @@ class base_view(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def url_userview(self):
|
def url_userview(self):
|
||||||
return pygal.url_userview(self.request, self.item.rel_path, search=pygal.SEARCH_KEEP)
|
if self.is_nxt_prv_item:
|
||||||
|
return pygal.url_userview(self.request, self.item.rel_path, search=pygal.SEARCH_KEEP, repeat=pygal.REPEAT_KEEP)
|
||||||
|
else:
|
||||||
|
return pygal.url_userview(self.request, self.item.rel_path, search=pygal.SEARCH_KEEP, repeat=pygal.REPEAT_DISABLE)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def url_webnail(self):
|
def url_webnail(self):
|
||||||
@ -251,12 +264,15 @@ class base_view(object):
|
|||||||
if direction not in [-1, 1]:
|
if direction not in [-1, 1]:
|
||||||
raise ValueError("Parameter direction is incorrect: %s" % repr(direction))
|
raise ValueError("Parameter direction is incorrect: %s" % repr(direction))
|
||||||
fp_il = random_copy(self.request, self.__parent__().sorted_fullpathlist())
|
fp_il = random_copy(self.request, self.__parent__().sorted_fullpathlist())
|
||||||
i = fp_il.index(self.full_path)
|
try:
|
||||||
|
i = fp_il.index(self.full_path)
|
||||||
|
except ValueError as e:
|
||||||
|
raise ItemDoesNotEsistWithinParent(e)
|
||||||
lgt = len(fp_il)
|
lgt = len(fp_il)
|
||||||
for i in range(i + direction, i + direction * lgt, direction):
|
for i in range(i + direction, i + direction * lgt, direction):
|
||||||
full_path = fp_il[i % lgt]
|
full_path = fp_il[i % lgt]
|
||||||
if get_item_type(full_path) != TYPE_FOLDER:
|
if get_item_type(full_path) != TYPE_FOLDER:
|
||||||
return get_wrapper_instance(full_path, self.request)
|
return get_wrapper_instance(full_path, self.request, is_nxt_prv_item=True)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
Loading…
x
Reference in New Issue
Block a user