code: def action_remove(cls, request, category_list):
          if not category_list.editor.allow_remove:
              raise SitecatsSecurityException(
                  '`action_remove()` is not supported by parent `%s`category.' % category_list.alias)
          category_id = int(request.POST.get('category_id', 0))
          if not category_id:
              raise SitecatsSecurityException(
                  'Unsupported `category_id` value - `%s` - is passed to `action_remove()`.' % category_id)
          category = get_cache().get_category_by_id(category_id)
          if not category:
              raise SitecatsSecurityException('Unable to get `%s` category in `action_remove()`.' % category_id)
          cat_ident = category.alias or category.id
          if category.is_locked:
              raise SitecatsSecurityException('`action_remove()` is not supported by `%s` category.' % cat_ident)
          if category.parent_id != category_list.get_id():
              raise SitecatsSecurityException(
                  '`action_remove()` is unable to remove `%s`: '
                  'not a child of parent `%s` category.' % (cat_ident, category_list.alias)
              )
          min_num = category_list.editor.min_num
          def check_min_num(num):
              if min_num is not None and num-1 < min_num:
                  subcats_str = ungettext_lazy('subcategory', 'subcategories', min_num)
                  error_msg = _(
                      'Unable to remove "%(target_category)s" category from "%(parent_category)s": '
                      'parent category requires at least %(num)s %(subcats_str)s.'
                  ) % {
                      'target_category': category.title,
                      'parent_category': category_list.get_title(),
                      'num': min_num,
                      'subcats_str': subcats_str
                  }
                  raise SitecatsValidationError(error_msg)
          child_ids = get_cache().get_child_ids(category_list.alias)
          check_min_num(len(child_ids))
          if category_list.obj is None:
              category.delete()
          else:
              check_min_num(category_list.obj.get_ties_for_categories_qs(child_ids).count())
              category_list.obj.remove_from_category(category)
          return True