{ "info": { "author": "Loren Davie", "author_email": "code@axilent.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Djax\n====\n\n**Django / ACE Integration**\n\nDjax integrates the Django web framework with `Axilent\nACE `__. ACE is a sophisticated\ncontent targeting system that can be used for product recommendations,\nrelated content, personalization and contextual advertising.\n\nDjax links Django models with ACE content types, enabling the use of ACE\nas a CMS for a Django website. It also provides easy integration with\nACE's targeting Content Channels, and provides integration with ACE's\nuser profiling system.\n\nInstallation\n~~~~~~~~~~~~\n\nTo install Djax with Pip:\n\n::\n\n pip install Djax\n\nThen, add ``djax`` to your ``INSTALLED_APPS``.\n\nFinally, you will need to ``syncdb`` to generate Djax's tables.\n\nIntegrating ACE Published Content With Django\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn order to use content that is authored our sourced in ACE in a Django\nwebsite, integrate the desired Django model with Djax using the\nACEContent mixin.\n\n::\n\n # your-app/models.py\n\n from django.db import models\n from djax.content import ACEContent\n\n class Article(models.Model,ACEContent):\n title = models.CharField(max_length=100)\n body = models.TextField()\n \n class ACE:\n content_type = 'Article'\n field_map = {\n 'title':'title',\n 'body':'body',\n }\n\nSeveral important things are happening here:\n\n1. In addition to inheriting from ``models.Model`` like an ordinary\n Django model, the Article class also inherits from ``ACEContent``.\n This will allow Djax to identify it as a local type of content that\n should be bound to an ACE Content Type.\n2. In the ``ACE`` inner class, the ``content_type`` attribute identifies\n the ACE Content Type with which this model should be associated.\n3. In the ``ACE inner class`` the ``field_map`` dictionary defines the\n mappings between the ACE Content Type fields (the keys in the\n dictionary) and the local model's fields (the values in the\n dictionary).\n\nWhen Djax syncs with ACE, it will create or update this model with the\nmapped content from ACE.\n\nManaging Foreign Key Relations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nACE is not a relational database, and accordingly does not hold content\nto the same level of integral rigor as an RDBMS. However, it does\nprovide some means to directly link one content item to another using a\nfield type called a **Content Link**.\n\nDjax provides a way to convert an ACE Content Link into a Django foreign\nkey relationship. Let's say you have a local model that has an Author\nmodel and an Article model. The Article model has a foriegn key field\nthat points to the Author model. In ACE, the Article Content Type would\nhave a Content Link field that would be used to point at an author.\n\nThe integration can be implemented without any special work using Djax:\n\n::\n\n class Author(models.Model,ACEContent):\n first_name = models.CharField(max_length=100)\n last_name = models.CharField(max_length=100)\n \n class ACE:\n content_type = 'Author'\n field_map = {\n 'first_name':'first_name',\n 'last_name':'last_name',\n }\n \n class Article(models.Model,ACEContent):\n author = models.ForeignKey(model=Author,related_name='articles')\n title = models.CharField(max_length=100)\n body = models.TextField()\n \n class ACE:\n content_type = 'Article'\n field_map = {\n 'author':'author',\n 'title':'title',\n 'body':'body',\n }\n\nDuring a sync, incoming Content Link data from ACE will be enough to\nalert Djax to look for a local model-to-ACE Content Type mapping, and\ncreate a foreign key association in the local models.\n\nBecause the local model Article does not allow Article objects to exist\nin the database without an associated Author, it is important to ensure\nthat the Author object is sync'd to the local database first. In a bulk\nsync this will be taken care of automatically, but when syncing once\ncontent item at a time, an error will occur if the Article object is\nsync'd before the associated Author object.\n\nNullable Foreign Key Relations\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWhat if a foreign key relationship is nullable? In the example given\nabove, what if not all Articles have Authors? It's not a problem in ACE,\njust leave the appropriate Content Link field empty. But an additional\nstep is required with Djax integration:\n\n::\n\n class Article(models.Model,ACEContent):\n author = models.ForeignKey(model=Author,null=True,related_name='articles')\n title = models.CharField(max_length=100)\n body = models.TextField()\n \n class ACE:\n content_type = 'Article'\n field_map = {\n 'author':NullableForeignKeyConverter('author'),\n 'title':'title',\n 'body':'body',\n }\n\nThere are two changes in the Article model. First the author field has\nbeen marked ``null=True`` to indicate to Django that the Article model\nmay not have an Author.\n\nSecondly, the simple string ('author') indicating that the author field\nin the incoming content from ACE should be mapped to the local author\nfield has been replaced by a ``NullableForeignKeyConverter`` object.\nThis is an indication to Djax that it should apply a special process to\nthe incoming data: either find a local model that corresponds to the\nsupplied Content Link data, or leave the field null.\n\nManaging Many-to-Many Relations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nACE can also handle many-to-many relations using the Content Link List\nfield type. Let's say we have a local model that defines a many-to-many\nrelation between Publication and Author objects. In ACE, the Author\nobject would have a publication field that was a Content Link List that\nwould be used to associate it with Publications.\n\nTo implement the integration in Djax we would do this:\n\n::\n\n class Publication(models.Model,ACEContent):\n name = models.CharField(max_length=100)\n \n class ACE:\n content_type = 'Publication'\n field_map = {\n 'name':'name',\n }\n\n class Author(models.Model,ACEContent):\n first_name = models.CharField(max_length=100)\n last_name = models.CharField(max_length=100)\n publications = models.ManyToManyField(Publication,related_name='authors')\n \n class ACE:\n content_type = 'Author'\n field_map = {\n 'first_name':'first_name',\n 'last_name':'last_name',\n 'publications':M2MFieldConverter('publications'),\n }\n\nIn the Author model's ``ACE`` inner class, we have specified the\n``M2MFieldConverter`` for the publications field. This lets Djax know to\nconvert incoming Content Link List data into a local many-to-many\nrelation.\n\nImplementing Your Own Field Converters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe default behavior of a field map is to simply take the value from the\nincoming ACE content and assign that value to the recipient local model.\nThis behavior can be overridden with the use of a *FieldConverter*.\n\nA FieldConverter is an object that is placed as a value to the\ncorresponding ACE content field key, within the field map. The\nFieldConverter is just an object (it does not require any particular\nparent class). Djax will look for two specific methods on the field\nconverter object: ``to_local_model`` and ``to_ace``, and the name of the\nlocal model field, defined as ``field``.\n\nSimple Example:\n\n::\n\n class AuthorFieldConverter(object):\n \"\"\"Field converter changes string to related author (for article) and vice versa.\"\"\"\n \n field = 'author'\n \n def to_local_model(self,ace_content,ace_field_value):\n \"\"\"String to related model.\"\"\"\n return Author.objects.get(name=ace_field_value)\n \n def to_ace(self,local_model):\n \"\"\"Related model to string.\"\"\"\n return local_model.author.name\n\nIn this case the field converter looks up a related model by name and\nreturns the related model as the value to assign to the local model.\n\nA field converter may be marked as **deferred**, in which case Djax will\nensure that the local model is created *before* the conversion method is\ncalled, and will pass the local model into the conversion method as an\nargument.\n\nWith deferred converters, the return value for the ``to_local_model``\nmethod is ignored. It is up to the method to associate the value to the\nlocal model.\n\nParent / Child Deferred Example:\n\n::\n\n class MusicLabelCatalogConverter(object):\n \"\"\"Converts the bands signed to the parent label.\"\"\"\n \n field = 'bands'\n deferred = True\n \n def to_local_model(self,ace_content,ace_field_value,local_model):\n \"\"\"Gets or creates associated local band objects. Ace provides a list of band names.\"\"\"\n for band_name in ace_field_value:\n Band.objects.get_or_create(label=local_model,name=band_name)\n \n # clean up unassociated bands\n [band.delete() for band in local_model.bands.exclude(name__in=ace_field_value)]\n \n def to_ace(self,local_model):\n \"\"\"Returns a list of band names for ace.\"\"\"\n return [band.name for band in local_model.bands.all()]\n\nACEContent Methods\n~~~~~~~~~~~~~~~~~~\n\nA Django model that also inherits from ACEContent will have several\nadditional methods that allow it to be programmatically managed from a\nDjango app, if desired.\n\nACEContent.get\\_axilent\\_content\\_key\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns the local model's ACE content key. If the content does not exist\nwithin the ACE account, it will return None. The content key is a GUID\nrendered in hex format.\n\nACEContent.get\\_axilent\\_content\\_type\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns the name of the ACE Content Type for the model.\n\nACEContent.sync\\_with\\_axilent\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nForces the local model to update from content from ACE. If there is no\ncorresponding content item in the ACE account, this method will do\nnothing.\n\nACEContent.to\\_content\\_dict\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns content values as a dictionary according to the ``field_map``.\n\nACEContent.push\\_to\\_library\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPushes the local values of the content into the associated ACE library.\nThis method returns a 2-tuple of booleans, indicating 1. if the library\nwas updated and 2. if a new content item was created in the library.\n\nACEContent.push\\_to\\_graphstack\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPuhes the local values of the content directly into the associated\nGraphStack. A GraphStack in ACE is a logical container for deployed or\npublished content.\n\nACEContent.archive\n^^^^^^^^^^^^^^^^^^\n\nRemoves the content from any GraphStack where it has been deployed.\n\nACEContent.live\\_delete\n^^^^^^^^^^^^^^^^^^^^^^^\n\nRemoves the associated ACE content item from the active GraphStack where\nit is deployed.\n\nACEContent.tag\n^^^^^^^^^^^^^^\n\nTags the content item within the associated ACE library.\n\nACEContent.detag\n^^^^^^^^^^^^^^^^\n\nDe-tags the content item within the associated ACE library.\n\nACEContent.live\\_tag\n^^^^^^^^^^^^^^^^^^^^\n\nTags the content item where it has been deployed in the associated\nGraphStack.\n\nACEContent.live\\_detag\n^^^^^^^^^^^^^^^^^^^^^^\n\nDe-tags the content item where it has been deployed in the associated\nGraphStack.\n\nACEContent.reindex\\_search\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nForces search re-indexing of the deployed associated content.\n\nACEContent.trigger\\_affinity\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSends an affinity trigger for this content to ACE.\n\nACEContent.trigger\\_ban\n^^^^^^^^^^^^^^^^^^^^^^^\n\nSends a ban trigger for this content to ACE.\n\nSetting Up Djax and ACE to Handle User-Generated Content\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA common scenario is User Generated Content (UGC), in which user's of\nthe website create content, in the form of Django models, which then\nneeds to be pushed back into the ACE library for administrative review.\nDjax and ACE now support this round-trip model for content.\n\nIn the ACE project, first create a new **Content Source** for the\nContent Type that you want to round-trip. Content Sources are found in\nthe settings panel, for each content type under the Content Types\nsection of the ACE project.\n\nThe new Content Source should be of the type **Djax User Generated\nContent**. When creating the Content Source, you will need to set the\nrefresh interval, the URL pointing to the Djax install, and an auth\ntoken.\n\nIn your code, you set up your model as ``ACEContent`` as usual, defining\nthe ACE content type and the field map in the ``ACE`` subclass.\n\nEverytime the Content Source passes the refresh interval, it will query\nyour Djax install. At this point the Djax install will push the content\ninto the ACE library, either creating new content items or updating\nexisting ones.\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/Axilent/Djax", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "Djax", "package_url": "https://pypi.org/project/Djax/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Djax/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/Axilent/Djax" }, "release_url": "https://pypi.org/project/Djax/0.8.6/", "requires_dist": null, "requires_python": null, "summary": "Integrates Django projects with Axilent.", "version": "0.8.6" }, "last_serial": 1836478, "releases": { "0.6": [ { "comment_text": "", "digests": { "md5": "f5e9a29b3cf5c8e382e6e3712e0dea14", "sha256": "5b2ef5176d540a06a3897dbb448668dcff4069f3a0666fe113bebde13c814267" }, "downloads": -1, "filename": "Djax-0.6.tar.gz", "has_sig": false, "md5_digest": "f5e9a29b3cf5c8e382e6e3712e0dea14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14410, "upload_time": "2014-07-25T17:14:09", "url": "https://files.pythonhosted.org/packages/a5/8a/db0fbda7ce0e2b8fc12a8836f8888abcb3385166d8fb61224cf2700ef7df/Djax-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "4e6b06cc2dfeb9c2547c9d34b3fa03c9", "sha256": "e4e99add54cb0c3c74618dd096598cd0f95a9b35f9caf67ca9cd6f170723cafc" }, "downloads": -1, "filename": "Djax-0.6.1.tar.gz", "has_sig": false, "md5_digest": "4e6b06cc2dfeb9c2547c9d34b3fa03c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14414, "upload_time": "2014-07-25T17:28:50", "url": "https://files.pythonhosted.org/packages/ab/d3/34bbe3243e4e11679362a40fd28507356534428674f4c37ddd8b18871fab/Djax-0.6.1.tar.gz" } ], "0.6.10": [ { "comment_text": "", "digests": { "md5": "7e56aadfb353b1d8e58acb682f93a78e", "sha256": "817cccf0f5c78595c622a9573692dd1b809e2c2d8d7b54c4499233d93b45a8f4" }, "downloads": -1, "filename": "Djax-0.6.10.tar.gz", "has_sig": false, "md5_digest": "7e56aadfb353b1d8e58acb682f93a78e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20672, "upload_time": "2014-08-06T19:51:39", "url": "https://files.pythonhosted.org/packages/99/fd/a653377fda0be5adb58b1eaa51efef9abccd5793918408442adf5b49340d/Djax-0.6.10.tar.gz" } ], "0.6.11": [ { "comment_text": "", "digests": { "md5": "0ecbb8b277434606990c2a42b3c10f2d", "sha256": "13459a5f066c345eb770404fed5c250a41d4871a647e84e0f4faf77093c58bd7" }, "downloads": -1, "filename": "Djax-0.6.11.tar.gz", "has_sig": false, "md5_digest": "0ecbb8b277434606990c2a42b3c10f2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20676, "upload_time": "2014-09-02T15:57:14", "url": "https://files.pythonhosted.org/packages/0c/65/13c74f22985179d6a6f53abfc7d8074024e40d7f69328aec742b368a96be/Djax-0.6.11.tar.gz" } ], "0.6.12": [ { "comment_text": "", "digests": { "md5": "12cf8775f063b40e76bba191fd4e5d53", "sha256": "bc5b4c9ea90fc536208cd3eb3207e6b0bd0188fe34408bd38c9d8cca3733512c" }, "downloads": -1, "filename": "Djax-0.6.12.tar.gz", "has_sig": false, "md5_digest": "12cf8775f063b40e76bba191fd4e5d53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20786, "upload_time": "2014-09-02T16:27:05", "url": "https://files.pythonhosted.org/packages/e8/e5/6fa240fe8ad32b3df7a55b996400214ca4e2147821261893a9f5033f5de8/Djax-0.6.12.tar.gz" } ], "0.6.13": [ { "comment_text": "", "digests": { "md5": "39cc36962071ebc8b9a608ea696d0f6d", "sha256": "945cd57784cd60b0cb06a19fb0592ecc5bf9e5d191b0bd4435198d2ac6cbee5d" }, "downloads": -1, "filename": "Djax-0.6.13.tar.gz", "has_sig": false, "md5_digest": "39cc36962071ebc8b9a608ea696d0f6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20797, "upload_time": "2014-09-02T16:59:12", "url": "https://files.pythonhosted.org/packages/71/02/42075e03814944b4ec66264db4fc110f437b55c337534e0a2caee0786160/Djax-0.6.13.tar.gz" } ], "0.6.14": [ { "comment_text": "", "digests": { "md5": "f50186f25a6596452e307ed92560bf93", "sha256": "2848df6d7e9e232ffea963bf8f6519f737dd9ba84279487e4e49d610d9d1d340" }, "downloads": -1, "filename": "Djax-0.6.14.tar.gz", "has_sig": false, "md5_digest": "f50186f25a6596452e307ed92560bf93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20834, "upload_time": "2014-09-02T17:10:55", "url": "https://files.pythonhosted.org/packages/f8/d6/8f305920b0c959ff2a1743fba6f986a3918d0167caa0d6675d01785cd588/Djax-0.6.14.tar.gz" } ], "0.6.15": [ { "comment_text": "", "digests": { "md5": "a81a53f0f9c6d686c0db43fe74081cc8", "sha256": "95e548a5b0cb43f26980733f8ec481d5c7fe560839b61fab43bb9f5e54e4c5d2" }, "downloads": -1, "filename": "Djax-0.6.15.tar.gz", "has_sig": false, "md5_digest": "a81a53f0f9c6d686c0db43fe74081cc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21445, "upload_time": "2014-09-30T15:27:19", "url": "https://files.pythonhosted.org/packages/52/3c/c07b91a1066d43af178d4381f712a737315b731e1bf734fa57f8a82c4596/Djax-0.6.15.tar.gz" } ], "0.6.16": [ { "comment_text": "", "digests": { "md5": "05e13fc3cb2c3756ab422bf0e58aa0eb", "sha256": "d81f1bc71ac54bc94ad29ed21f03924d08f00f87d03b280db70fb2f9398c3f20" }, "downloads": -1, "filename": "Djax-0.6.16.tar.gz", "has_sig": false, "md5_digest": "05e13fc3cb2c3756ab422bf0e58aa0eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21439, "upload_time": "2014-09-30T15:28:38", "url": "https://files.pythonhosted.org/packages/9e/b7/609b7ace732899f2eea91692d063741084e8b142acb8d0c870489b4ff38a/Djax-0.6.16.tar.gz" } ], "0.6.17": [ { "comment_text": "", "digests": { "md5": "436c6c211c86f8982fb8a84daf3dd018", "sha256": "57a507d4adec47e25ec81c0fc0ddd79f0c47b1ed4bb41d339fa394ed2d81e7cc" }, "downloads": -1, "filename": "Djax-0.6.17.tar.gz", "has_sig": false, "md5_digest": "436c6c211c86f8982fb8a84daf3dd018", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21457, "upload_time": "2014-09-30T15:59:08", "url": "https://files.pythonhosted.org/packages/4c/bc/aa00a66696f458a7a53414fa7e7a28e95813d18c5b25b623e58bf15bfd32/Djax-0.6.17.tar.gz" } ], "0.6.18": [ { "comment_text": "", "digests": { "md5": "656f230ad236773e5ca2937c9662d13e", "sha256": "f6b9e09dbaefdc2dc75c2072b861cd283284583ef55029c0b3b1cf32a29240d3" }, "downloads": -1, "filename": "Djax-0.6.18.tar.gz", "has_sig": false, "md5_digest": "656f230ad236773e5ca2937c9662d13e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21451, "upload_time": "2014-09-30T16:03:15", "url": "https://files.pythonhosted.org/packages/ec/e6/3c8fb6b73e247fd11196eec353a397c8c3760d9864dec2a66680d339496b/Djax-0.6.18.tar.gz" } ], "0.6.19": [ { "comment_text": "", "digests": { "md5": "63d3d3dc45f7ec64e20630ae99b0a0b2", "sha256": "c320884927c062a61bba3a59d6235cc2ceed1ee13d4140629ee479b0f7a6ceb6" }, "downloads": -1, "filename": "Djax-0.6.19.tar.gz", "has_sig": false, "md5_digest": "63d3d3dc45f7ec64e20630ae99b0a0b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21467, "upload_time": "2014-09-30T16:05:39", "url": "https://files.pythonhosted.org/packages/b9/4c/39bd4262dc3f15e8b1c1e0c6b588556e31dccd8e136245245e7be86fcb1d/Djax-0.6.19.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "0c4cc506430ab90ce1512f4791817090", "sha256": "6ee5c4c2a0946a3954bb697731a8b6242745cc01acdac7658984d0e5c5aee349" }, "downloads": -1, "filename": "Djax-0.6.2.tar.gz", "has_sig": false, "md5_digest": "0c4cc506430ab90ce1512f4791817090", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19332, "upload_time": "2014-07-25T17:34:14", "url": "https://files.pythonhosted.org/packages/05/8f/e6a7a71e847100a9362485467da5c07b416b7282c1886ff9be8c89dafd02/Djax-0.6.2.tar.gz" } ], "0.6.20": [ { "comment_text": "", "digests": { "md5": "d1a06fca009b966fd82be22e77a1c3ae", "sha256": "21a56d221e0863374f5aa16942c69b97a248539e49d8aaec05895fbae979b230" }, "downloads": -1, "filename": "Djax-0.6.20.tar.gz", "has_sig": false, "md5_digest": "d1a06fca009b966fd82be22e77a1c3ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21466, "upload_time": "2014-10-01T20:35:37", "url": "https://files.pythonhosted.org/packages/67/68/54bdbef9f914c39f455957d3cad4a59192c1007a60dc24333969b037b685/Djax-0.6.20.tar.gz" } ], "0.6.21": [ { "comment_text": "", "digests": { "md5": "0a3a119ecebb30b617739ba36e928dc2", "sha256": "3ffef931818e49fd9e6987f4a6f91e5a95b0141927855457382737994a09fed0" }, "downloads": -1, "filename": "Djax-0.6.21.tar.gz", "has_sig": false, "md5_digest": "0a3a119ecebb30b617739ba36e928dc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21497, "upload_time": "2014-10-02T13:22:43", "url": "https://files.pythonhosted.org/packages/f7/ad/2f8d47b39f2aaf3cc07d4955f4c3d8e20f12b4951e01e3f5dea55273371f/Djax-0.6.21.tar.gz" } ], "0.6.22": [ { "comment_text": "", "digests": { "md5": "be058a151fbc07f446869fd56d96d21e", "sha256": "aa11e5b08dcc5a02f37aeb3f101f0ac59a2dae29fbc21c4ca17e9d3c956d94f9" }, "downloads": -1, "filename": "Djax-0.6.22.tar.gz", "has_sig": false, "md5_digest": "be058a151fbc07f446869fd56d96d21e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21502, "upload_time": "2014-10-02T13:28:36", "url": "https://files.pythonhosted.org/packages/f6/f7/5d4ad45deac9699da24f347fd8dbb4e81009e10af4f3396361392741db4a/Djax-0.6.22.tar.gz" } ], "0.6.23": [ { "comment_text": "", "digests": { "md5": "c1db6e235c3cc83a54abd217b0167130", "sha256": "1477a9a41d7b1362a6a48f7568a2192b734c8c5068d3f720ded8fc565a69337f" }, "downloads": -1, "filename": "Djax-0.6.23.tar.gz", "has_sig": false, "md5_digest": "c1db6e235c3cc83a54abd217b0167130", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21527, "upload_time": "2014-10-02T13:34:27", "url": "https://files.pythonhosted.org/packages/14/91/9aee4e937253ecd1075eb8294a0414983dd9f8098dd199f432a8c53aea26/Djax-0.6.23.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "f40a6f5501282974294de302559363ed", "sha256": "e621c10a7bec04762e33075f0572a60612ab185486dfb60032a883958e811685" }, "downloads": -1, "filename": "Djax-0.6.3.tar.gz", "has_sig": false, "md5_digest": "f40a6f5501282974294de302559363ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20574, "upload_time": "2014-07-25T17:45:02", "url": "https://files.pythonhosted.org/packages/e6/0e/e128fbbdf1b51b3f8292c83c2a2c1036fb76720fdf79f38369829dd5ddfc/Djax-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "b006833c26980583039e6d6664c283c3", "sha256": "f72b0d9d921b4b6bade7507fba51955b2c00e65156126daf62b7d6f536dee58c" }, "downloads": -1, "filename": "Djax-0.6.4.tar.gz", "has_sig": false, "md5_digest": "b006833c26980583039e6d6664c283c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20603, "upload_time": "2014-07-25T17:59:23", "url": "https://files.pythonhosted.org/packages/9d/14/99f1454a25a96381edda097e1ee18551a74097964fdd8368dbdcb93c289e/Djax-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "809ac6347cd5367b64cbc08bcc678a53", "sha256": "dd8224f4d3f09cc2a87189bb8414cce00fd507fd2900fd0d2e16a9008cd826c0" }, "downloads": -1, "filename": "Djax-0.6.5.tar.gz", "has_sig": false, "md5_digest": "809ac6347cd5367b64cbc08bcc678a53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20611, "upload_time": "2014-07-25T18:06:14", "url": "https://files.pythonhosted.org/packages/08/2d/a0166479027d81f37b2832171fd76f70c5deceed63dcd336641c0a733a6d/Djax-0.6.5.tar.gz" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "7955e13a5eae71c8d67fff8e65479738", "sha256": "597a70031fffa5a19c2259faebc93ccf139b880a5a5fce19aada4364f7da6c1c" }, "downloads": -1, "filename": "Djax-0.6.6.tar.gz", "has_sig": false, "md5_digest": "7955e13a5eae71c8d67fff8e65479738", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20605, "upload_time": "2014-07-25T18:09:11", "url": "https://files.pythonhosted.org/packages/7b/b8/13581f40406307e6e202656f3c996a640e9c5d00f530cb843688eaea5a26/Djax-0.6.6.tar.gz" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "ca6781792249517618523f660af18995", "sha256": "12bae097ca263cdb82dbc4a69c9247edcaaca1706dfe453dbc02f239932ec842" }, "downloads": -1, "filename": "Djax-0.6.7.tar.gz", "has_sig": false, "md5_digest": "ca6781792249517618523f660af18995", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20617, "upload_time": "2014-07-25T18:14:22", "url": "https://files.pythonhosted.org/packages/34/9c/7e699a54aef3c68bcf9977f880d425943467609122e1ee4e4159c8d0e293/Djax-0.6.7.tar.gz" } ], "0.6.8": [ { "comment_text": "", "digests": { "md5": "6d964e778b993e3669978b9afd1a4186", "sha256": "c33bf7cc9cdbf1de0b0dc6f77031efeabbf0d56db006cd482190b8c9afeda13b" }, "downloads": -1, "filename": "Djax-0.6.8.tar.gz", "has_sig": false, "md5_digest": "6d964e778b993e3669978b9afd1a4186", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20623, "upload_time": "2014-07-25T18:18:35", "url": "https://files.pythonhosted.org/packages/39/97/4804f2c005594448a4a0d89c305c8c57e1b2cf732da1e7297da47db37188/Djax-0.6.8.tar.gz" } ], "0.6.9": [ { "comment_text": "", "digests": { "md5": "365090ad7d2866a417de959139a15b44", "sha256": "8a3e178ee9407745905556e1b7fcf676a1935728ca5f22e9759a7d4fc4cff378" }, "downloads": -1, "filename": "Djax-0.6.9.tar.gz", "has_sig": false, "md5_digest": "365090ad7d2866a417de959139a15b44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20668, "upload_time": "2014-08-06T13:19:26", "url": "https://files.pythonhosted.org/packages/d1/e7/584c871fb3c72af3a4020be66380aed25e4e0b38bbc638e342412519007b/Djax-0.6.9.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "eb52a4461cf72010cc955033ec91f75c", "sha256": "86f6b58b5edbeea1205460a506fc8f84fb841d30df620c73d3657bd1c28918ff" }, "downloads": -1, "filename": "Djax-0.7.0.tar.gz", "has_sig": false, "md5_digest": "eb52a4461cf72010cc955033ec91f75c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21046, "upload_time": "2014-10-02T14:05:46", "url": "https://files.pythonhosted.org/packages/20/e1/3a54fd799287c36e0ac7022904facef8908abfd986b90a4a27d6228f931c/Djax-0.7.0.tar.gz" } ], "0.7.0.1": [], "0.7.1": [], "0.7.2": [ { "comment_text": "", "digests": { "md5": "048df16611cc67f8ee6337b4147ce06a", "sha256": "d72b1062c568579db3fcd06d7f61ba1716581c5bb09f7ccae9719edac5195d73" }, "downloads": -1, "filename": "Djax-0.7.2.tar.gz", "has_sig": false, "md5_digest": "048df16611cc67f8ee6337b4147ce06a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22510, "upload_time": "2015-01-25T19:25:42", "url": "https://files.pythonhosted.org/packages/c1/ff/6b1e159114b710185bcfd443ab807e2a2e0a45479c2b0bb3368b6952b0cf/Djax-0.7.2.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "7e02b924452f380f9ac03ada1b80989a", "sha256": "8ac59eac5dabf63da1c4f50e25bbe4041a7292e39ddd94f6726e31db2e20afd9" }, "downloads": -1, "filename": "Djax-0.8.tar.gz", "has_sig": false, "md5_digest": "7e02b924452f380f9ac03ada1b80989a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22520, "upload_time": "2015-02-07T19:35:37", "url": "https://files.pythonhosted.org/packages/62/36/165728bf739a49503628e15d25d0a3a326abb55568bd7480c79b319c0ac4/Djax-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "5ad61b8e7fe096070f25c15fdc1e0891", "sha256": "901423c84fc4b1857d66c3d2951f0ba3ed16fed62eca5d609aea4436fa2fe5e6" }, "downloads": -1, "filename": "Djax-0.8.1.tar.gz", "has_sig": false, "md5_digest": "5ad61b8e7fe096070f25c15fdc1e0891", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23543, "upload_time": "2015-02-07T19:42:18", "url": "https://files.pythonhosted.org/packages/c1/be/5e2e35a9d4483a70bcccc1fcd97f81e98ac49329da62d6dfe4da2462803a/Djax-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "101a72af46270ecaad2920766c873def", "sha256": "33ff13cc38011d6a79a37283ac02e702094f1cd5d56c6fb372bb965a87766ebe" }, "downloads": -1, "filename": "Djax-0.8.2.tar.gz", "has_sig": false, "md5_digest": "101a72af46270ecaad2920766c873def", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23549, "upload_time": "2015-02-07T19:43:39", "url": "https://files.pythonhosted.org/packages/cf/a6/8639b52b61c47a18d11d39d7911c0e7f9d35817f8be4ce23657442658d20/Djax-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "95036959ab5ee1443d1c7352b5bfcbdd", "sha256": "a4a8ae85d6258bb38e699a5fb6c8393e4b732e2f4bb2dc76b0df31f9323fe997" }, "downloads": -1, "filename": "Djax-0.8.3.tar.gz", "has_sig": false, "md5_digest": "95036959ab5ee1443d1c7352b5bfcbdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22652, "upload_time": "2015-02-07T19:46:49", "url": "https://files.pythonhosted.org/packages/4c/09/da04d2e8172dc8cbfa1626a1ede467b04d7e19632749694a0ab0f89be114/Djax-0.8.3.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "fe854a465b28ca5aa232de6b5dc730ed", "sha256": "c510428895c985d9a23de48ad65bc72b75005be5056f1a5df591dcbb9e2b80c7" }, "downloads": -1, "filename": "Djax-0.8.4.tar.gz", "has_sig": false, "md5_digest": "fe854a465b28ca5aa232de6b5dc730ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23401, "upload_time": "2015-06-21T19:17:31", "url": "https://files.pythonhosted.org/packages/b6/a9/050e254db57190ebfb5f1bbcc952661defd5ac823040cb4d948fbd12d76e/Djax-0.8.4.tar.gz" } ], "0.8.4.1": [ { "comment_text": "", "digests": { "md5": "48937536133c6413f544adcc5b67729f", "sha256": "1cba08c153c64206cc7d99919319627e3ed81229a450a00ba8892333b3848589" }, "downloads": -1, "filename": "Djax-0.8.4.1.tar.gz", "has_sig": false, "md5_digest": "48937536133c6413f544adcc5b67729f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23380, "upload_time": "2015-09-07T01:56:21", "url": "https://files.pythonhosted.org/packages/32/03/99713c7166e41b28f1c64eecc5f35b67d995cde365108108fe574243d43d/Djax-0.8.4.1.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "032a1fbbab19e190eb41062e2f193012", "sha256": "df4e76f3dc8842b5d24616218cd2af9ff469e37ac82d331a03fd4726afcf0180" }, "downloads": -1, "filename": "Djax-0.8.5.tar.gz", "has_sig": false, "md5_digest": "032a1fbbab19e190eb41062e2f193012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24307, "upload_time": "2015-10-03T17:07:37", "url": "https://files.pythonhosted.org/packages/72/10/5b922dd5c1d846226fe06a13ac917034b588c27f3e50e00563008a1d6b1b/Djax-0.8.5.tar.gz" } ], "0.8.5.1": [ { "comment_text": "", "digests": { "md5": "bf8a5f5616de42299766ff58f8180a6b", "sha256": "dd887af95195a2eef2e556cdacf0c5b54210ee92654dc705fc6ed6ba6916cfe1" }, "downloads": -1, "filename": "Djax-0.8.5.1.tar.gz", "has_sig": false, "md5_digest": "bf8a5f5616de42299766ff58f8180a6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24387, "upload_time": "2015-10-07T19:19:31", "url": "https://files.pythonhosted.org/packages/d2/a5/9f12889cf302a9a7b505768ac00af1b8c4d34ba3e674bc7bb52d016f2a73/Djax-0.8.5.1.tar.gz" } ], "0.8.6": [ { "comment_text": "", "digests": { "md5": "614fbcf62cd4b08b651b90f4058aa3fc", "sha256": "2b912cc32a880b934e24d4132a9a67fb436af577ab85809566f4f93dcee243c3" }, "downloads": -1, "filename": "Djax-0.8.6.tar.gz", "has_sig": false, "md5_digest": "614fbcf62cd4b08b651b90f4058aa3fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24379, "upload_time": "2015-11-27T16:24:49", "url": "https://files.pythonhosted.org/packages/44/1c/c49ec9129f50c2bc458bb9beb1dbd5b6b67c568b41d3744be43d1031fbce/Djax-0.8.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "614fbcf62cd4b08b651b90f4058aa3fc", "sha256": "2b912cc32a880b934e24d4132a9a67fb436af577ab85809566f4f93dcee243c3" }, "downloads": -1, "filename": "Djax-0.8.6.tar.gz", "has_sig": false, "md5_digest": "614fbcf62cd4b08b651b90f4058aa3fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24379, "upload_time": "2015-11-27T16:24:49", "url": "https://files.pythonhosted.org/packages/44/1c/c49ec9129f50c2bc458bb9beb1dbd5b6b67c568b41d3744be43d1031fbce/Djax-0.8.6.tar.gz" } ] }