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)
|
||||
|
||||
|
||||
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):
|
||||
"""
|
||||
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):
|
||||
def get(self, request):
|
||||
Image = 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
|
||||
self.image_model = get_image_model()
|
||||
|
||||
images = permission_policy.instances_user_has_any_permission_for(
|
||||
request.user, ['choose']
|
||||
|
@ -94,16 +59,19 @@ class BaseChooseView(View):
|
|||
if collection_id:
|
||||
images = images.filter(collection=collection_id)
|
||||
|
||||
searchform = SearchForm(request.GET)
|
||||
if searchform.is_valid():
|
||||
self.q = searchform.cleaned_data['q']
|
||||
self.is_searching = False
|
||||
self.q = None
|
||||
|
||||
images = images.search(self.q)
|
||||
self.is_searching = True
|
||||
if 'q' in request.GET:
|
||||
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:
|
||||
self.is_searching = False
|
||||
self.q = None
|
||||
self.search_form = SearchForm()
|
||||
|
||||
if not self.is_searching:
|
||||
tag_name = request.GET.get('tag')
|
||||
if 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'))
|
||||
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):
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
class ChooseView(BaseChooseView):
|
||||
def render_to_response(self):
|
||||
context = get_chooser_context(self.request)
|
||||
def get_context_data(self):
|
||||
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({
|
||||
'images': self.images,
|
||||
'is_searching': self.is_searching,
|
||||
'query_string': self.q,
|
||||
'uploadform': self.uploadform,
|
||||
'searchform': self.search_form,
|
||||
'popular_tags': popular_tags_for_model(self.image_model),
|
||||
'collections': collections,
|
||||
'uploadform': uploadform,
|
||||
})
|
||||
return context
|
||||
|
||||
def render_to_response(self):
|
||||
return render_modal_workflow(
|
||||
self.request, 'wagtailimages/chooser/chooser.html', None, context,
|
||||
json_data=get_chooser_js_data()
|
||||
self.request, 'wagtailimages/chooser/chooser.html', None, self.get_context_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):
|
||||
def render_to_response(self):
|
||||
return TemplateResponse(self.request, "wagtailimages/chooser/results.html", {
|
||||
'images': self.images,
|
||||
'is_searching': self.is_searching,
|
||||
'query_string': self.q,
|
||||
'will_select_format': self.request.GET.get('select_format')
|
||||
})
|
||||
return TemplateResponse(self.request, "wagtailimages/chooser/results.html", self.get_context_data())
|
||||
|
||||
|
||||
def image_chosen(request, image_id):
|
||||
|
|
Ładowanie…
Reference in New Issue