%global _empty_manifest_terminate_build 0 Name: python-django-rgd Version: 0.3.11 Release: 1 Summary: please add a summary manually as the author left a blank one License: Apache 2.0 URL: https://github.com/ResonantGeoData/ResonantGeoData Source0: https://mirrors.nju.edu.cn/pypi/web/packages/94/61/44175e6e0b6269d8ef424d12abd57d30fb65d53cae1b792199ab6727efb5/django-rgd-0.3.11.tar.gz BuildArch: noarch Requires: python3-boto3 Requires: python3-celery Requires: python3-django Requires: python3-django-allauth Requires: python3-django-click Requires: python3-django-crum Requires: python3-django-extensions Requires: python3-django-filter Requires: python3-django-girder-utils Requires: python3-django-model-utils Requires: python3-django-oauth-toolkit Requires: python3-django-s3-file-field[minio] Requires: python3-djangorestframework Requires: python3-drf-yasg Requires: python3-filelock Requires: python3-flower Requires: python3-GDAL Requires: python3-pooch Requires: python3-psutil Requires: python3-psycopg2 Requires: python3-magic Requires: python3-typing-extensions Requires: python3-django-composed-configuration[dev] Requires: python3-django-configurations[database,email] Requires: python3-django-cache-url Requires: python3-redis Requires: python3-numpy Requires: python3-simple-httpfs %description [![logo](https://raw.githubusercontent.com/ResonantGeoData/ResonantGeoData/main/logos/RGD_Logo.png)](https://github.com/ResonantGeoData/ResonantGeoData/) # Resonant GeoData Core Application [![Kitware](https://img.shields.io/badge/Made%20by-Kitware-blue)](https://www.kitware.com/) [![PyPI](https://img.shields.io/pypi/v/django-rgd.svg?logo=python&logoColor=white)](https://pypi.org/project/django-rgd/) The core Resonant GeoData (RGD) app containing file and permissions management as well as spatial models. Each of the other RGD apps depend on the core functionality built here. ## Installation ``` pip install --find-links https://girder.github.io/large_image_wheels django-rgd ``` It is necessary to use a postgis database with the RGD apps. To do so, set your database ENGINE to `django.contrib.gis.db.backends.postgis`. Add RGD to your `INSTALLED_APPS`: ```py INSTALLED_APPS += [ 'django.contrib.gis', 'rgd', ] MIDDLEWARE += ('crum.CurrentRequestUserMiddleware',) REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] += ('rest_framework.authentication.TokenAuthentication',) # doesn't have to use girder_utils if downstream projects don't have it installed, but this must be set to *something* valid to enable pagination in the API REST_FRAMEWORK['DEFAULT_PAGINATION_CLASS'] = 'girder_utils.rest_framework.BoundedLimitOffsetPagination' REST_FRAMEWORK['PAGE_SIZE'] = 100 # or whatever default pagination size you want ``` (note that RGD requires [`django-crum`](https://django-crum.readthedocs.io/en/latest/) middleware.) It is also necessary to configure GDAL in your project settings: ```py try: import re import osgeo libsdir = os.path.join(os.path.dirname(os.path.dirname(osgeo._gdal.__file__)), 'GDAL.libs') libs = {re.split(r'-|\.', name)[0]: os.path.join(libsdir, name) for name in os.listdir(libsdir)} GDAL_LIBRARY_PATH = libs['libgdal'] GEOS_LIBRARY_PATH = libs['libgeos_c'] except Exception: pass ``` ## Configurations The RGD core app has a few optional settings: - `RGD_GLOBAL_READ_ACCESS`: option to give all users access to files that lack permissions (otherwise only admin users can access these files) - `RGD_FILE_FIELD_PREFIX`: the path prefix when uploading files to the project's S3 storage. - `RGD_AUTO_APPROVE_SIGN_UP`: automatically approve all user sign ups. - `RGD_AUTO_COMPUTE_CHECKSUMS`: automatically compute checksums for all ChecksumFile records (default False) - `RGD_TEMP_DIR`: A temporary directory for working files - `RGD_TARGET_AVAILABLE_CACHE`: The target free space to remain for the cache in Gigabytes (default 2). - `RGD_REST_CACHE_TIMEOUT`: the time in seconds for the REST views cache (for endpoints that are cached). - `RGD_SIGNED_URL_TTL`: The time in seconds for which URL signatures are valid (defaults to 24 hours). - `RGD_SIGNED_URL_QUERY_PARAM`: The signature querystring variable name (defaults to `signature`). - `RGD_DEBUG_LOGS`: enable debug level logging for RGD (default True) ## Models - `ChecksumFile`: the central file storage model. Supports uploaded files, S3 URLs, and http URLS. - `Collection` and `CollectionPermission`: for grouping files and controlling permission groups on those groups. - `SpatialEntry`: the core model for indexing spatial metadata. This is intended to be inherited from but also provides a robust search filter. - `SpatialAsset`: a simple spatial model for registering any collection of files with manually inputted spatial metadata. - `WhitelistedEmail`: a model for pre-approving users for sign up. The core RGD app is intended to be inherited from for developing domain-specific geospatial models. For instance, we will demo the implementation of the simple `SpatialAsset` model shipped in this app. We can develop a new model on top of `django-rgd` through the inheritting the core `SpatialEntry` model and using a few mixin classes from `django-rgd`. This new model will represent a collection of files with some spatial reference. ```py from django_extensions.db.models import TimeStampedModel from rgd.models import ChecksumFile, SpatialEntry class SpatialAsset(SpatialEntry, TimeStampedModel): """Any spatially referenced file set.""" files = models.ManyToManyField(ChecksumFile, related_name='+') ``` Just like that, you now have a way to associate a set of files to any geospatial location. To populate data in this model, first create `ChecksumFile` records, then create a new `SpatialAsset` populating the fields defined from `SpatialEntry`: `acquisition_date`, `footprint`, `outline`, and `instrumentation`. ## Management Commands The core app has two management commands: - `rgd_s3_files`: used to ingest `ChecksumFile`s from S3 or Google Cloud storage. - `whitelist_email`: pre-approve users for sign-up. Use the `--help` option for more details. %package -n python3-django-rgd Summary: please add a summary manually as the author left a blank one Provides: python-django-rgd BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-rgd [![logo](https://raw.githubusercontent.com/ResonantGeoData/ResonantGeoData/main/logos/RGD_Logo.png)](https://github.com/ResonantGeoData/ResonantGeoData/) # Resonant GeoData Core Application [![Kitware](https://img.shields.io/badge/Made%20by-Kitware-blue)](https://www.kitware.com/) [![PyPI](https://img.shields.io/pypi/v/django-rgd.svg?logo=python&logoColor=white)](https://pypi.org/project/django-rgd/) The core Resonant GeoData (RGD) app containing file and permissions management as well as spatial models. Each of the other RGD apps depend on the core functionality built here. ## Installation ``` pip install --find-links https://girder.github.io/large_image_wheels django-rgd ``` It is necessary to use a postgis database with the RGD apps. To do so, set your database ENGINE to `django.contrib.gis.db.backends.postgis`. Add RGD to your `INSTALLED_APPS`: ```py INSTALLED_APPS += [ 'django.contrib.gis', 'rgd', ] MIDDLEWARE += ('crum.CurrentRequestUserMiddleware',) REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] += ('rest_framework.authentication.TokenAuthentication',) # doesn't have to use girder_utils if downstream projects don't have it installed, but this must be set to *something* valid to enable pagination in the API REST_FRAMEWORK['DEFAULT_PAGINATION_CLASS'] = 'girder_utils.rest_framework.BoundedLimitOffsetPagination' REST_FRAMEWORK['PAGE_SIZE'] = 100 # or whatever default pagination size you want ``` (note that RGD requires [`django-crum`](https://django-crum.readthedocs.io/en/latest/) middleware.) It is also necessary to configure GDAL in your project settings: ```py try: import re import osgeo libsdir = os.path.join(os.path.dirname(os.path.dirname(osgeo._gdal.__file__)), 'GDAL.libs') libs = {re.split(r'-|\.', name)[0]: os.path.join(libsdir, name) for name in os.listdir(libsdir)} GDAL_LIBRARY_PATH = libs['libgdal'] GEOS_LIBRARY_PATH = libs['libgeos_c'] except Exception: pass ``` ## Configurations The RGD core app has a few optional settings: - `RGD_GLOBAL_READ_ACCESS`: option to give all users access to files that lack permissions (otherwise only admin users can access these files) - `RGD_FILE_FIELD_PREFIX`: the path prefix when uploading files to the project's S3 storage. - `RGD_AUTO_APPROVE_SIGN_UP`: automatically approve all user sign ups. - `RGD_AUTO_COMPUTE_CHECKSUMS`: automatically compute checksums for all ChecksumFile records (default False) - `RGD_TEMP_DIR`: A temporary directory for working files - `RGD_TARGET_AVAILABLE_CACHE`: The target free space to remain for the cache in Gigabytes (default 2). - `RGD_REST_CACHE_TIMEOUT`: the time in seconds for the REST views cache (for endpoints that are cached). - `RGD_SIGNED_URL_TTL`: The time in seconds for which URL signatures are valid (defaults to 24 hours). - `RGD_SIGNED_URL_QUERY_PARAM`: The signature querystring variable name (defaults to `signature`). - `RGD_DEBUG_LOGS`: enable debug level logging for RGD (default True) ## Models - `ChecksumFile`: the central file storage model. Supports uploaded files, S3 URLs, and http URLS. - `Collection` and `CollectionPermission`: for grouping files and controlling permission groups on those groups. - `SpatialEntry`: the core model for indexing spatial metadata. This is intended to be inherited from but also provides a robust search filter. - `SpatialAsset`: a simple spatial model for registering any collection of files with manually inputted spatial metadata. - `WhitelistedEmail`: a model for pre-approving users for sign up. The core RGD app is intended to be inherited from for developing domain-specific geospatial models. For instance, we will demo the implementation of the simple `SpatialAsset` model shipped in this app. We can develop a new model on top of `django-rgd` through the inheritting the core `SpatialEntry` model and using a few mixin classes from `django-rgd`. This new model will represent a collection of files with some spatial reference. ```py from django_extensions.db.models import TimeStampedModel from rgd.models import ChecksumFile, SpatialEntry class SpatialAsset(SpatialEntry, TimeStampedModel): """Any spatially referenced file set.""" files = models.ManyToManyField(ChecksumFile, related_name='+') ``` Just like that, you now have a way to associate a set of files to any geospatial location. To populate data in this model, first create `ChecksumFile` records, then create a new `SpatialAsset` populating the fields defined from `SpatialEntry`: `acquisition_date`, `footprint`, `outline`, and `instrumentation`. ## Management Commands The core app has two management commands: - `rgd_s3_files`: used to ingest `ChecksumFile`s from S3 or Google Cloud storage. - `whitelist_email`: pre-approve users for sign-up. Use the `--help` option for more details. %package help Summary: Development documents and examples for django-rgd Provides: python3-django-rgd-doc %description help [![logo](https://raw.githubusercontent.com/ResonantGeoData/ResonantGeoData/main/logos/RGD_Logo.png)](https://github.com/ResonantGeoData/ResonantGeoData/) # Resonant GeoData Core Application [![Kitware](https://img.shields.io/badge/Made%20by-Kitware-blue)](https://www.kitware.com/) [![PyPI](https://img.shields.io/pypi/v/django-rgd.svg?logo=python&logoColor=white)](https://pypi.org/project/django-rgd/) The core Resonant GeoData (RGD) app containing file and permissions management as well as spatial models. Each of the other RGD apps depend on the core functionality built here. ## Installation ``` pip install --find-links https://girder.github.io/large_image_wheels django-rgd ``` It is necessary to use a postgis database with the RGD apps. To do so, set your database ENGINE to `django.contrib.gis.db.backends.postgis`. Add RGD to your `INSTALLED_APPS`: ```py INSTALLED_APPS += [ 'django.contrib.gis', 'rgd', ] MIDDLEWARE += ('crum.CurrentRequestUserMiddleware',) REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] += ('rest_framework.authentication.TokenAuthentication',) # doesn't have to use girder_utils if downstream projects don't have it installed, but this must be set to *something* valid to enable pagination in the API REST_FRAMEWORK['DEFAULT_PAGINATION_CLASS'] = 'girder_utils.rest_framework.BoundedLimitOffsetPagination' REST_FRAMEWORK['PAGE_SIZE'] = 100 # or whatever default pagination size you want ``` (note that RGD requires [`django-crum`](https://django-crum.readthedocs.io/en/latest/) middleware.) It is also necessary to configure GDAL in your project settings: ```py try: import re import osgeo libsdir = os.path.join(os.path.dirname(os.path.dirname(osgeo._gdal.__file__)), 'GDAL.libs') libs = {re.split(r'-|\.', name)[0]: os.path.join(libsdir, name) for name in os.listdir(libsdir)} GDAL_LIBRARY_PATH = libs['libgdal'] GEOS_LIBRARY_PATH = libs['libgeos_c'] except Exception: pass ``` ## Configurations The RGD core app has a few optional settings: - `RGD_GLOBAL_READ_ACCESS`: option to give all users access to files that lack permissions (otherwise only admin users can access these files) - `RGD_FILE_FIELD_PREFIX`: the path prefix when uploading files to the project's S3 storage. - `RGD_AUTO_APPROVE_SIGN_UP`: automatically approve all user sign ups. - `RGD_AUTO_COMPUTE_CHECKSUMS`: automatically compute checksums for all ChecksumFile records (default False) - `RGD_TEMP_DIR`: A temporary directory for working files - `RGD_TARGET_AVAILABLE_CACHE`: The target free space to remain for the cache in Gigabytes (default 2). - `RGD_REST_CACHE_TIMEOUT`: the time in seconds for the REST views cache (for endpoints that are cached). - `RGD_SIGNED_URL_TTL`: The time in seconds for which URL signatures are valid (defaults to 24 hours). - `RGD_SIGNED_URL_QUERY_PARAM`: The signature querystring variable name (defaults to `signature`). - `RGD_DEBUG_LOGS`: enable debug level logging for RGD (default True) ## Models - `ChecksumFile`: the central file storage model. Supports uploaded files, S3 URLs, and http URLS. - `Collection` and `CollectionPermission`: for grouping files and controlling permission groups on those groups. - `SpatialEntry`: the core model for indexing spatial metadata. This is intended to be inherited from but also provides a robust search filter. - `SpatialAsset`: a simple spatial model for registering any collection of files with manually inputted spatial metadata. - `WhitelistedEmail`: a model for pre-approving users for sign up. The core RGD app is intended to be inherited from for developing domain-specific geospatial models. For instance, we will demo the implementation of the simple `SpatialAsset` model shipped in this app. We can develop a new model on top of `django-rgd` through the inheritting the core `SpatialEntry` model and using a few mixin classes from `django-rgd`. This new model will represent a collection of files with some spatial reference. ```py from django_extensions.db.models import TimeStampedModel from rgd.models import ChecksumFile, SpatialEntry class SpatialAsset(SpatialEntry, TimeStampedModel): """Any spatially referenced file set.""" files = models.ManyToManyField(ChecksumFile, related_name='+') ``` Just like that, you now have a way to associate a set of files to any geospatial location. To populate data in this model, first create `ChecksumFile` records, then create a new `SpatialAsset` populating the fields defined from `SpatialEntry`: `acquisition_date`, `footprint`, `outline`, and `instrumentation`. ## Management Commands The core app has two management commands: - `rgd_s3_files`: used to ingest `ChecksumFile`s from S3 or Google Cloud storage. - `whitelist_email`: pre-approve users for sign-up. Use the `--help` option for more details. %prep %autosetup -n django-rgd-0.3.11 %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-django-rgd -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 10 2023 Python_Bot - 0.3.11-1 - Package Spec generated