{ "info": { "author": "Hedley Roos", "author_email": "hedleyroos@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "Django Layers\n=============\n\n.. figure:: https://travis-ci.org/hedleyroos/django-layers.svg?branch=develop\n :align: center\n :alt: Travis\n\n Travis\n\n--------------\n\nDjango Layers makes it possible to serve a set of templates and\nstatic resources as defined in ``settings.py``. This means you can serve\ndifferent HTML, Javascript and CSS to eg. basic mobile devices, smart\nphones and desktop browsers. These template sets (aka layers) also\nstack, so if you create ``foo.html`` for basic devices it is\nautomatically available for desktop browsers as well. You can override\n``foo.html`` for desktop browsers.\n\nInstallation\n------------\n\n1. Install or add ``django-layers-hr`` to your Python path.\n2. Add ``layers`` after ``django.contrib.static`` to your ``INSTALLED_APPS`` setting.\n3. Ensure the app that you will be creating layers for appears first in\n ``INSTALLED_APPS`` else template override won't work.\n\nExample\n-------\n\nNote: there is a working example in the ``example`` subdirectory.\n\nWe have sites example.com, basic.example.com and smart.example.com. Each\nof the sites have their own ``settings.py``, thus different Django\nprocesses.\n\nDirectory structure\n^^^^^^^^^^^^^^^^^^^\n\n::\n\n templates\n - basic\n - foo.html (1)\n - bar.html (2)\n - smart\n - bar.html (3)\n - web\n - bar.html (4)\n\n static\n - basic\n - foo.css (5)\n - bar.css (6)\n - smart\n - bar.css (7)\n - web\n - bar.css (8)\n\nSettings\n^^^^^^^^\n\nWe define an \"inheritance\" hierarchy using a list-of-lists notation.\n\nTwo lines of inheritance: basic-smart and basic-web::\n\n LAYERS = {'tree': ['basic', ['smart'], ['web']]}\n\nOne lines of inheritance: basic-smart-web.::\n\n LAYERS = {'tree': ['basic', ['smart', ['web']]]}\n\nThere are two ways to configure layer lookup for system: specify the current\nlayer in a settings file or look it up from the request. Omit the ``current``\nkey to enable request based lookups::\n\n LAYERS = {'tree': ['basic', ['smart'], ['web']], 'current': 'web'}\n\nLegacy settings require layers to be defined in separate settings files. The example\nbelow means we have three settings files, and thus three Django processes.\nPlease migrate to the default ``tree`` format.\n\n- Desktop settings has ``LAYERS = {'layers': ['basic', 'web']}``.\n- Basic settings has ``LAYERS = {'layers': ['basic']}``.\n- Smart settings has ``LAYERS = {'layers': ['basic', 'smart']}``.\n\nAdd the loaders and finders to settings. The order is\nimportant.\n\n::\n\n INSTALLED_APPS = (\n 'myapp',\n 'layers',\n ...\n )\n\n TEMPLATE_LOADERS = (\n 'layers.loaders.filesystem.Loader',\n 'django.template.loaders.filesystem.Loader',\n 'layers.loaders.app_directories.Loader',\n 'django.template.loaders.app_directories.Loader',\n )\n\n STATICFILES_FINDERS = (\n 'layers.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.FileSystemFinder',\n 'layers.finders.AppDirectoriesFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n )\n\nTemplate results\n^^^^^^^^^^^^^^^^\n\n- http://example.com/foo yields (1).\n- http://example.com/bar yields (4).\n- http://basic.example.com/foo yields (1).\n- http://basic.example.com/bar yields (2).\n- http://smart.example.com/foo yields (1).\n- http://smart.example.com/foo yields (3).\n\nStatic results\n^^^^^^^^^^^^^^\n\n- http://example.com/static/foo.css yields (5).\n- http://example.com/static/bar.css yields (8).\n- http://basic.example.com/static/foo.css yields (5).\n- http://basic.example.com/static/bar.css yields (6).\n- http://smart.example.com/static/foo.css yields (5).\n- http://smart.example.com/static/foo.css yields (7).\n\nOverriding templates from other apps\n------------------------------------\n\nThe normal template resolution rules apply. Creating eg.\n``templates/web/registration/login.html`` will override the login page\nfor web only.\n\nCollectstatic\n-------------\n\nCollectstatic remains unaffected. The collector delegates to finders, so\nall layer aware resources end up with partial paths under the\n``STATIC_ROOT`` directory.\n\nDecorators\n----------\nA user could follow a link that leads him to a layer that serves a broken page. For example a web site\nis served on www.site.com with an accompanying basic site m.site.com. Visiting www.site.com/flashy-dashboard\nwith a basic device like a Samsung E250 will result in the user being redirected to m.site.com/flashy-dashboard.\nThat page probably does not exist for basic devices because it can't render it well enough. In such a case a\ndecorator ``exclude_from_layers`` is provided that renders a friendly page instead of a 404 or 500 error::\n\n class WebOnlyView(TemplateView):\n template_name = \"layers/web_only_view.html\"\n\n @exclude_from_layers(layers=(\"basic\",))\n def get(self, *args, **kwargs):\n return super(WebOnlyView, self).get(*args, **kwargs)\n\nRequest based layer lookup\n--------------------------\nThe preferred way of layer lookup is through the presense of an\n``X-Django-Layer`` header in the request. Django Layers layer lookup is very\nsimilar to the site object lookup done in ``django.contrib.sites``. If a layer\nis explicitly defined in settings then that is used, else the request headers\nare inspected.\n\nDuring development you will likely define the layer in your settings file, but\nin a production environment you don't want a Django process per layer, so\nrequest based lookups are preferred.\n\nLayer objects\n-------------\nThe management command `load_layers` creates a `Layer` object for each layer in\nyour project. It is useful for doing layer based filtering at database level.\n\nCan I add my own layers?\n------------------------\nYes! Basic, smart and web are just examples. You can define any hierarchy with\nany names.\n\nAuthors\n=======\n\n* Hedley Roos\n* Altus Barry\n\nChangelog\n=========\n\n1.11.1\n------\n#. Guard against KeyError, when request is empty in get_current_layer_stack().\n\n1.11.0\n------\n#. Django 1.11 compatibility.\n\n1.10.1\n------\n#. Fix typos in documentation.\n#. Add `layers_collectstatic` management command to do layer aware static file collection.\n\n\n1.10.0\n------\n#. Django 1.10 compatibility.\n#. Make it possible to determine the layer from the request. This removes the need for a Django process per layer.\n\n1.9\n---\n#. Drop Django 1.6 compatibility. Django 1.9 is supported and tested.\n\n0.5.1\n-----\n#. Rewrite decorator to be function based because it makes it easier to use in urls.py.\n\n0.5\n---\n#. Provide decorator `exclude_from_layers` so a view renders properly even if it can't render for a particular layer.\n\n0.4\n---\n#. Remove redundant collectstatic management command.\n\n0.3\n---\n#. Expand tests.\n#. Fix bug where static file not defined in a layer could not be overwritten in a layer.\n#. Provide a layer aware replacement for collectstatic.\n\n0.2\n---\n#. Inevitable package rename.\n\n0.1\n---\n#. Initial release.\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/hedleyroos/django-layers", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django-layers-hr", "package_url": "https://pypi.org/project/django-layers-hr/", "platform": "", "project_url": "https://pypi.org/project/django-layers-hr/", "project_urls": { "Homepage": "http://github.com/hedleyroos/django-layers" }, "release_url": "https://pypi.org/project/django-layers-hr/1.11.1/", "requires_dist": null, "requires_python": "", "summary": "Serve different templates and static files for eg. mobi and web. Layers can be stacked to enable resource re-use.", "version": "1.11.1" }, "last_serial": 4623979, "releases": { "0.1": [], "0.2": [ { "comment_text": "", "digests": { "md5": "7cb79f05d0c97cfb54b8603142568d2e", "sha256": "090723c512cdb34cf72c51a4cbd07dfec5c69433a932d0b34879eaa6f5586ff7" }, "downloads": -1, "filename": "django_layers_hr-0.2-py2.7.egg", "has_sig": false, "md5_digest": "7cb79f05d0c97cfb54b8603142568d2e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 11677, "upload_time": "2014-08-21T14:27:01", "url": "https://files.pythonhosted.org/packages/11/fa/f513636775cb0c0120482d67af959ccdde7a43de91384b0626dd855c9b7d/django_layers_hr-0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "71223a662d21e4cd351c30eb818cd60b", "sha256": "df9a8ceddd49dacb1e6b1054f56bd30dd8d12200f2d0c40e1f09b4700777720e" }, "downloads": -1, "filename": "django-layers-hr-0.2.tar.gz", "has_sig": false, "md5_digest": "71223a662d21e4cd351c30eb818cd60b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11803, "upload_time": "2015-02-05T09:11:24", "url": "https://files.pythonhosted.org/packages/f0/e8/2623904794c41df581b50fb64d4f05d294ed46b456e48129a2ac033dd218/django-layers-hr-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "acd25d04e46722290adcc1057954fc00", "sha256": "862b29872cf20ac0edda1b5e50df9f6ccf412826c6bb9797fddbb24224f6505a" }, "downloads": -1, "filename": "django_layers_hr-0.3-py2.7.egg", "has_sig": false, "md5_digest": "acd25d04e46722290adcc1057954fc00", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 17076, "upload_time": "2015-02-05T14:00:31", "url": "https://files.pythonhosted.org/packages/33/77/4ac1c506579e8e06bab7a254864bd39cd7c4f6e407fe96ed7a6d291c5879/django_layers_hr-0.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "6ce9a15a14f7f0e6be6ff90aec809e9c", "sha256": "1ae99886bba7f5fb440948a258fd171f87545e6e95cd877e94f3980aaef6eaf0" }, "downloads": -1, "filename": "django-layers-hr-0.3.tar.gz", "has_sig": false, "md5_digest": "6ce9a15a14f7f0e6be6ff90aec809e9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8059, "upload_time": "2015-02-05T14:00:26", "url": "https://files.pythonhosted.org/packages/33/6e/aa9ba326cddf25de108fcb6aca4679dd9e3b1908f0e5e069242457e19bdd/django-layers-hr-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "f5ada87b2afcf0e120638ca9be8fab79", "sha256": "8a8870741dc727e5f4293916e019e3a2b1202460792fec82281fcff757427ec5" }, "downloads": -1, "filename": "django_layers_hr-0.4-py2.7.egg", "has_sig": false, "md5_digest": "f5ada87b2afcf0e120638ca9be8fab79", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 12985, "upload_time": "2015-03-16T13:11:12", "url": "https://files.pythonhosted.org/packages/12/46/e374def7060e8d77e248591cf0a50f6bd4afb17f847bd80a39ec666198b0/django_layers_hr-0.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1156d01ff50439c1de411d84522a3f28", "sha256": "f4daa05809be10b25f8b5aa421f3d1c56dc5b6a0912217c9eff0d752aaf90600" }, "downloads": -1, "filename": "django-layers-hr-0.4.tar.gz", "has_sig": false, "md5_digest": "1156d01ff50439c1de411d84522a3f28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6831, "upload_time": "2015-03-16T13:11:08", "url": "https://files.pythonhosted.org/packages/3d/b7/469fd2818a6f086fbe8b19375562814805cc9d4c6cdc03c39e91b3db4c53/django-layers-hr-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "6a5cedb3feadb88da4f36664e62be8da", "sha256": "e5dde629884c179328ca94c0c6eba4392b1374330ea8201dd2765a8a0ad3e9f8" }, "downloads": -1, "filename": "django_layers_hr-0.5-py2.7.egg", "has_sig": false, "md5_digest": "6a5cedb3feadb88da4f36664e62be8da", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 24699, "upload_time": "2015-09-08T09:49:44", "url": "https://files.pythonhosted.org/packages/f9/db/7f707faa1b455a5dbe26e757d77a6dbdf7c03630bcf6bee481ecba7456e4/django_layers_hr-0.5-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "7eafae70beee1000d09a9c030e8865db", "sha256": "753d43ba6a5afa8fc04a472658ed2c5acf806cb3d7495d875ccf483ff6a35b73" }, "downloads": -1, "filename": "django-layers-hr-0.5.tar.gz", "has_sig": false, "md5_digest": "7eafae70beee1000d09a9c030e8865db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17800, "upload_time": "2015-09-08T09:49:38", "url": "https://files.pythonhosted.org/packages/f3/7a/a741151443c7bda7c7854e8fcc36f18de3bb6df0cbdf3285013397248404/django-layers-hr-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "58c608dce787f706aa0359cfeff49ef4", "sha256": "1d3c7e70c9c8d305fbc21e1fa033d2e30075f6646131c5eb6a1ef29efab0e19c" }, "downloads": -1, "filename": "django_layers_hr-0.5.1-py2.7.egg", "has_sig": false, "md5_digest": "58c608dce787f706aa0359cfeff49ef4", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 24776, "upload_time": "2015-09-08T10:48:14", "url": "https://files.pythonhosted.org/packages/85/11/63c947e81d71227e970426c7dcdc949a6c6da9c1c7038e5be876d0967845/django_layers_hr-0.5.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d04aadc7d47efc24f65282c36305ebeb", "sha256": "832e63804fc699225c01a6d8ed9afa1a35fcbde071e725e1e5bab32c2afa744c" }, "downloads": -1, "filename": "django-layers-hr-0.5.1.tar.gz", "has_sig": false, "md5_digest": "d04aadc7d47efc24f65282c36305ebeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17921, "upload_time": "2015-09-08T10:48:06", "url": "https://files.pythonhosted.org/packages/eb/b2/f3c37417bfcb1aedfa3b2815b95985daa3b2ea58cd818eb4b44990e099f6/django-layers-hr-0.5.1.tar.gz" } ], "1.10.0": [ { "comment_text": "", "digests": { "md5": "1f64ab754a661c421ee79c831670d39e", "sha256": "f79fc9a7bcc6facbd828a26aaa134945c4cc7a65232a306e2423af4b6ef50750" }, "downloads": -1, "filename": "django_layers_hr-1.10.0-py2.7.egg", "has_sig": false, "md5_digest": "1f64ab754a661c421ee79c831670d39e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 61940, "upload_time": "2016-12-19T13:37:40", "url": "https://files.pythonhosted.org/packages/cf/f8/dc04c044c4f0e553a63b02b34e4a099aeabd454286ae59aa3fa3ece36f41/django_layers_hr-1.10.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "6812087f5af6018ac414a2933c7e963f", "sha256": "1f06e3d2beb0dbd92113cb653ac936fa7d6ac66183f6bdf5e52c24d36bba8242" }, "downloads": -1, "filename": "django-layers-hr-1.10.0.tar.gz", "has_sig": false, "md5_digest": "6812087f5af6018ac414a2933c7e963f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23292, "upload_time": "2016-12-19T13:37:37", "url": "https://files.pythonhosted.org/packages/7d/58/698da0289db11049625976fbe632440add0bb7fef83b2193a584ab4deb6a/django-layers-hr-1.10.0.tar.gz" } ], "1.10.0.0": [ { "comment_text": "", "digests": { "md5": "e88c605d5cb78b08e883c342246541a3", "sha256": "a21d7fdb9b285f1259d3dab7ffcac67e2a3e0ff2ef8d861ec6b03896dbcaaf14" }, "downloads": -1, "filename": "django_layers_hr-1.10.0.0-py2.7.egg", "has_sig": false, "md5_digest": "e88c605d5cb78b08e883c342246541a3", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 61941, "upload_time": "2016-12-19T13:31:34", "url": "https://files.pythonhosted.org/packages/1a/43/ef79db4f3c86b2ef8a94cf77ab9256852c5e88cf7fabb6a6b37b82596a52/django_layers_hr-1.10.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1163a0681f9fbcdbf1cdbcd75445d25b", "sha256": "eb6eb596d60dcf20b17b32e88545c176f76725f6d43f64ee2ee4ee937995256e" }, "downloads": -1, "filename": "django-layers-hr-1.10.0.0.tar.gz", "has_sig": false, "md5_digest": "1163a0681f9fbcdbf1cdbcd75445d25b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23319, "upload_time": "2016-12-19T13:31:31", "url": "https://files.pythonhosted.org/packages/cb/bf/d8ebd52febd4fac25ef2037389135493128c143986b56846cab29ea2790d/django-layers-hr-1.10.0.0.tar.gz" } ], "1.10.1": [ { "comment_text": "", "digests": { "md5": "2dd613d9e5eb6e649be842601a97ad24", "sha256": "d59be13039354de90a5a10f48c06859198079dd9a88a8ffdea715453a58441aa" }, "downloads": -1, "filename": "django_layers_hr-1.10.1-py2.7.egg", "has_sig": false, "md5_digest": "2dd613d9e5eb6e649be842601a97ad24", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 63964, "upload_time": "2017-02-02T18:48:23", "url": "https://files.pythonhosted.org/packages/c3/eb/05ea226d4b1026a2eafe21f1a8e674b046bc8843db6f6973da0546f93806/django_layers_hr-1.10.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b8750fdf1a8b366f71554b07851c5fdd", "sha256": "0623f37c60f99e72839b6bff76d8c1d1b42194ab89ab5ed506ec1c8e41b414ce" }, "downloads": -1, "filename": "django-layers-hr-1.10.1.tar.gz", "has_sig": false, "md5_digest": "b8750fdf1a8b366f71554b07851c5fdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24528, "upload_time": "2017-02-02T18:48:18", "url": "https://files.pythonhosted.org/packages/75/ff/0650ac9db4d31121ba91786ad899ca4fca27827c201295ceb423e5179e7e/django-layers-hr-1.10.1.tar.gz" } ], "1.11.0": [ { "comment_text": "", "digests": { "md5": "c34481316dc5e3f3101adba433594ff2", "sha256": "64bb5538c80d2ba0b2d2cdd19794c953a9a766bf75b4165f3082739356f7d1b7" }, "downloads": -1, "filename": "django_layers_hr-1.11.0-py2.7.egg", "has_sig": false, "md5_digest": "c34481316dc5e3f3101adba433594ff2", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 54962, "upload_time": "2017-05-19T13:12:21", "url": "https://files.pythonhosted.org/packages/9b/b3/a862eb6b6ad0bc4b90c9e3d091b98e2788bbe7dcc2cecabbf2ffee21601c/django_layers_hr-1.11.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "2daa08e7b857131cdc588a6266138031", "sha256": "32ab3062411de3daa2c609b4b9c36939cfdc05fb19256657fb47e4f37228f251" }, "downloads": -1, "filename": "django-layers-hr-1.11.0.tar.gz", "has_sig": false, "md5_digest": "2daa08e7b857131cdc588a6266138031", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18072, "upload_time": "2017-05-19T13:12:17", "url": "https://files.pythonhosted.org/packages/31/00/64441dd1ee5ae941e2e31d8f7396a8b28b5102332068e1f96073d361be9c/django-layers-hr-1.11.0.tar.gz" } ], "1.11.1": [ { "comment_text": "", "digests": { "md5": "0859f849899e19e48c4794d06b2f04bd", "sha256": "1660d4c6a428ef30c40dde5ca79e5a00764a9c855877ff8a964dc6a4bb881642" }, "downloads": -1, "filename": "django_layers_hr-1.11.1-py2.7.egg", "has_sig": false, "md5_digest": "0859f849899e19e48c4794d06b2f04bd", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 55037, "upload_time": "2018-03-28T10:09:22", "url": "https://files.pythonhosted.org/packages/93/04/0a3c498b17ae6be262a3208de8e1d344b9106551452c5cba6d24247145a9/django_layers_hr-1.11.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "efc99f5f1dcf4c3514aee238e061d2c1", "sha256": "e0f84b17ef91fc7227fb28663cfef9771e21b15a10c0b94ee3cca48cdbfda11d" }, "downloads": -1, "filename": "django-layers-hr-1.11.1.tar.gz", "has_sig": false, "md5_digest": "efc99f5f1dcf4c3514aee238e061d2c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16121, "upload_time": "2018-03-28T10:09:19", "url": "https://files.pythonhosted.org/packages/22/68/6533345e2ca1b00b958628bb17a4481c1ea5fefaa6bd2ba3d9c7d7c166da/django-layers-hr-1.11.1.tar.gz" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "d8d03dd95835cec82d897c20c666ccfd", "sha256": "8bbfa403cdabfb54106df80e14ff659ad6b3e7556fb55011813db82aa6bd9527" }, "downloads": -1, "filename": "django_layers_hr-1.9-py2.7.egg", "has_sig": false, "md5_digest": "d8d03dd95835cec82d897c20c666ccfd", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 36984, "upload_time": "2016-11-01T16:12:54", "url": "https://files.pythonhosted.org/packages/cd/14/6fd93a2fd5bfe3de44d188965992e83331de2b4cb6516bbd26912840772a/django_layers_hr-1.9-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "4995150c3d7a856d940a521c0825389b", "sha256": "b43b86f0f2d81fc2b6140e135dce88361b31cf984c0f59621c5b1de6b90ec9ef" }, "downloads": -1, "filename": "django-layers-hr-1.9.tar.gz", "has_sig": false, "md5_digest": "4995150c3d7a856d940a521c0825389b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15418, "upload_time": "2016-11-01T16:12:50", "url": "https://files.pythonhosted.org/packages/02/a4/1a2a4793cd8e2d9ad8d1abcfe74fde41d083b202789d58b8dcd06213679c/django-layers-hr-1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0859f849899e19e48c4794d06b2f04bd", "sha256": "1660d4c6a428ef30c40dde5ca79e5a00764a9c855877ff8a964dc6a4bb881642" }, "downloads": -1, "filename": "django_layers_hr-1.11.1-py2.7.egg", "has_sig": false, "md5_digest": "0859f849899e19e48c4794d06b2f04bd", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 55037, "upload_time": "2018-03-28T10:09:22", "url": "https://files.pythonhosted.org/packages/93/04/0a3c498b17ae6be262a3208de8e1d344b9106551452c5cba6d24247145a9/django_layers_hr-1.11.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "efc99f5f1dcf4c3514aee238e061d2c1", "sha256": "e0f84b17ef91fc7227fb28663cfef9771e21b15a10c0b94ee3cca48cdbfda11d" }, "downloads": -1, "filename": "django-layers-hr-1.11.1.tar.gz", "has_sig": false, "md5_digest": "efc99f5f1dcf4c3514aee238e061d2c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16121, "upload_time": "2018-03-28T10:09:19", "url": "https://files.pythonhosted.org/packages/22/68/6533345e2ca1b00b958628bb17a4481c1ea5fefaa6bd2ba3d9c7d7c166da/django-layers-hr-1.11.1.tar.gz" } ] }