{ "info": { "author": "David J Cox", "author_email": "davidjcox.at@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Multimedia :: Graphics :: Graphics Conversion", "Topic :: Multimedia :: Graphics :: Presentation", "Topic :: Scientific/Engineering :: Visualization" ], "description": "===============\ndjango-deepzoom\n===============\n\n.. image:: https://badge.fury.io/py/django-deepzoom.svg\n :target: http://badge.fury.io/py/django-deepzoom\n\n.. image:: https://pypip.in/d/django-deepzoom/badge.png\n :target: https://crate.io/packages/django-deepzoom/\n\n.. image:: https://travis-ci.org/davidjcox/django-deepzoom.svg?branch=master\n :target: https://travis-ci.org/davidjcox/django-deepzoom\n\n.. image:: https://landscape.io/github/davidjcox/django-deepzoom/master/landscape.svg?style=flat\n :target: https://landscape.io/github/davidjcox/django-deepzoom/master\n :alt: Code Health\n\n.. image:: https://coveralls.io/repos/davidjcox/django-deepzoom/badge.svg?branch=master\n :target: https://coveralls.io/r/davidjcox/django-deepzoom?branch=master\n\nDjango-deepzoom is a drop-in Django app for the creation and use of Deep Zoom \ntiled images. It handily integrates Daniel Gasienica's and Kapil Thangavelu's \ndeepzoom.py image generator and the OpenSeadragon deep zoom viewer into a set \nof model classes and template tags which programmatically generate tiled images \nand all JavaScript necessary for their instantiation into templates.\n\nDetailed documentation is available on http://django-deepzoom.readthedocs.org/en/latest/.\n\n:Author: David J Cox\n\n:Contact: \n\n:Version: 3.0.3\n\nLet me know what you think of it...\n\nWhat's New?\n-----------\n\nDjango-deepzoom 3.0 involves major architectural changes so a major version bump is necessary. It introduces signal-based save, a new `DEFAULT_CREATE_DEEPZOOM_OPTION` setting, better file management, and decoupled file locations. It continues to be Python 2/3 compatible, Django 1.4+ compatible, and Pillow 1.7.8+ compatible.\n\nSignal-based save: Save/update code has been completely removed from model save/delete methods and distributed amongst signal handler methods. This was done to improve inter-model coordination and to beter manage state transitions during field updates. Fields that could not be updated before, e.g. `UploadedImage.uploaded_image` now are handled in the expected way. If an entirely new image is uploaded to an existing `UploadedImage` subclass and is saved, the previous `uploaded_image` will be deleted, the previous associated deepzoom will be deleted, the new uploaded image saved to disk, and an entirely new deepzoom will be generated from the new image.\n\nNew `DEFAULT_CREATE_DEEPZOOM_OPTION` setting: The default value of the `create_deepzoom` field can be controlled globally by setting the `DEFAULT_CREATE_DEEPZOOM_OPTION` to `True` or `False`. New instances of a `UploadedImage` subclass will be set to always create a deepzoom or never to create a deepzoom.\n\nBetter file management: Instead of relying on the default Django file management policy of 'never delete/always save', instance saves, updates, and deletes now involve corresponding file behavior to keep the file system free from overflowing.\n\nDecoupled file locations: File locations saved to instances are now computed and saved relative to `MEDIA_ROOT` instead of being absolute file paths.\n\nRun tests\n---------\nAfter django-deepzoom has been installed, you may want to sanity check it by \nrunning tests, like this::\n\n python manage.py test deepzoom --settings=deepzoom.test.test_settings\n\n\n.. ATTENTION::\n Some of the negative tests are intended to throw exceptions. The error text will display mixed in with the test results. THAT IS EXPECTED!\n\n If the end result is **OK** then all tests have passed. Enjoy.\n\n\nQuick start\n-----------\n\n1.) Install \"django-deepzoom\" like this::\n\n pip install -U django-deepzoom\n\n\nor, like this::\n\n wget https://pypi.python.org/packages/source/d/django-deepzoom/django-deepzoom-3.0.3.tar.gz\n tar -xvf django-deepzoom-3.0.3.tar.gz\n cd django-deepzoom-3.0.3\n python setup.py install\n\n2.) Add \"deepzoom\" to your INSTALLED_APPS setting. Django 1.7 introduced the \n`AppConfig.ready()` entry point for app intialization which is needed for \nthe new signals design (in that version of Django). That means the \ndjango-deepzoom app needs to be specified one way in Django 1.7+ and the \ntraditional way in previous Django versions.\nIn Django 1.7+ add the app like this::\n\n (in settings.py)\n\n INSTALLED_APPS = (\n ...\n 'deepzoom.apps.DeepZoomAppConfig',\n ...\n )\n\nHowever, in Django 1.6 and before, add the app the traditional way, like this::\n\n (in settings.py)\n\n INSTALLED_APPS = (\n ...\n 'deepzoom',\n ...\n )\n\n3.) Add a logging configuration to your settings.py file, like this::\n\n LOGGING = {\n 'version': 1,\n 'disable_existing_loggers': False,\n 'handlers': {\n 'file': {\n 'level': 'ERROR',\n 'class': 'logging.FileHandler',\n 'filename': 'deepzoom.exception.log',\n },\n },\n 'loggers': {\n 'deepzoom.models': {\n 'handlers': ['file'],\n 'level': 'ERROR',\n 'propagate': True,\n },\n },\n }\n\n4.) Sub-class the '`UploadedImage`' model class as your own (image-based) class, \nsomething like this::\n\n (in models.py)\n\n from deepzoom.models import DeepZoom, UploadedImage\n\n class MyImage(UploadedImage):\n '''\n Overrides UploadedImage base class.\n '''\n pass\n\n5.) Import signals.py. If using Django 1.6 or before, the signals module must \nbe imported after the model definitions have been parsed. This means the \nsignals.py import statement must either be added to the end of the models.py \nfile or in the app __init__.py file. The former avoids breaking test \ncoverage, so may be preferable. Django 1.7+ does not require importing \nsignals.py because that is handled by the `AppConfig.ready()` method.\nImport the signals.py file, like this::\n\n (in models.py)\n\n ...\n model definitions...\n ...\n\n import deepzoom.signals\n\n6.) Run `python manage.py syncdb` to create the django-deepzoom models.\n\n7.) Add an appropriate URL to your Urlconf, something like this::\n\n (in urls.py)\n\n from deepzoom.views import deepzoom_view\n\n urlpatterns = patterns('', \n ...\n url(r'^deepzoom/(?P\\b[a-z0-9\\-]+\\b)', \n deepzoom_view, \n name=\"v_deepzoom\"), \n ...\n )\n\n8.) Write a view that queries for a specific DeepZoom object and passes it to a \ntemplate, something like this::\n\n (in views.py)\n\n from deepzoom.models import DeepZoom\n\n def deepzoom_view(request, passed_slug=None):\n try:\n _deepzoom_obj = DeepZoom.objects.get(slug=passed_slug)\n except DeepZoom.DoesNotExist:\n raise Http404\n return render_to_response('deepzoom.html', \n {'deepzoom_obj': _deepzoom_obj}, \n context_instance=RequestContext(request))\n\n9.) In your template, create an empty div with a unique ID. Load the deepzoom \ntags and pass the deepzoom object and deepzoom div ID to the template tag \ninside a \n\n10.) Run `python manage.py collectstatic` to collect your static files into STATIC_ROOT.\n\n11.) Start the development server and visit `http://127.0.0.1:8000/admin/` to \nupload an image to the associated model (you'll need the Admin app enabled).\nBe sure to check the `Generate deep zoom?` checkbox for that image before \nsaving it.\n\n12.) Navigate to the page containing the deep zoom image and either click/touch \nit or click/touch the overlaid controls to zoom into and out of the tiled \nimage.\n\n`**Behold!** `_\n\n.", "description_content_type": null, "docs_url": "https://pythonhosted.org/django-deepzoom/", "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://django-deepzoom.invocatum.net/", "keywords": "imaging zoomable images deepzoom openseadragon", "license": "BSD License", "maintainer": null, "maintainer_email": null, "name": "django-deepzoom", "package_url": "https://pypi.org/project/django-deepzoom/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-deepzoom/", "project_urls": { "Homepage": "http://django-deepzoom.invocatum.net/" }, "release_url": "https://pypi.org/project/django-deepzoom/3.0.3/", "requires_dist": [ "django (>=1.4)", "pillow (>=1.7.8)", "six (>=1.9.0)" ], "requires_python": null, "summary": "A simple Django app to create deep zoom tiled images.", "version": "3.0.3" }, "last_serial": 1560090, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a836a83bf26542c1359dd3a06ff18c43", "sha256": "5c497b38cab4e543b57b49571d9ed75c2ab2de6f481f50c97ad0dea6072deb51" }, "downloads": -1, "filename": "django-deepzoom-0.1.linux-x86_64.exe", "has_sig": false, "md5_digest": "a836a83bf26542c1359dd3a06ff18c43", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 366904, "upload_time": "2013-10-02T17:23:13", "url": "https://files.pythonhosted.org/packages/29/6d/aed7e554dd73a66a197f189c3503ca2b314088ded9d63423923b00dcc67c/django-deepzoom-0.1.linux-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "640eab4bb8e3ef87ea7dfa4b2090d969", "sha256": "c8feb82e3cb10091e8b9ff80ab8c497aa70ab05443b78d85fb9f7a7dc917137b" }, "downloads": -1, "filename": "django-deepzoom-0.1.tar.gz", "has_sig": false, "md5_digest": "640eab4bb8e3ef87ea7dfa4b2090d969", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 304552, "upload_time": "2013-10-02T17:23:07", "url": "https://files.pythonhosted.org/packages/b9/85/3bd129b77e7c8228ec0d227b20d273b727c46ce6174e3ccc2284686284d8/django-deepzoom-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "05c2dbe69ee207bc445f8dfa997e7885", "sha256": "5c1142cebe70c1eff040173154a638a4451ce91bcd3cf532462fef7b4a6663ff" }, "downloads": -1, "filename": "django-deepzoom-0.2.tar.gz", "has_sig": false, "md5_digest": "05c2dbe69ee207bc445f8dfa997e7885", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 395921, "upload_time": "2013-10-18T21:34:30", "url": "https://files.pythonhosted.org/packages/33/f2/35558590a0b41170fa839a5f48abeedd4fef5dbd23359adfa5385583835f/django-deepzoom-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "68cd69ecfed33b76e81478c4b00795cd", "sha256": "aa95393439f3a20878d78b19169a80aa0742d59f10bf6066705ae0caa2440701" }, "downloads": -1, "filename": "django-deepzoom-0.3.tar.gz", "has_sig": false, "md5_digest": "68cd69ecfed33b76e81478c4b00795cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 414961, "upload_time": "2014-03-22T15:35:01", "url": "https://files.pythonhosted.org/packages/63/1b/5be06c1fe297c9383cbc34dedb2d4636d8c49e05b07a689aa128c71e2d03/django-deepzoom-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "907f9517e37f01f89de972320e5b3bff", "sha256": "aedf0b183473db71cafe07ded68a5218f4d38f23214aa6ad5cd6824973c3b8a0" }, "downloads": -1, "filename": "django-deepzoom-0.4.tar.gz", "has_sig": false, "md5_digest": "907f9517e37f01f89de972320e5b3bff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 415265, "upload_time": "2014-03-22T15:54:59", "url": "https://files.pythonhosted.org/packages/78/9e/a90bbc6932ad67b889ac6d2b47380508855bdd25305819fdad9b27b74fec/django-deepzoom-0.4.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "d3319b50fab7cc4b02adc146d8ddacd1", "sha256": "d10163438a04f0acf8c649040551ee324202501cb1b98aab037b4adf5bd07c52" }, "downloads": -1, "filename": "django-deepzoom-1.0.tar.gz", "has_sig": false, "md5_digest": "d3319b50fab7cc4b02adc146d8ddacd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 421349, "upload_time": "2014-03-22T16:02:45", "url": "https://files.pythonhosted.org/packages/8e/a3/717489deb68640227229fe33f883b36065b2dde7884f84d3038b1eb667cd/django-deepzoom-1.0.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "5f3b0687872a60e8e20050d851776536", "sha256": "b3470bc5311abc5ae67aeabd81f0fa765ab48bcdb83c709f4b587fc6e445e3ae" }, "downloads": -1, "filename": "django_deepzoom-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5f3b0687872a60e8e20050d851776536", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 519022, "upload_time": "2014-12-31T23:22:08", "url": "https://files.pythonhosted.org/packages/fa/20/05b618250dcca149ec5f46eda358f2f83cf8a14310562912f1967b84b245/django_deepzoom-2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "334b3af3efe06eb569adc0ed9bdfd52b", "sha256": "33dc15f6e55526f713fe5a52416e3211581d5e64ca7ee88e213cb065b677419d" }, "downloads": -1, "filename": "django-deepzoom-2.0.tar.gz", "has_sig": false, "md5_digest": "334b3af3efe06eb569adc0ed9bdfd52b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 564187, "upload_time": "2014-12-31T23:22:15", "url": "https://files.pythonhosted.org/packages/5d/ba/30ef16a3a6f8ad2ab352b1a7bae19199d172195fc979fe175a66328296fc/django-deepzoom-2.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "9e390c34c201501e6214308ca9276060", "sha256": "7f780b7b1f769c61ceffea050b4de605a5e551c1a22e1a8582738264a0319ef6" }, "downloads": -1, "filename": "django_deepzoom-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9e390c34c201501e6214308ca9276060", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 526007, "upload_time": "2015-02-14T06:40:12", "url": "https://files.pythonhosted.org/packages/b4/9b/f98b54cf9d0dc77d49a203f4f8bc6a672cc19fb890f1832fed8e367818d7/django_deepzoom-3.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d74c91a4acd2e20e87a83f9dd14298c5", "sha256": "0e2684566df509a628e7ed766d9a711ba36d7663210b9c6944a097c596a8996b" }, "downloads": -1, "filename": "django-deepzoom-3.0.0.tar.gz", "has_sig": false, "md5_digest": "d74c91a4acd2e20e87a83f9dd14298c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 479051, "upload_time": "2015-02-14T06:40:18", "url": "https://files.pythonhosted.org/packages/11/90/9bc4229c4b86b934988c37befb8155b33eed6f1b53050369f9605cb9b956/django-deepzoom-3.0.0.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "062c400774d67985eb354f17105322e5", "sha256": "dd97d2dd8da7cb9b9ad1da07c47d3e53be96c43c827fdfd9f62b0af80bd384bb" }, "downloads": -1, "filename": "django_deepzoom-3.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "062c400774d67985eb354f17105322e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 526370, "upload_time": "2015-02-22T22:16:59", "url": "https://files.pythonhosted.org/packages/c6/4a/cd4a0c33e4c6fcf7dde8424ce8f802f7d292147f8571acd06740cbcec6dc/django_deepzoom-3.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1383ed8b39db64bf87a98ffb9267be46", "sha256": "a20610bd57505d1f69cda7a67b22d0d4ccb1b7ce1de1ed142f9fbd7f1d72f343" }, "downloads": -1, "filename": "django-deepzoom-3.0.2.tar.gz", "has_sig": false, "md5_digest": "1383ed8b39db64bf87a98ffb9267be46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 479303, "upload_time": "2015-02-22T22:17:05", "url": "https://files.pythonhosted.org/packages/7f/2b/d0d4a98a8d7befe1ef086f81e5a51eac07ec624d9c1face5d954836e7127/django-deepzoom-3.0.2.tar.gz" } ], "3.0.3": [ { "comment_text": "", "digests": { "md5": "f577f19d8263bc1396046c75acb57fa7", "sha256": "17d06996eaa16a97aa9709430a9eb8e298d5446f4bd683c69a77f3ba4bd9dd5e" }, "downloads": -1, "filename": "django_deepzoom-3.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f577f19d8263bc1396046c75acb57fa7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 526384, "upload_time": "2015-05-24T04:15:15", "url": "https://files.pythonhosted.org/packages/40/fd/d1c13a78f2ba29631910c2e66515f46422c9f658503aea09bf18bcc0b5f6/django_deepzoom-3.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fecf32caecdc9185ebe0de41b59cb6e", "sha256": "d752cdcadd03c19832dd71a24fed6cf743138c767f9b17d2e52a23883f893d95" }, "downloads": -1, "filename": "django-deepzoom-3.0.3.tar.gz", "has_sig": false, "md5_digest": "6fecf32caecdc9185ebe0de41b59cb6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 479323, "upload_time": "2015-05-24T04:15:22", "url": "https://files.pythonhosted.org/packages/9a/7d/e1ffa383fb863f27bac425e4391facfa1447ea75792f7cc15ea4f6fbbd69/django-deepzoom-3.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f577f19d8263bc1396046c75acb57fa7", "sha256": "17d06996eaa16a97aa9709430a9eb8e298d5446f4bd683c69a77f3ba4bd9dd5e" }, "downloads": -1, "filename": "django_deepzoom-3.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f577f19d8263bc1396046c75acb57fa7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 526384, "upload_time": "2015-05-24T04:15:15", "url": "https://files.pythonhosted.org/packages/40/fd/d1c13a78f2ba29631910c2e66515f46422c9f658503aea09bf18bcc0b5f6/django_deepzoom-3.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fecf32caecdc9185ebe0de41b59cb6e", "sha256": "d752cdcadd03c19832dd71a24fed6cf743138c767f9b17d2e52a23883f893d95" }, "downloads": -1, "filename": "django-deepzoom-3.0.3.tar.gz", "has_sig": false, "md5_digest": "6fecf32caecdc9185ebe0de41b59cb6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 479323, "upload_time": "2015-05-24T04:15:22", "url": "https://files.pythonhosted.org/packages/9a/7d/e1ffa383fb863f27bac425e4391facfa1447ea75792f7cc15ea4f6fbbd69/django-deepzoom-3.0.3.tar.gz" } ] }