## Bug description

strtobool is used in several places where it will cause deprecation warning in Pythin 3.10 and error in Python 3.12 since distutils will be removed in Python 3.12 .

Reference : https://www.python.org/dev/peps/pep-0632/

```
rg distutils                     
posthog/api/annotation.py
1:from distutils.util import strtobool

posthog/api/dashboard.py
2:from distutils.util import strtobool

posthog/api/insight.py
1:from distutils.util import strtobool

posthog/models/filters/mixins/common.py
4:from distutils.util import strtobool

posthog/settings.py
17:from distutils.util import strtobool
```

## Expected behavior

It's a good idea to vendor in the function as it's a short one.

## Environment

- [ ] PostHog Cloud
- [ ] self-hosted PostHog, version/commit: _please provide_


#### *Thank you* for your bug report – we love squashing them!

posthog/api/annotation.py
queryset = super().get_queryset()
        if self.action == "list":
            queryset = self._filter_request(self.request, queryset)
            order = self.request.GET.get("order", None)
            if order:
                queryset = queryset.order_by(order)
        return queryset
    def _filter_request(self, request: request.Request, queryset: QuerySet) -> QuerySet:
        filters = request.GET.dict()
        for key in filters:
            if key == "after":
                queryset = queryset.filter(created_at__gt=request.GET["after"])
            elif key == "before":
                queryset = queryset.filter(created_at__lt=request.GET["before"])
            elif key == "dashboardItemId":
                queryset = queryset.filter(dashboard_item_id=request.GET["dashboardItemId"])
            elif key == "scope":
                queryset = queryset.filter(scope=request.GET["scope"])
            elif key == "apply_all":
                queryset_method = (
                    queryset.exclude if bool(strtobool(str(request.GET["apply_all"]))) else queryset.filter
                )
                queryset = queryset_method(scope="dashboard_item")
            elif key == "deleted":
                queryset = queryset.filter(deleted=bool(strtobool(str(request.GET["deleted"]))))
        return queryset
@receiver(post_save, sender=Annotation, dispatch_uid="hook-annotation-created")
def annotation_created(sender, instance, created, raw, using, **kwargs):