{
"info": {
"author": "Eliot Berriot",
"author_email": "contact@eliotberriot.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 1.7",
"Framework :: Django :: 1.8",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Topic :: Utilities"
],
"description": "Django-navutils\n~~~~~~~~~~~~~~~\n\n**Note**: this package is still in beta. It has been successfully used in a few projects of my own. However, API may be subject to backward incompatible changes until the first major version is released.\n\nDjango-navutils is a lightweight package for handling menu and breadcrumbs inside your django project.\n\n.. contents::\n :local:\n :depth: 2\n\nFeatures\n========\n\n- No database involved (unless you want it): menus and breadcrumbs are plain old python code\n- Highly customizable\n- Conditionnal menu items display: you want to show a menu link to authenticated users only ? Anonymous ? Staff members ? A custom criteria ? You're covered !\n- i18n-friendly: you can rely on usual django translation mechanisms\n- Unlimited menus\n- Semi-automatic current menu node detection\n\nRequirements\n============\n\n- Python >= 2.7 or >= 3.3\n- Django >= 1.7\n\nThe menu system may be integrated in any project, but the breadcrumbs part requires\nthat you use class-based views.\n\nInstall\n=======\n\nPackage is available on pip and can be installed via ``pip install django-navutils``.\n\nYou'll also have to add ``navutils`` to your ``settings.INSTALLED_APPS``\n\nAlso add the following to ``settings.CONTEXT_PROCESSORS``:\n\n.. code:: python\n\n CONTEXT_PROCESSORS = (\n # ...\n 'navutils.context_processors.menus',\n )\n\nUsage\n=====\n\nMenus\n*****\n\nNavutils represents menus using ``Menu`` and ``Node`` instances, each menu being a collection of\nnode instances representing a menu link. Nodes may have children, which are also ``Node`` instances.\n\nLet's see a minimal example.\n\n``yourapp/menu.py``:\n\n.. code:: python\n\n from navutils import menu\n\n main_menu = menu.Menu('main')\n menu.register(main_menu)\n\n # will be shown to everybody\n blog = menu.Node(id='blog', label='Blog', pattern_name='blog:index')\n main_menu.register(blog)\n\n # nodes created with a pattern_name argument will use django reverse\n assert blog.get_url() == '/blog'\n\n # if you want to disable reversion, use the url argument\n django = menu.Node(id='django',\n label='Django project',\n url='http://djangoproject.com',\n link_attrs={'target': '_blank'})\n\n # Each node instance can accept an arbitrary number of children\n blog.add(\n menu.Node(id='last_entries',\n label='Last entries',\n pattern_name='blog:last_entries')\n )\n blog.add(\n menu.Node(id='archives', label='Archives', pattern_name='blog:archives')\n )\n\n # will be shown to anonymous users only\n login = menu.AnonymousNode(id='login',\n label='Login',\n pattern_name='accounts_login',\n link_attrs={'class': 'big-button'})\n main_menu.register(login)\n\n # will be shown to authenticated users only\n logout = menu.AuthenticatedNode(id='logout',\n label='Logout',\n pattern_name='accounts_logout')\n main_menu.register(logout)\n\n\n``yourapp/templates/index.html``::\n\n {% load navutils_tags %}\n {% render_menu menu=menus.main user=request.user %}\n\nFor an anonymous user, this would output something like:\n\n.. code:: html\n\n \n \n \n\n\nYou can also directly set children nodes on parent instanciation with the ``children`` argument:\n\n.. code:: python\n\n user = menu.Node(\n id='user',\n label='Greetings',\n pattern_name='user:dashboard',\n children=[\n menu.Node(id='logout', label='Logout', pattern_name='user:logout'),\n\n # you can nest children indefinitely\n menu.Node(\n id='settings',\n label='Settings',\n pattern_name='user:settings',\n children = [\n menu.Node(id='newsletter',\n label='Newsletter',\n pattern_name='user:settings:newsletter')\n ],\n ),\n ]\n )\n\nNodes can be customized in many ways:\n\n.. code:: python\n\n heavily_customized_node = menu.Node(\n 'customized',\n 'My custom menu', # Supports arbitrary template values as well\n # like {{ request.user }}\n url='#', # Supports arbitrary template values as well\n # like {{ request.user }}\n\n # a custom CSS class that will be applied to the node on rendering\n css_class='custom-class',\n\n # the title attribute\n title='click me!',\n\n # a path to a custom template for rendering the node\n # it's also possible to globally specify a custom template by naming\n # your template '/templates/navutils/node.html'\n template='myapp/menu/mynode.html',\n\n # extra context you can use in your node template\n context={'foo': 'bar'},\n\n # a dict of attributes that will be applied as HTML attributes on the \n attrs = {'style': 'background-color: white;'}\n\n # a dict of attributes that will be applied as HTML attributes on the \n link_attrs = {'target': '_blank', 'data-something': 'fancy-stuff'}\n )\n\nCurrent node\n------------\n\nYou'll probably want to highlight the current node in some way. Navutils provide\na view mixin you an inherit from in order to achieve this.\n\nAssuming the following menu:\n\n.. code:: python\n\n from navutils import menu\n\n main_menu = menu.Menu(id='main')\n menu.register(main_menu)\n\n login = menu.Node(id='login', label='Login', pattern_name='account_login')\n main_menu.register(login)\n\n\nYou can bind a view to a menu node with the following code:\n\n.. code:: python\n\n from navutils import MenuMixin\n\n class Login(MenuMixin, TemplateView):\n current_menu_item = 'login'\n\n\nUnder the hood, the mixin will pass the value to the context and a `current` class will be added\n to the login node if the view is displayed. Note that you can achieve the same result\n with django function-based views, as long as you manually pass the node identifier in the context,\n under the `current_menu_item` key.\n\nNode reference\n--------------\n\nNavutils provide a few node subclasses that address common use cases.\n\nNode\n++++\n\nThe base Node type, will be displayed to anybody.\n\nAnonymousNode\n+++++++++++++\n\nDisplayed to anonymous users only.\n\nAuthenticatedNode\n+++++++++++++++++\n\nDisplayd to authenticated users only.\n\nStaffNode\n+++++++++\n\nDisplayed to staff users/superusers only.\n\nPermissionNode\n++++++++++++++\n\nDisplayed to users that have the given permission. Usage:\n\n.. code:: python\n\n vip_node = menu.PermissionNode('vip',\n label='VIP Area',\n pattern_name='vip:index',\n permission='access_vip_area')\n\nAllPermissionsNode\n++++++++++++++++++\n\nDisplayed to users that match a list of permission. Usage:\n\n.. code:: python\n\n permissions = ['myapp.access_vip_area', 'myapp.drink_champagne']\n champagne_node = menu.AllPermissionsNode('champagne',\n label='Champagne!',\n pattern_name='vip:champagne',\n permissions=permissions)\n\nAnyPermissionsNode\n++++++++++++++++++\n\nDisplayed to users that match any given permission. Usage:\n\n.. code:: python\n\n permissions = ['myapp.can_party', 'myapp.can_have_fun']\n have_a_good_time = menu.AnyPermissionsNode('good-time',\n label='Have a good time',\n pattern_name='good_time',\n permissions=permissions)\n\n\nPassTestNode\n++++++++++++\n\nDisplayed to users that match a custom test. Usage:\n\n.. code:: python\n\n def can_drink_alcohol(user, context):\n return user.age >= 21 or user.looks_mature_for_his_age\n\n drink_alcohol = menu.PassTestNode('drink',\n label='Have a beer',\n pattern_name='beer',\n test=can_drink_alcohol)\n\nIf it's not enough, you can also override the default templates:\n\n- ``navutils/menu.html`` : the menu wrapper that loop through the nodes\n- ``navutils/node.html`` : called for displaying each node instance\n\nAnd of course, you're free to create your own sub-classes.\n\nBreadcrumbs\n***********\n\nBreadcrumbs are set up into views, and therefore can only be used with class-based views.\n\nFirst of all, you'll probably want to define a base mixin for all your views:\n\n.. code:: python\n\n from navutils import BreadcrumbsMixin, Breadcrumb\n\n class BaseMixin(BreadcrumbsMixin):\n def get_breadcrumbs(self):\n breadcrumbs = super(BaseMixin, self).get_breadcrumbs()\n breadcrumbs.append(Breadcrumb('Home', url='/'))\n return breadcrumbs\n\nThen, you can inherit from this view everywhere:\n\n.. code:: python\n\n # breadcrumbs = Home > Blog\n class BlogView(BaseMixin):\n title = 'Blog'\n\n\n # breadcrumbs = Home > Logout\n class LogoutView(BaseMixin):\n title = 'Logout'\n\n\nBy default, the last element of the breadcrumb is deduced from the ``title`` attribute of the view.\nHowever, for a complex hierarchy, you are free to override the ``get_breadcrumbs`` method:\n\n.. code:: python\n\n # you can trigger url reversing via pattern_name, as for menu nodes\n class BlogMixin(BaseMixin)\n def get_breadcrumbs(self):\n breadcrumbs = super(BlogMixin, self).get_breadcrumbs()\n breadcrumbs.append(Breadcrumb('Blog', pattern_name='blog:index'))\n return breadcrumbs\n\n\n # breadcrumbs = Home > Blog > Last entries\n class BlogIndex(BlogMixin):\n title = 'Last entries'\n\n\n # for dynamic titles, just override the get_title method\n # breadcrumbs = Home > Blog > My category name\n class CategoryDetail(BlogMixin, DetailView):\n\n model = Category\n\n def get_title(self):\n # assuming your Category model has a title field\n return self.object.title\n\n\nThe last step is to render the breadcrumbs in your template. The provided mixin takes\ncare with passing data in the context, so all you need is::\n\n {% load navutils_tags %}\n\n {% render_breadcrumbs breadcrumbs %}\n\nThe breadcrumbs part of navutils is bundled with two templates, feel free to override them:\n\n- ``navutils/breadcrumbs.html``: the breadcrumbs wrapper\n- ``navutils/crumb.html``: used to render each crumb\n\nThat's it !\n\nChangelog\n=========\n\nSee `CHANGES.rst\n`_.\n\nLicense\n=======\n\nProject is licensed under BSD license.\n\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/EliotBerriot/django-navutils",
"keywords": "",
"license": "BSD License",
"maintainer": "Eliot Berriot",
"maintainer_email": "contact@eliotberriot.com",
"name": "django-navutils",
"package_url": "https://pypi.org/project/django-navutils/",
"platform": "any",
"project_url": "https://pypi.org/project/django-navutils/",
"project_urls": {
"Homepage": "http://github.com/EliotBerriot/django-navutils"
},
"release_url": "https://pypi.org/project/django-navutils/0.7/",
"requires_dist": [
"persisting-theory"
],
"requires_python": "",
"summary": "A lightweight package for handling menus and breadcrumbs in your django project",
"version": "0.7"
},
"last_serial": 4854003,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "49a6438dc62e081119ad4dd43ae6a06c",
"sha256": "bdb0783db2c4ec75eec1d68d59e5339939ad192d6c98ab4ca9e74b0dfb25fe99"
},
"downloads": -1,
"filename": "django-navutils-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "49a6438dc62e081119ad4dd43ae6a06c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8928,
"upload_time": "2015-05-21T00:13:12",
"url": "https://files.pythonhosted.org/packages/d3/34/e004181d68ee056efa77962abbb9045d5a9a14f516c3cfa4adbfe20ca689/django-navutils-0.1.0.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "21e8874d1e4c1a562a934d150e906b68",
"sha256": "6e57edfc299f361ee66ce33e55abd73074995d2f59034f6845d46676eff7dcb7"
},
"downloads": -1,
"filename": "django-navutils-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "21e8874d1e4c1a562a934d150e906b68",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8957,
"upload_time": "2015-05-21T08:07:39",
"url": "https://files.pythonhosted.org/packages/dd/8f/41805dfaa8b4e737ff48997ec57b25a700a0c7801b6f5353b19c8fe09ab4/django-navutils-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "5b7b54fa1d20eeb664c91767888355a1",
"sha256": "049e5d837f9233a41b71799c164b167556d5b961be663dde8aa9710a91d4babf"
},
"downloads": -1,
"filename": "django-navutils-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "5b7b54fa1d20eeb664c91767888355a1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10110,
"upload_time": "2015-05-21T08:20:45",
"url": "https://files.pythonhosted.org/packages/c3/3e/2a59b08139335d6c64d4188626a44f75693464b4c98cdb9d353a8addd446/django-navutils-0.1.2.tar.gz"
}
],
"0.1.3": [
{
"comment_text": "",
"digests": {
"md5": "16ad3d179d5c3ffc4eee67f4e9bdea2f",
"sha256": "5169d1d3bb7596f7e445e38bed8320f9e69eb2e3051ee0e19462e5060b07f8dc"
},
"downloads": -1,
"filename": "django-navutils-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "16ad3d179d5c3ffc4eee67f4e9bdea2f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10697,
"upload_time": "2015-05-21T09:49:52",
"url": "https://files.pythonhosted.org/packages/04/31/3c798954baf16014474a51f577915fc134de20cd1c8d88713f96f93a35ba/django-navutils-0.1.3.tar.gz"
}
],
"0.1.4": [
{
"comment_text": "",
"digests": {
"md5": "49bf482602beb69b4cc02e59a20c9ce5",
"sha256": "2063528ab466f5df5071f801ae1160138cf4d3f826b57ec3a28e745fa3a403ed"
},
"downloads": -1,
"filename": "django-navutils-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "49bf482602beb69b4cc02e59a20c9ce5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10734,
"upload_time": "2015-05-21T12:37:42",
"url": "https://files.pythonhosted.org/packages/5a/b2/b76d283c23c1e3f979e97a459a7db5513f7683f0e842d2172ac076880b90/django-navutils-0.1.4.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "bc31902c04334a60b3798aab5f8fa949",
"sha256": "3315b850551f73b8721a7429ce3739313ce5256b0b89ad08c83887f1df1d5d05"
},
"downloads": -1,
"filename": "django-navutils-0.2.tar.gz",
"has_sig": false,
"md5_digest": "bc31902c04334a60b3798aab5f8fa949",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11403,
"upload_time": "2015-05-24T18:25:40",
"url": "https://files.pythonhosted.org/packages/e2/41/c6e9fea1744159307d2b254a1073bf83d6e029861373e9a2859d53157c54/django-navutils-0.2.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "094c29e005a446c6508a4698c4c80802",
"sha256": "47bd0caf6b189a3e5e7cae92bc74dd3266233fca4668336af980a8e759e34774"
},
"downloads": -1,
"filename": "django-navutils-0.3.tar.gz",
"has_sig": false,
"md5_digest": "094c29e005a446c6508a4698c4c80802",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13680,
"upload_time": "2015-06-03T21:07:00",
"url": "https://files.pythonhosted.org/packages/f7/97/13bd20b6b897ace856afaa72093192861e54a680857400506deaca1b5e28/django-navutils-0.3.tar.gz"
}
],
"0.4": [
{
"comment_text": "",
"digests": {
"md5": "0ea62352940f414480e7b0e07387c886",
"sha256": "c3adc6bd15b7f9bbf5ed2f9d664efc5948099a9c2c1b67919dee02d3abc8cc81"
},
"downloads": -1,
"filename": "django-navutils-0.4.tar.gz",
"has_sig": false,
"md5_digest": "0ea62352940f414480e7b0e07387c886",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13886,
"upload_time": "2015-06-19T09:56:25",
"url": "https://files.pythonhosted.org/packages/c5/21/ea1f91053fb633404ca7be4aa3e419cea87197ef5c7cec58fc47521a2817/django-navutils-0.4.tar.gz"
}
],
"0.5": [
{
"comment_text": "",
"digests": {
"md5": "312db76ddcece4b355ed0aa46bec7d48",
"sha256": "b916581fb21baa36336a1acbdb4235d340d6a301de96e8d85ce2660ad217a34a"
},
"downloads": -1,
"filename": "django-navutils-0.5.tar.gz",
"has_sig": false,
"md5_digest": "312db76ddcece4b355ed0aa46bec7d48",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13929,
"upload_time": "2015-07-22T08:36:52",
"url": "https://files.pythonhosted.org/packages/13/a3/ef7a08f0d6d881d3de61b19694e3e797686b15eb6e1f924e3cbe83f08a06/django-navutils-0.5.tar.gz"
}
],
"0.5.1": [
{
"comment_text": "",
"digests": {
"md5": "9bc66faf1b0a3e200b536fec987aa36b",
"sha256": "61835d1db3c15bb124ba1475cbc06d80c49c97ad2e6c219c510b5fe280013fde"
},
"downloads": -1,
"filename": "django-navutils-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "9bc66faf1b0a3e200b536fec987aa36b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13950,
"upload_time": "2015-07-22T08:41:21",
"url": "https://files.pythonhosted.org/packages/11/dd/93118b4d0622cd0cb4a83b2ff1eae901a6fb722e58b20adf4ca86060a26e/django-navutils-0.5.1.tar.gz"
}
],
"0.5.2": [
{
"comment_text": "",
"digests": {
"md5": "f369ac2c6945bd84f3a325b974bb18cb",
"sha256": "b9793eca1296a9a383b4b4cda7b1cea71a1f922ee795d250bea9b8180fb88811"
},
"downloads": -1,
"filename": "django-navutils-0.5.2.tar.gz",
"has_sig": false,
"md5_digest": "f369ac2c6945bd84f3a325b974bb18cb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14002,
"upload_time": "2015-07-22T09:00:33",
"url": "https://files.pythonhosted.org/packages/1b/02/91a45fccd080205d84d12c61eda27c75570b3c9280857f7c86ca9f974e1c/django-navutils-0.5.2.tar.gz"
}
],
"0.5.3": [
{
"comment_text": "",
"digests": {
"md5": "3e4a56d2f6a867e45146fefa57f933bb",
"sha256": "58f9a48641ff1f9f5a61411c74976dec976d6f555cd33fd8d99cd5755ad1879e"
},
"downloads": -1,
"filename": "django-navutils-0.5.3.tar.gz",
"has_sig": false,
"md5_digest": "3e4a56d2f6a867e45146fefa57f933bb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14131,
"upload_time": "2015-08-21T13:13:16",
"url": "https://files.pythonhosted.org/packages/9b/83/6cc5c9e08b32aa704c1be208ce1d83431e6ec17b2468976e1122730f1d94/django-navutils-0.5.3.tar.gz"
}
],
"0.5.4": [
{
"comment_text": "",
"digests": {
"md5": "6763a6d5cc6bac6f9962c306e6b81691",
"sha256": "64747296251754a4f37edc098fa61f1424a92a12d12b91d41076a1891831936f"
},
"downloads": -1,
"filename": "django-navutils-0.5.4.tar.gz",
"has_sig": false,
"md5_digest": "6763a6d5cc6bac6f9962c306e6b81691",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14724,
"upload_time": "2015-09-29T12:10:03",
"url": "https://files.pythonhosted.org/packages/7d/49/4607ec2611c9dd9d0c02691777624025bf5022df81e5bf0f65435180dacd/django-navutils-0.5.4.tar.gz"
}
],
"0.5.5": [
{
"comment_text": "",
"digests": {
"md5": "6aaf15b83c53869cf305b7def8d3b394",
"sha256": "8124c866ebf9726ce2ba1058ce68688070c6176d7f9c80d43a5e4d20dbc2255f"
},
"downloads": -1,
"filename": "django-navutils-0.5.5.tar.gz",
"has_sig": false,
"md5_digest": "6aaf15b83c53869cf305b7def8d3b394",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18183,
"upload_time": "2017-09-05T07:35:12",
"url": "https://files.pythonhosted.org/packages/d3/fd/b7f21ee61ae7e2fd698c8d2b0dd92dc9b072f8a7e2e03a23799eedcecbb8/django-navutils-0.5.5.tar.gz"
}
],
"0.6": [
{
"comment_text": "",
"digests": {
"md5": "96b3da6195cca42bd172a612f7e39252",
"sha256": "37673e682f1549d5068ae8543b9d0dc3cb1bc4e0f5cc437791412cd3c93b658a"
},
"downloads": -1,
"filename": "django_navutils-0.6-py2-none-any.whl",
"has_sig": false,
"md5_digest": "96b3da6195cca42bd172a612f7e39252",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 22291,
"upload_time": "2018-01-18T09:36:06",
"url": "https://files.pythonhosted.org/packages/bb/ee/ad216057c29ff1835a303b072f61166e3790c1d5f77f9ba879f8b86b28f5/django_navutils-0.6-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "dde31b00eb905ebeb20506e6ff9c9823",
"sha256": "e87c37aa2a659b36b8272eb7b230be9473c3d2e738190d2ae4e5c837341959f2"
},
"downloads": -1,
"filename": "django-navutils-0.6.tar.gz",
"has_sig": false,
"md5_digest": "dde31b00eb905ebeb20506e6ff9c9823",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17242,
"upload_time": "2018-01-18T09:36:05",
"url": "https://files.pythonhosted.org/packages/e2/16/b823cf43a5b45d9fa6a2482f4ceb9f333f9b36df38590097c38da86c9d89/django-navutils-0.6.tar.gz"
}
],
"0.7": [
{
"comment_text": "",
"digests": {
"md5": "566b8ce34c8ae5747fece51488c04e56",
"sha256": "2b41a23e20c01928acddb44b14fd256efb47be94ab918b264852169a04fba49e"
},
"downloads": -1,
"filename": "django_navutils-0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "566b8ce34c8ae5747fece51488c04e56",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 19448,
"upload_time": "2019-02-22T10:52:49",
"url": "https://files.pythonhosted.org/packages/fd/ac/1a504ee12e8babd6aada40b7fe30e2f573dcf63c84a857b48e430a37f6e6/django_navutils-0.7-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "df9bd0da54fecbc07340d9b7a4b3f13c",
"sha256": "49e57a525069de4d9521054729a07c042bc97dbd6fbf023578d79be1c22e52a6"
},
"downloads": -1,
"filename": "django-navutils-0.7.tar.gz",
"has_sig": false,
"md5_digest": "df9bd0da54fecbc07340d9b7a4b3f13c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15660,
"upload_time": "2019-02-22T10:52:51",
"url": "https://files.pythonhosted.org/packages/cc/18/c90703bd24801df236bd28cd26bafcba715906251eee4f5f28f7d59f7929/django-navutils-0.7.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "566b8ce34c8ae5747fece51488c04e56",
"sha256": "2b41a23e20c01928acddb44b14fd256efb47be94ab918b264852169a04fba49e"
},
"downloads": -1,
"filename": "django_navutils-0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "566b8ce34c8ae5747fece51488c04e56",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 19448,
"upload_time": "2019-02-22T10:52:49",
"url": "https://files.pythonhosted.org/packages/fd/ac/1a504ee12e8babd6aada40b7fe30e2f573dcf63c84a857b48e430a37f6e6/django_navutils-0.7-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "df9bd0da54fecbc07340d9b7a4b3f13c",
"sha256": "49e57a525069de4d9521054729a07c042bc97dbd6fbf023578d79be1c22e52a6"
},
"downloads": -1,
"filename": "django-navutils-0.7.tar.gz",
"has_sig": false,
"md5_digest": "df9bd0da54fecbc07340d9b7a4b3f13c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15660,
"upload_time": "2019-02-22T10:52:51",
"url": "https://files.pythonhosted.org/packages/cc/18/c90703bd24801df236bd28cd26bafcba715906251eee4f5f28f7d59f7929/django-navutils-0.7.tar.gz"
}
]
}