{ "info": { "author": "Diederik van der Boor", "author_email": "opensource@edoburu.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.11", "Framework :: Django :: 1.6", "Framework :: Django :: 1.7", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "django-slug-preview\n===================\n\nAn advanced slug field offering live URL previews.\n\nThis is inspired by the \"Permalink\" preview that WordPress offers.\nWhile not looking as fancy yet, this is a good start for Django projects.\nImprovements are welcome!\n\n\n.. figure:: https://github.com/edoburu/django-slug-preview/raw/master/docs/images/slugpreview1.png\n :width: 632px\n :height: 95px\n\n\nInstallation\n============\n\nFirst install the module, preferably in a virtual environment.\nIt can be installed from PyPI::\n\n pip install django-slug-preview\n\nOr the current folder can be installed for development::\n\n pip install -e .\n\nAdd ``slug_preview`` to your ``INSTALLED_APPS``::\n\n INSTALLED_APPS += (\n 'slug_preview',\n )\n\n\nUsage\n=====\n\n* Use ``slug_preview.models.SlugPreviewField`` in your models instead of the standard ``models.SlugField``.\n* Add ``slug_preview.forms.SlugPreviewFormMixin`` in your forms.\n\nFor example::\n\n from django.db import models\n from slug_preview.models import SlugPreviewField\n\n class MyModel(models.Model):\n slug = SlugPreviewField(_(\"Slug\"))\n\n\nIn the admin you can use the ``SlugPreviewModelForm`` shortcut::\n\n from django.contrib import admin\n from django import forms\n from slug_preview.forms import SlugPreviewModelForm\n\n @admin.register(MyModel)\n class MyModelAdmin(admin.ModelAdmin):\n form = SlugPreviewModelForm\n\n\nIn custom forms, use ``SlugPreviewFormMixin`` directly::\n\n from django import forms\n from slug_preview.forms import SlugPreviewFormMixin\n from .models import MyModel\n\n class MyModelForm(SlugPreviewFormMixin, forms.ModelForm):\n class Meta:\n model = MyModel\n\n\nSpecial model URLS\n~~~~~~~~~~~~~~~~~~\n\nWhen a model has a custom URL layout (not just ``/{slug}/``), you can add a ``get_absolute_url_format()`` method in the model.\nFor example::\n\n from django.db import models\n from slug_preview.models import SlugPreviewField\n\n class Page(models.Model):\n parent = models.ForeignKey('self')\n slug = SlugPreviewField(_(\"Slug\"))\n # ...\n\n\n def get_absolute_url(self):\n if self.parent_id:\n return \"{0}{1}/\".format(self.parent.get_absolute_url(), self.slug)\n else:\n return \"/{0}/\".format(self.slug)\n\n def get_absolute_url_format(self):\n if self.parent_id:\n return \"{0}{{slug}}/\".format(self.parent.get_absolute_url())\n else:\n return \"/{slug}/\"\n\nFor a blog, you can add the ``/blog/{year}/{month}/`` format too::\n\n from django.core.urlresolvers import reverse\n from django.db import models\n from django.utils.timezone import now\n from slug_preview.models import SlugPreviewField\n\n class Article(models.Model):\n slug = SlugPreviewField(_(\"Slug\"))\n pubdate = models.DateTimeField(default=now)\n # ...\n\n\n def get_absolute_url(self):\n root = reverse('article_list')\n return \"{root}/{year}/{month}/{slug}/\".format(\n root=reverse('article_list').rstrip('/'),\n year=self.pubdate..strftime('%Y'),\n monthy=self.pubdate..strftime('%M'),\n slug=self.slug\n )\n\n def get_absolute_url_format(self):\n root = reverse('article_list')\n pubdate = self.pubdate or now()\n return \"{root}/{year}/{month}/{{slug}}/\".format(\n root=reverse('article_list').rstrip('/'),\n year=pubdate.strftime('%Y'),\n monthy=pubdate.strftime('%M'),\n )\n\n\nImproving this package\n======================\n\nThis module is designed to be usable for other projects too.\nIn case there is anything you didn't like about it,\nor think it's not flexible enough, please let us know.\nWe'd love to improve it! Pull requests are welcome too. :-)\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/edoburu/django-slug-preview/zipball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/edoburu/django-slug-preview", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "django-slug-preview", "package_url": "https://pypi.org/project/django-slug-preview/", "platform": "", "project_url": "https://pypi.org/project/django-slug-preview/", "project_urls": { "Download": "https://github.com/edoburu/django-slug-preview/zipball/master", "Homepage": "https://github.com/edoburu/django-slug-preview" }, "release_url": "https://pypi.org/project/django-slug-preview/1.0.4/", "requires_dist": null, "requires_python": "", "summary": "An advanced slug field with URL previews.", "version": "1.0.4" }, "last_serial": 3576536, "releases": { "0.9": [ { "comment_text": "", "digests": { "md5": "7bf8009cfcff5b1d72b31667a3d9dfdf", "sha256": "d036d6c349c8ed32487c77429bcb482022e6d25466a76218dc010d6859e5f3b9" }, "downloads": -1, "filename": "django_slug_preview-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7bf8009cfcff5b1d72b31667a3d9dfdf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10442, "upload_time": "2015-08-20T10:49:23", "url": "https://files.pythonhosted.org/packages/5e/34/7fffeb5cd312dbc45052cfda731375ab9bba1e35b2b370512423e642bb99/django_slug_preview-0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "636d914d8bb65061d4609948f1030716", "sha256": "323aa23a22f5ba9d2b2ed08d3812468adfaa18dde1838c294de06444192bc4b9" }, "downloads": -1, "filename": "django-slug-preview-0.9.tar.gz", "has_sig": false, "md5_digest": "636d914d8bb65061d4609948f1030716", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10569, "upload_time": "2015-08-20T10:49:05", "url": "https://files.pythonhosted.org/packages/1a/bc/8ac5ae2460c4b4ab8aa052e0986d5f5e5c3ccfd5ab42647573628690a191/django-slug-preview-0.9.tar.gz" } ], "0.9.dev0": [], "1.0": [ { "comment_text": "", "digests": { "md5": "e5d30318cffa477534b5e5e272604ebc", "sha256": "45ea2686bf7cdf0295369512d6aed6b5d678fdecb803eff3030f838e4c5ae2f7" }, "downloads": -1, "filename": "django_slug_preview-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e5d30318cffa477534b5e5e272604ebc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10468, "upload_time": "2015-12-30T14:14:24", "url": "https://files.pythonhosted.org/packages/07/12/c474b24925d44790d6914d98edeeab7d5f6d09ddd8b38e6c32d6040cffaf/django_slug_preview-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc6648378469100a098fc61836a8a554", "sha256": "637408287ffc25f26bdeaf1c7a7c87b03c02c28727d77ce0af5381cf235939e9" }, "downloads": -1, "filename": "django-slug-preview-1.0.tar.gz", "has_sig": false, "md5_digest": "fc6648378469100a098fc61836a8a554", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10673, "upload_time": "2015-12-30T14:14:10", "url": "https://files.pythonhosted.org/packages/07/36/7509ffa6d5a01ab74493faa3bcfdf80594b92ec9018b2db6cb0a890c8419/django-slug-preview-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "55cef801431db4cb4ab1bf8fc0a89393", "sha256": "fcf3cb7823e1d9599d63d62c299a5f26745c3776921d410b52fd5ad34549300c" }, "downloads": -1, "filename": "django_slug_preview-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "55cef801431db4cb4ab1bf8fc0a89393", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10601, "upload_time": "2016-02-07T20:45:38", "url": "https://files.pythonhosted.org/packages/7b/5a/f7f885995a08d5754200466ba859d2c1933d6ff6c97ac8c1cc5d08b1fc71/django_slug_preview-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7a99b3467b36ca59c2076dee1eb8628", "sha256": "d0257d166666712a8d32647ca9a93e902c462ecbf003eca98819c7b05f64cf25" }, "downloads": -1, "filename": "django-slug-preview-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e7a99b3467b36ca59c2076dee1eb8628", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11199, "upload_time": "2016-02-07T20:45:32", "url": "https://files.pythonhosted.org/packages/e0/18/fa83915456dbf140c366a1fc6fe6e16f4e00fadd638b23be64fba480b22d/django-slug-preview-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "fe6e227fdc72fbc4cac91de0a3b228ba", "sha256": "dbd21729c7bdd615d77524b3de3c979e6408d97e2fca1fbc0ccce4883520df01" }, "downloads": -1, "filename": "django_slug_preview-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe6e227fdc72fbc4cac91de0a3b228ba", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10384, "upload_time": "2016-12-30T14:08:40", "url": "https://files.pythonhosted.org/packages/8f/2c/67be660e74833199d3dd649a6d6fc24c00a829edbdddf2631e79a566ed41/django_slug_preview-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1daf409c505ac99d0f6be8e3c16e828", "sha256": "f747722d804dc45884aa69b68a7d7548e90e8d00a12c698465eab63a17259456" }, "downloads": -1, "filename": "django-slug-preview-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f1daf409c505ac99d0f6be8e3c16e828", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10669, "upload_time": "2016-12-30T14:08:42", "url": "https://files.pythonhosted.org/packages/4e/4c/d6b498457ab51fbba8f5a3dcdb4c30b1ae47585ed9c298f6b7067c510bad/django-slug-preview-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "ad1de4a0289fd8b3e94bd8058aee661e", "sha256": "4f9ca311bea77177587da7b4ea1c44fbf53fd3d71e78eb46ca46c3efc020e11f" }, "downloads": -1, "filename": "django_slug_preview-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad1de4a0289fd8b3e94bd8058aee661e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10436, "upload_time": "2018-02-12T10:39:04", "url": "https://files.pythonhosted.org/packages/5f/01/9908ea279aba395aa4d93e3078fcaf6fa40bd15cb346095731b13c19e41d/django_slug_preview-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14e98c51718f8b78f51472bafb7168d6", "sha256": "cab58d731574613b036078eeb3b07ac7f35b3b070aada5532eeef25b4f82f2cb" }, "downloads": -1, "filename": "django-slug-preview-1.0.3.tar.gz", "has_sig": false, "md5_digest": "14e98c51718f8b78f51472bafb7168d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10710, "upload_time": "2018-02-12T10:39:06", "url": "https://files.pythonhosted.org/packages/75/90/b229359b1948185acbb314378375e62e479f9ab2e889c9fca3e43479c0e5/django-slug-preview-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "f7e2cc2d73078a966395d28a243db229", "sha256": "4dd6f3d87acf745c2c04d8e2b5e013ea830eaad66a6ae020ef487c321ca6abc7" }, "downloads": -1, "filename": "django_slug_preview-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f7e2cc2d73078a966395d28a243db229", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10507, "upload_time": "2018-02-12T22:39:32", "url": "https://files.pythonhosted.org/packages/e3/0b/ae30feeb4f23105925c59aea9b206368751a93d7dd430f55813919d46196/django_slug_preview-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ad03804816a0117f98df345ca75d64b", "sha256": "b93801bd5382837ceb397114bf6b4324a506eb2793845c4ba4c4a3f1865042d4" }, "downloads": -1, "filename": "django-slug-preview-1.0.4.tar.gz", "has_sig": false, "md5_digest": "1ad03804816a0117f98df345ca75d64b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10778, "upload_time": "2018-02-12T22:39:34", "url": "https://files.pythonhosted.org/packages/6a/cf/a5c1f74901afa23f9ee43200840041595c039aa9be0b2b2a263cbae09866/django-slug-preview-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f7e2cc2d73078a966395d28a243db229", "sha256": "4dd6f3d87acf745c2c04d8e2b5e013ea830eaad66a6ae020ef487c321ca6abc7" }, "downloads": -1, "filename": "django_slug_preview-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f7e2cc2d73078a966395d28a243db229", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10507, "upload_time": "2018-02-12T22:39:32", "url": "https://files.pythonhosted.org/packages/e3/0b/ae30feeb4f23105925c59aea9b206368751a93d7dd430f55813919d46196/django_slug_preview-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ad03804816a0117f98df345ca75d64b", "sha256": "b93801bd5382837ceb397114bf6b4324a506eb2793845c4ba4c4a3f1865042d4" }, "downloads": -1, "filename": "django-slug-preview-1.0.4.tar.gz", "has_sig": false, "md5_digest": "1ad03804816a0117f98df345ca75d64b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10778, "upload_time": "2018-02-12T22:39:34", "url": "https://files.pythonhosted.org/packages/6a/cf/a5c1f74901afa23f9ee43200840041595c039aa9be0b2b2a263cbae09866/django-slug-preview-1.0.4.tar.gz" } ] }