Package: django-gcloud-storage
Django storage module implementation for Google Cloud Storage using thegoogle-cloud-storagepython module by Google.Notice: alpha releasePlease keep in mind that this version is not yet used in any production application
(as far as I know of) and thus is an alpha release, even though fully tested!
Any kind of feedback is greatly appreciated.InstallationInstall django-gcloud-storage:pip install django-gcloud-storageCreate a GCS service account JSON keyfile and a bucket for your application.
Check the documentation of Google Cloud Platform for more details:https://cloud.google.com/iam/docs/creating-managing-service-accounts#creatinghttps://cloud.google.com/iam/docs/creating-managing-service-account-keys#creatingUpdate your Django settings and use it like any other Django storage module:DEFAULT_FILE_STORAGE = 'django_gcloud_storage.DjangoGCloudStorage'

GCS_PROJECT = "django-gcloud-storage"
GCS_BUCKET = "django-gcloud-storage-bucket"
GCS_CREDENTIALS_FILE_PATH = "/path/to/gcs-credentials.json"FeaturesFully tested on Python 3.7 - 3.10, PyPy 3.7-7.3.7 and PyPy 3.8-7.3.7 with
Django 2.2, 3.2 and 4.0Files are locally downloaded as SpooledTemporaryFile objects to avoid memory
abuseChanged files will automatically be reuploaded to GCS when closedCaveatsFiles must be fully downloaded to be accessed and fully uploaded when changedEverytime a file is opened via the storage module, it will be downloaded again(development) Most tests need access to Google Cloud StorageUnsigned URLSThe module generates signed urls by default. This requires calls to storage API
which might take some time if you need to return several objects at a time. You
can generate unsigned urls using the following setting:GCS_USE_UNSIGNED_URLS = TrueKeep in mind you might need to set the default object permission to public for
the unsigned urls to work.ContributingContributions are welcome, and they are greatly appreciated! Every
little bit helps, and credit will always be given.Report BugsReport bugs athttps://github.com/strayer/django-gcloud-storage/issues.If you are reporting a bug, please include:Your operating system name and version.Any details about your local setup that might be helpful in troubleshooting.Detailed steps to reproduce the bug.Fix BugsLook through the GitHub issues for bugs. Anything tagged with “bug”
is open to whoever wants to implement it.Implement FeaturesLook through the GitHub issues for features. Anything tagged with “feature”
is open to whoever wants to implement it.Write Documentationdjango-gcloud-storage could always use more documentation, whether as part of the
official django-gcloud-storage docs, in docstrings, or even on the web in blog posts,
articles, and such.Pull Request GuidelinesBefore you submit a pull request, check that it meets these guidelines:The pull request should include tests.The pull request should work for all supported Python and Django versions
(see above). Make sure that the tests pass.Running TestsWarning: Most of the tests require a GCS project and will do API requests that
may end up costing you money!You can run the test suite either in a virtualenv with py.test or with tox - both
require a valid service account JSON keyfile calledtest-credentials.jsonin
the project root. The GCS project name will be provided via a command argument.The tests will create and (hopefully) remove buckets on their own. To be safe,
check if there are any leftover buckets in your GCS project after running the
tests!source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements-test.txt
(myenv) $ pip install -e .
(myenv) $ py.test --gcs-project-name="project-name"

or

$ tox -- --gcs-project-name="project-name"CreditsInspired by:django-storagesTools (partly) used in rendering this package:Cookiecuttercookiecutter-djangopackageHistory0.5.0 (2021-01-28)Added support for Django 4.0, 3.2 and 2.2Added support for Python 3.8, 3.9 and 3.10Added support for PyPy 3.7 and 3.8Dropped suport for now unsupported Python and Django versions:Python 2.7, 3.4, 3.5 and 3.6Django 1.11, 2.1 and 3.00.4.0 (2019-06-27)Autodetect and set object Content-Type on uploadAdded test support for Django 2.2Dropped test support for Django 2.00.3.1 (2018-08-08)Updated test support versions for Django 1.11 - 2.1Added test support for Python 3.7Added test support for Pypy 3Dropped support for Python 3.3Dropped support for Django 1.11 or olderTests are much quicker and do less API requestsSwitched to google-cloud-storage library0.2.1 (2017-06-23)Use google-cloud package instead of gcloud (package was renamed by Google)Added test support for Django 1.10 and 1.11Deprecated Django 1.7 (should still work, no support guaranteed)Added test support for Python 3.6Added setting for unsigned URLs supportAdded get_modified_time() for Django 1.11+ supportstorage.open() will now create new blobs if no existing blob has been found0.1.0 (2016-02-01)First release on PyPI.Development of this release was kindly sponsored byCraft AG.