Implement Paginated search using a mixin
This commit is contained in:
parent
3d263ca27c
commit
8636c513b7
@ -38,6 +38,15 @@ class QrSearchForm(forms.Form):
|
|||||||
|
|
||||||
qr_search = forms.CharField(label='qr_search', validators=[my_qr_validator])
|
qr_search = forms.CharField(label='qr_search', validators=[my_qr_validator])
|
||||||
|
|
||||||
|
class KeepSearchParamMixin(object):
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
search = self.request.GET.get('search', default=None)
|
||||||
|
if search:
|
||||||
|
context['additional_params'] = urlencode({'search': search})
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
class BaseTemplateMixin(object):
|
class BaseTemplateMixin(object):
|
||||||
navbar_selected = ''
|
navbar_selected = ''
|
||||||
base_title = ''
|
base_title = ''
|
||||||
@ -199,7 +208,7 @@ class ComponentTypeDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView)
|
|||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
class ComponentView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
class ComponentView(LoginRequiredMixin, KeepSearchParamMixin, BaseTemplateMixin, TemplateView):
|
||||||
template_name = 'parts/components.html'
|
template_name = 'parts/components.html'
|
||||||
base_title = 'Components'
|
base_title = 'Components'
|
||||||
navbar_selected = 'Components'
|
navbar_selected = 'Components'
|
||||||
@ -284,7 +293,6 @@ class ComponentView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
|||||||
context['components'] = comp_paginator.get_page(comp_page_num)
|
context['components'] = comp_paginator.get_page(comp_page_num)
|
||||||
context['comp_form'] = ComponentForm()
|
context['comp_form'] = ComponentForm()
|
||||||
context['search_string'] = search
|
context['search_string'] = search
|
||||||
context['additional_get_params'] = urlencode({'search': self.request.GET.get('search', default='')}) if search else None
|
|
||||||
|
|
||||||
if not parameter_formset:
|
if not parameter_formset:
|
||||||
context['advanced_search_param_formset'] = ParameterSearchFormSet()
|
context['advanced_search_param_formset'] = ParameterSearchFormSet()
|
||||||
@ -330,7 +338,7 @@ class ComponentView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
|||||||
else:
|
else:
|
||||||
return super().post(request, *args, **kwargs)
|
return super().post(request, *args, **kwargs)
|
||||||
|
|
||||||
class PackageView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
class PackageView(LoginRequiredMixin, KeepSearchParamMixin, BaseTemplateMixin, TemplateView):
|
||||||
template_name = 'parts/packages.html'
|
template_name = 'parts/packages.html'
|
||||||
base_title = 'Packages'
|
base_title = 'Packages'
|
||||||
navbar_selected = 'Packages'
|
navbar_selected = 'Packages'
|
||||||
@ -369,11 +377,6 @@ class PackageView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
|||||||
context['search_string'] = search_string
|
context['search_string'] = search_string
|
||||||
context['packages'] = paginator.get_page(page_num)
|
context['packages'] = paginator.get_page(page_num)
|
||||||
context['new_pkg_form'] = PackageForm()
|
context['new_pkg_form'] = PackageForm()
|
||||||
get_params_for_paginator = None
|
|
||||||
if search_string:
|
|
||||||
get_params_for_paginator = urlencode({'search': search_string})
|
|
||||||
|
|
||||||
context['additional_get_params'] = get_params_for_paginator
|
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
@ -397,7 +400,7 @@ class PackageView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
|||||||
return super().post(request, *args, **kwargs)
|
return super().post(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class DistributorView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
class DistributorView(LoginRequiredMixin, KeepSearchParamMixin, BaseTemplateMixin, TemplateView):
|
||||||
template_name = 'parts/distributors.html'
|
template_name = 'parts/distributors.html'
|
||||||
base_title = 'Distributors'
|
base_title = 'Distributors'
|
||||||
navbar_selected = 'Distributors'
|
navbar_selected = 'Distributors'
|
||||||
@ -511,7 +514,7 @@ class StockView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
|||||||
|
|
||||||
return super().post(request, **kwargs)
|
return super().post(request, **kwargs)
|
||||||
|
|
||||||
class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
class StockViewDetail(LoginRequiredMixin, KeepSearchParamMixin, BaseTemplateMixin, DetailView):
|
||||||
template_name = 'parts/stocks-detail.html'
|
template_name = 'parts/stocks-detail.html'
|
||||||
model = Storage
|
model = Storage
|
||||||
pk_url_kwarg = 'uuid'
|
pk_url_kwarg = 'uuid'
|
||||||
@ -573,8 +576,6 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
|||||||
context['add_storage_form'] = add_storage_form
|
context['add_storage_form'] = add_storage_form
|
||||||
context['delete_storage_error'] = None
|
context['delete_storage_error'] = None
|
||||||
context['add_stock_form'] = AddStockForm()
|
context['add_stock_form'] = AddStockForm()
|
||||||
if stock_search_input:
|
|
||||||
context['additional_params'] = urlencode({'search': stock_search_input})
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def handle_add_storage_post(self, request, **kwargs):
|
def handle_add_storage_post(self, request, **kwargs):
|
||||||
@ -914,7 +915,7 @@ class DistributorDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
|||||||
|
|
||||||
return super().post(request, *args, **kwargs)
|
return super().post(request, *args, **kwargs)
|
||||||
|
|
||||||
class ManufacturersViewSet(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
|
class ManufacturersViewSet(LoginRequiredMixin, KeepSearchParamMixin, BaseTemplateMixin, TemplateView):
|
||||||
template_name = 'parts/manufacturers.html'
|
template_name = 'parts/manufacturers.html'
|
||||||
base_title = 'Manufacturers'
|
base_title = 'Manufacturers'
|
||||||
navbar_selected = 'Manufacturers'
|
navbar_selected = 'Manufacturers'
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% include 'paginator.html' with paginator=comptypes get_param='page' aria_label='Component Type Page Navigation' additional_params=None %}
|
{% include 'paginator.html' with paginator=comptypes get_param='page' aria_label='Component Type Page Navigation' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% include 'paginator.html' with paginator=components get_param='comp_page' aria_label='Component Page Navigation' additional_params=additional_get_params %}
|
{% include 'paginator.html' with paginator=components get_param='comp_page' aria_label='Component Page Navigation' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
{% include 'paginator.html' with paginator=packages get_param='page' aria_label='Package Page Navigation' additional_params=additional_get_params %}
|
{% include 'paginator.html' with paginator=packages get_param='page' aria_label='Package Page Navigation' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group mb-3">
|
<div class="list-group mb-3">
|
||||||
{% for pkg in packages %}
|
{% for pkg in packages %}
|
||||||
@ -42,7 +42,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% include 'paginator.html' with paginator=packages get_param='page' aria_label='Package Page Navigation' additional_params=additional_get_params %}
|
{% include 'paginator.html' with paginator=packages get_param='page' aria_label='Package Page Navigation' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user