summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-drf-aggregates.spec342
-rw-r--r--sources1
3 files changed, 344 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..cb58742 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/drf-aggregates-0.0.13.tar.gz
diff --git a/python-drf-aggregates.spec b/python-drf-aggregates.spec
new file mode 100644
index 0000000..6e6aed7
--- /dev/null
+++ b/python-drf-aggregates.spec
@@ -0,0 +1,342 @@
+%global _empty_manifest_terminate_build 0
+Name: python-drf-aggregates
+Version: 0.0.13
+Release: 1
+Summary: A Python package that exposes the Django model queryset aggregate functions to the DRF API.
+License: BSD
+URL: https://github.com/uptick/django-rest-framework-aggregates
+Source0: https://mirrors.aliyun.com/pypi/web/packages/cd/56/05b2fac5fe4d24b579bc97624eac7486eaf3c269924ec196a74287b16358/drf-aggregates-0.0.13.tar.gz
+BuildArch: noarch
+
+
+%description
+# django-rest-framework-aggregates
+[![PyPI version](https://badge.fury.io/py/drf-aggregates.svg)](https://badge.fury.io/py/drf-aggregates) [![Build Status](https://travis-ci.org/uptick/django-rest-framework-aggregates.svg?branch=master)](https://travis-ci.org/uptick/django-rest-framework-aggregates)
+
+Exposes aggregation features of the Django model queryset to the DRF API.
+
+## Requirements
+
+ - Python 3.6+
+ - Django 1.11+
+ - Django Rest Framework 3.5.3+
+
+## Overview
+
+This renderer overwrites default behaviour for calls made to api v2 .agg endpoints.
+
+Supports `GET` calls to list endpoints in the format:
+
+ endpoint.agg/?aggregate[Count]=(field to count)
+ endpoint.agg/?aggregate[Sum]=(field to sum)
+ endpoint.agg/?aggregate[custom_function]=arguments
+ endpoint.agg/?group_by[field to group by]&aggregate[Count]=id
+ endpoint.agg/?group_by[field to group by]&aggregate[Count]=id&aggregate[Sum]=(field to sum)
+
+Supports date part extraction for aggregation:
+
+ endpoint.agg/?group_by[created__year]&aggregate[Count]=id
+
+Supports choices to representation extract:
+
+ endpoint.agg/?group_by[choiceField]&aggregate[Count]=id
+
+Support aggregating over multiple fields, either of
+```
+endpoint.agg/?aggregate[Sum]=id&aggregate[Sum]=number
+endpoint.agg/?aggregate[Sum]=id,number
+```
+## Custom Aggregations
+
+The default aggregate functions supported are defined in `django.db.models.aggregates`.
+
+Custom aggregate functions have been defined in `drf_aggregates.aggregates`
+
+User defined aggregation are passed to a custom queryset manager `calculate_aggregates` as kwargs if defined.
+
+Custom aggregate functions set on the queryset should return a dictionary of field names to aggregate functions, which will then be processed with the other aggregates.
+
+## Examples
+
+Example setup can be found in the [example/](/example/) folder.
+
+To enable the renderer, update your Django settings file:
+
+ ```python
+ REST_FRAMEWORK = {
+ 'DEFAULT_RENDERER_CLASSES': (
+ 'drf_aggregates.renderers.AggregateRenderer',
+ ...
+ ),
+ ...
+ }
+ ```
+
+In the [Cars ViewSet](/example/api/views.py) we are outputting the result to json:
+
+ ```python
+
+ def list(self, request, *args, **kwargs):
+ queryset = self.filter_queryset(self.get_queryset())
+ data = request.accepted_renderer.render({'queryset': queryset, 'request': request})
+ return Response(data, content_type=f'application/json')
+ ```
+
+
+## Tests
+
+In order to run tests locally:
+
+1. Install development requirements:
+
+ `pip3 install -r requirements-dev.txt`
+
+2. Update your environment to point to test Django settings file:
+
+ `export DJANGO_SETTINGS_MODULE=example.settings.test`
+
+3. Run tests:
+
+ `py.test`
+
+
+
+
+%package -n python3-drf-aggregates
+Summary: A Python package that exposes the Django model queryset aggregate functions to the DRF API.
+Provides: python-drf-aggregates
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-drf-aggregates
+# django-rest-framework-aggregates
+[![PyPI version](https://badge.fury.io/py/drf-aggregates.svg)](https://badge.fury.io/py/drf-aggregates) [![Build Status](https://travis-ci.org/uptick/django-rest-framework-aggregates.svg?branch=master)](https://travis-ci.org/uptick/django-rest-framework-aggregates)
+
+Exposes aggregation features of the Django model queryset to the DRF API.
+
+## Requirements
+
+ - Python 3.6+
+ - Django 1.11+
+ - Django Rest Framework 3.5.3+
+
+## Overview
+
+This renderer overwrites default behaviour for calls made to api v2 .agg endpoints.
+
+Supports `GET` calls to list endpoints in the format:
+
+ endpoint.agg/?aggregate[Count]=(field to count)
+ endpoint.agg/?aggregate[Sum]=(field to sum)
+ endpoint.agg/?aggregate[custom_function]=arguments
+ endpoint.agg/?group_by[field to group by]&aggregate[Count]=id
+ endpoint.agg/?group_by[field to group by]&aggregate[Count]=id&aggregate[Sum]=(field to sum)
+
+Supports date part extraction for aggregation:
+
+ endpoint.agg/?group_by[created__year]&aggregate[Count]=id
+
+Supports choices to representation extract:
+
+ endpoint.agg/?group_by[choiceField]&aggregate[Count]=id
+
+Support aggregating over multiple fields, either of
+```
+endpoint.agg/?aggregate[Sum]=id&aggregate[Sum]=number
+endpoint.agg/?aggregate[Sum]=id,number
+```
+## Custom Aggregations
+
+The default aggregate functions supported are defined in `django.db.models.aggregates`.
+
+Custom aggregate functions have been defined in `drf_aggregates.aggregates`
+
+User defined aggregation are passed to a custom queryset manager `calculate_aggregates` as kwargs if defined.
+
+Custom aggregate functions set on the queryset should return a dictionary of field names to aggregate functions, which will then be processed with the other aggregates.
+
+## Examples
+
+Example setup can be found in the [example/](/example/) folder.
+
+To enable the renderer, update your Django settings file:
+
+ ```python
+ REST_FRAMEWORK = {
+ 'DEFAULT_RENDERER_CLASSES': (
+ 'drf_aggregates.renderers.AggregateRenderer',
+ ...
+ ),
+ ...
+ }
+ ```
+
+In the [Cars ViewSet](/example/api/views.py) we are outputting the result to json:
+
+ ```python
+
+ def list(self, request, *args, **kwargs):
+ queryset = self.filter_queryset(self.get_queryset())
+ data = request.accepted_renderer.render({'queryset': queryset, 'request': request})
+ return Response(data, content_type=f'application/json')
+ ```
+
+
+## Tests
+
+In order to run tests locally:
+
+1. Install development requirements:
+
+ `pip3 install -r requirements-dev.txt`
+
+2. Update your environment to point to test Django settings file:
+
+ `export DJANGO_SETTINGS_MODULE=example.settings.test`
+
+3. Run tests:
+
+ `py.test`
+
+
+
+
+%package help
+Summary: Development documents and examples for drf-aggregates
+Provides: python3-drf-aggregates-doc
+%description help
+# django-rest-framework-aggregates
+[![PyPI version](https://badge.fury.io/py/drf-aggregates.svg)](https://badge.fury.io/py/drf-aggregates) [![Build Status](https://travis-ci.org/uptick/django-rest-framework-aggregates.svg?branch=master)](https://travis-ci.org/uptick/django-rest-framework-aggregates)
+
+Exposes aggregation features of the Django model queryset to the DRF API.
+
+## Requirements
+
+ - Python 3.6+
+ - Django 1.11+
+ - Django Rest Framework 3.5.3+
+
+## Overview
+
+This renderer overwrites default behaviour for calls made to api v2 .agg endpoints.
+
+Supports `GET` calls to list endpoints in the format:
+
+ endpoint.agg/?aggregate[Count]=(field to count)
+ endpoint.agg/?aggregate[Sum]=(field to sum)
+ endpoint.agg/?aggregate[custom_function]=arguments
+ endpoint.agg/?group_by[field to group by]&aggregate[Count]=id
+ endpoint.agg/?group_by[field to group by]&aggregate[Count]=id&aggregate[Sum]=(field to sum)
+
+Supports date part extraction for aggregation:
+
+ endpoint.agg/?group_by[created__year]&aggregate[Count]=id
+
+Supports choices to representation extract:
+
+ endpoint.agg/?group_by[choiceField]&aggregate[Count]=id
+
+Support aggregating over multiple fields, either of
+```
+endpoint.agg/?aggregate[Sum]=id&aggregate[Sum]=number
+endpoint.agg/?aggregate[Sum]=id,number
+```
+## Custom Aggregations
+
+The default aggregate functions supported are defined in `django.db.models.aggregates`.
+
+Custom aggregate functions have been defined in `drf_aggregates.aggregates`
+
+User defined aggregation are passed to a custom queryset manager `calculate_aggregates` as kwargs if defined.
+
+Custom aggregate functions set on the queryset should return a dictionary of field names to aggregate functions, which will then be processed with the other aggregates.
+
+## Examples
+
+Example setup can be found in the [example/](/example/) folder.
+
+To enable the renderer, update your Django settings file:
+
+ ```python
+ REST_FRAMEWORK = {
+ 'DEFAULT_RENDERER_CLASSES': (
+ 'drf_aggregates.renderers.AggregateRenderer',
+ ...
+ ),
+ ...
+ }
+ ```
+
+In the [Cars ViewSet](/example/api/views.py) we are outputting the result to json:
+
+ ```python
+
+ def list(self, request, *args, **kwargs):
+ queryset = self.filter_queryset(self.get_queryset())
+ data = request.accepted_renderer.render({'queryset': queryset, 'request': request})
+ return Response(data, content_type=f'application/json')
+ ```
+
+
+## Tests
+
+In order to run tests locally:
+
+1. Install development requirements:
+
+ `pip3 install -r requirements-dev.txt`
+
+2. Update your environment to point to test Django settings file:
+
+ `export DJANGO_SETTINGS_MODULE=example.settings.test`
+
+3. Run tests:
+
+ `py.test`
+
+
+
+
+%prep
+%autosetup -n drf-aggregates-0.0.13
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-drf-aggregates -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.13-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..33ce53f
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+99965cd8f203c05a6a3db7ae7b118969 drf-aggregates-0.0.13.tar.gz