kopia lustrzana https://github.com/wagtail/wagtail
Refactor context setting to reduce duplication and remove unnecessary helper functions
rodzic
107d1a8aeb
commit
a96035a619
|
@ -24,16 +24,6 @@ permission_checker = PermissionPolicyChecker(permission_policy)
|
||||||
CHOOSER_PAGE_SIZE = getattr(settings, 'WAGTAILIMAGES_CHOOSER_PAGE_SIZE', 12)
|
CHOOSER_PAGE_SIZE = getattr(settings, 'WAGTAILIMAGES_CHOOSER_PAGE_SIZE', 12)
|
||||||
|
|
||||||
|
|
||||||
def get_chooser_js_data():
|
|
||||||
"""construct context variables needed by the chooser JS"""
|
|
||||||
return {
|
|
||||||
'step': 'chooser',
|
|
||||||
'error_label': _("Server Error"),
|
|
||||||
'error_message': _("Report this error to your webmaster with the following information:"),
|
|
||||||
'tag_autocomplete_url': reverse('wagtailadmin_tag_autocomplete'),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def get_image_result_data(image):
|
def get_image_result_data(image):
|
||||||
"""
|
"""
|
||||||
helper function: given an image, return the json data to pass back to the
|
helper function: given an image, return the json data to pass back to the
|
||||||
|
@ -53,34 +43,9 @@ def get_image_result_data(image):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_chooser_context(request):
|
|
||||||
"""Helper function to return common template context variables for the main chooser view"""
|
|
||||||
|
|
||||||
collections = permission_policy.collections_user_has_permission_for(
|
|
||||||
request.user, 'choose'
|
|
||||||
)
|
|
||||||
if len(collections) < 2:
|
|
||||||
collections = None
|
|
||||||
|
|
||||||
return {
|
|
||||||
'searchform': SearchForm(),
|
|
||||||
'is_searching': False,
|
|
||||||
'query_string': None,
|
|
||||||
'will_select_format': request.GET.get('select_format'),
|
|
||||||
'popular_tags': popular_tags_for_model(get_image_model()),
|
|
||||||
'collections': collections,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class BaseChooseView(View):
|
class BaseChooseView(View):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
Image = get_image_model()
|
self.image_model = get_image_model()
|
||||||
|
|
||||||
if permission_policy.user_has_permission(request.user, 'add'):
|
|
||||||
ImageForm = get_image_form(Image)
|
|
||||||
self.uploadform = ImageForm(user=request.user, prefix='image-chooser-upload')
|
|
||||||
else:
|
|
||||||
self.uploadform = None
|
|
||||||
|
|
||||||
images = permission_policy.instances_user_has_any_permission_for(
|
images = permission_policy.instances_user_has_any_permission_for(
|
||||||
request.user, ['choose']
|
request.user, ['choose']
|
||||||
|
@ -94,16 +59,19 @@ class BaseChooseView(View):
|
||||||
if collection_id:
|
if collection_id:
|
||||||
images = images.filter(collection=collection_id)
|
images = images.filter(collection=collection_id)
|
||||||
|
|
||||||
searchform = SearchForm(request.GET)
|
self.is_searching = False
|
||||||
if searchform.is_valid():
|
self.q = None
|
||||||
self.q = searchform.cleaned_data['q']
|
|
||||||
|
|
||||||
images = images.search(self.q)
|
if 'q' in request.GET:
|
||||||
self.is_searching = True
|
self.search_form = SearchForm(request.GET)
|
||||||
|
if self.search_form.is_valid():
|
||||||
|
self.q = self.search_form.cleaned_data['q']
|
||||||
|
self.is_searching = True
|
||||||
|
images = images.search(self.q)
|
||||||
else:
|
else:
|
||||||
self.is_searching = False
|
self.search_form = SearchForm()
|
||||||
self.q = None
|
|
||||||
|
|
||||||
|
if not self.is_searching:
|
||||||
tag_name = request.GET.get('tag')
|
tag_name = request.GET.get('tag')
|
||||||
if tag_name:
|
if tag_name:
|
||||||
images = images.filter(tags__name=tag_name)
|
images = images.filter(tags__name=tag_name)
|
||||||
|
@ -113,33 +81,57 @@ class BaseChooseView(View):
|
||||||
self.images = paginator.get_page(request.GET.get('p'))
|
self.images = paginator.get_page(request.GET.get('p'))
|
||||||
return self.render_to_response()
|
return self.render_to_response()
|
||||||
|
|
||||||
|
def get_context_data(self):
|
||||||
|
return {
|
||||||
|
'images': self.images,
|
||||||
|
'is_searching': self.is_searching,
|
||||||
|
'query_string': self.q,
|
||||||
|
'will_select_format': self.request.GET.get('select_format')
|
||||||
|
}
|
||||||
|
|
||||||
def render_to_response(self):
|
def render_to_response(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
class ChooseView(BaseChooseView):
|
class ChooseView(BaseChooseView):
|
||||||
def render_to_response(self):
|
def get_context_data(self):
|
||||||
context = get_chooser_context(self.request)
|
context = super().get_context_data()
|
||||||
|
|
||||||
|
if permission_policy.user_has_permission(self.request.user, 'add'):
|
||||||
|
ImageForm = get_image_form(self.image_model)
|
||||||
|
uploadform = ImageForm(user=self.request.user, prefix='image-chooser-upload')
|
||||||
|
else:
|
||||||
|
uploadform = None
|
||||||
|
|
||||||
|
collections = permission_policy.collections_user_has_permission_for(
|
||||||
|
self.request.user, 'choose'
|
||||||
|
)
|
||||||
|
if len(collections) < 2:
|
||||||
|
collections = None
|
||||||
|
|
||||||
context.update({
|
context.update({
|
||||||
'images': self.images,
|
'searchform': self.search_form,
|
||||||
'is_searching': self.is_searching,
|
'popular_tags': popular_tags_for_model(self.image_model),
|
||||||
'query_string': self.q,
|
'collections': collections,
|
||||||
'uploadform': self.uploadform,
|
'uploadform': uploadform,
|
||||||
})
|
})
|
||||||
|
return context
|
||||||
|
|
||||||
|
def render_to_response(self):
|
||||||
return render_modal_workflow(
|
return render_modal_workflow(
|
||||||
self.request, 'wagtailimages/chooser/chooser.html', None, context,
|
self.request, 'wagtailimages/chooser/chooser.html', None, self.get_context_data(),
|
||||||
json_data=get_chooser_js_data()
|
json_data={
|
||||||
|
'step': 'chooser',
|
||||||
|
'error_label': _("Server Error"),
|
||||||
|
'error_message': _("Report this error to your webmaster with the following information:"),
|
||||||
|
'tag_autocomplete_url': reverse('wagtailadmin_tag_autocomplete'),
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ChooseResultsView(BaseChooseView):
|
class ChooseResultsView(BaseChooseView):
|
||||||
def render_to_response(self):
|
def render_to_response(self):
|
||||||
return TemplateResponse(self.request, "wagtailimages/chooser/results.html", {
|
return TemplateResponse(self.request, "wagtailimages/chooser/results.html", self.get_context_data())
|
||||||
'images': self.images,
|
|
||||||
'is_searching': self.is_searching,
|
|
||||||
'query_string': self.q,
|
|
||||||
'will_select_format': self.request.GET.get('select_format')
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
def image_chosen(request, image_id):
|
def image_chosen(request, image_id):
|
||||||
|
|
Ładowanie…
Reference in New Issue