def view_and_edit_table_form_process_items(request): """ Request to process a selection of items from the view & edit table page. Args: request (Request): This should contain a POST request defining: - action: The action to apply - select_action: List of items to apply the action too. """ # Process the form if request.method == "POST": params = _get_view_and_edit_form_request_parameters(request.POST) if params["action"] == "batchupdate": selected = ItemTable.get_selected(params) _handle_batch_action(request, params["batchaction"], selected) elif params["action"] == "save": changes = ItemTable.get_row_select_values(params, "category") # TODO: Work out the item type. _add_items_categories( request, [(item, ITEM_TYPE_CATEGORY["question"], category) for item, category in changes] ) elif params["action"] != "none": messages.error(request, _("Unknown action")) # Find the tab to redirect to redirect_url = request.POST.get("next") if not redirect_url: redirect_url = reverse("tabbed-page", kwargs={"name": "main", "tab_name": "all"}) return HttpResponseRedirect(redirect_url)
def get_context_data(self, tab_instance, request, **kwargs): question_types = self._get_category_options(**kwargs) # Build the table table = ItemTable( self._get_items(**kwargs), categories=question_types, exclude=self._get_columns_to_exclude(**kwargs), orderable=True, order_by=request.GET.get("sort", None), ) table.paginate(per_page=kwargs.get("per_page", 25), page=request.GET.get("page", 1)) upload_form = self._build_upload_form(tab_instance, kwargs.get("source", None)) actions = self._build_actions_dropdown(question_types) # Ensure we have the assets we want require_assets("hid/js/automatic_file_upload.js") require_assets("hid/js/select_all_checkbox.js") # And return the context return { "add_button_for": self._get_item_type_filter(kwargs), "type_label": kwargs.get("label", "?"), "table": table, "upload_form": upload_form, "actions": actions, "has_categories": len(question_types) > 0, "next": reverse("tabbed-page", kwargs={"name": tab_instance.page.name, "tab_name": tab_instance.name}), }