{ "info": { "author": "Andy Baker", "author_email": "andy@andybak.net", "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.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "django-linkcheck\n===================\n\n.. image:: https://travis-ci.org/DjangoAdminHackers/django-linkcheck.svg?branch=master\n :target: https://travis-ci.org/DjangoAdminHackers/django-linkcheck\n\nA fairly flexible app that will analyze and report on links in any model that\nyou register with it.\n\n.. image:: https://github.com/DjangoAdminHackers/django-linkcheck/raw/master/linkcheck.jpg\n\nLinks can be bare (urls or image and file fields) or\nembedded in HTML (linkcheck handles the parsing). It's fairly easy to override\nmethods of the Linkcheck object should you need to do anything more\ncomplicated (like generate URLs from slug fields etc).\n\nYou should run its management command via cron or similar to check external\nlinks regularly to see if their status changes. All links are checked\nautomatically when objects are saved. This is handled by signals.\n\nMinimal requirements\n--------------------\n\ndjango-linkchecks requires Python 2.7 and Django 1.8. It is Python 3 compatible.\n\nBasic usage\n-----------\n\n#. Install app to somewhere on your Python path (e.g. ``pip install\n django-linkcheck``).\n \n#. Add ``'linkcheck'`` to your ``settings.INSTALLED_APPS``.\n\n#. Add a file named ``linklists.py`` to every app (see an example in ``examples/linklists.py``) that either:\n\n #) has models that contain content (e.g. url/image fields, chunks of markup\n or anything that gets transformed into a IMG or HREF when displayed\n #) can be the target of a link - i.e. is addressed by a url - in this case\n make sure it has an instance method named 'get_absolute_url'\n\n#. Run ``./manage.py migrate``.\n\n#. Add to your root url config::\n\n url(r'^admin/linkcheck/', include('linkcheck.urls'))\n\n#. View ``/admin/linkcheck/`` from your browser.\n\nThe file ``notifications.py`` is completely optional. It works with\ndjango-admin-blocks_ to display a notification about broken links as\nshown in the screenshot above.\n\n.. _django-admin-blocks: https://github.com/DjangoAdminHackers/django-admin-blocks\n\nWe are aware that this documentation is on the brief side of things so any\nsuggestions for elaboration or clarification would be gratefully accepted.\n\nLinklist classes\n----------------\n\nThe following class attributes can be added to your ``Linklist`` subclasses to\ncustomize the extracted links:\n\n ``object_filter``: a dictionary which will be passed as a filter argument to\n the ``filter`` applied to the default queryset of the target class. This\n allows you to filter the objects from which the links will be extracted.\n (example: ``{'active': True}``)\n\n ``object_exclude``: a dictionary which will be passed as a filter argument to\n the ``exclude`` applied to the default queryset of the target class. As with\n ``object_filter``, this allows you to exclude objects from which the links\n will be extracted.\n\n ``html_fields``: a list of field names which will be searched for links.\n\n ``url_fields``: a list of ``URLField`` field names whose content will be\n considered as links. If the field content is empty and the field name is\n in ``ignore_empty``, the content is ignored.\n\n ``ignore_empty``: a list of fields from ``url_fields``. See the explanation\n above. (new in django-linkcheck 1.1)\n\n ``image_fields``: a list of ``ImageField`` field names whose content will be\n considered as links. Empty ``ImageField`` content is always ignored.\n\nManagement commands\n-------------------\n\nfindlinks\n~~~~~~~~~\n\nThis command goes through all registered fields and records the URLs it finds.\nThis command does not validate anything. Typically run just after installing\nand configuring django-linkcheck.\n\nchecklinks\n~~~~~~~~~~\n\nFor each recorded URL, check and report the validity of the URL. All internal\nlinks are checked, but only external links that have not been checked during\nthe last ``LINKCHECK_EXTERNAL_RECHECK_INTERVAL`` minutes are checked. This\ninterval can be adapted per-invocation by using the ``--externalinterval``\n(``-e``) command option (in minutes).\n\nYou can also limit the maximum number of links to be checked by passing a number\nto the ``--limit`` (``--l``) command option.\n\nSettings\n--------\n\nLINKCHECK_EXTERNAL_RECHECK_INTERVAL\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDefault: 10080 (1 week in minutes)\n\nWill not recheck any external link that has been checked more recently than this value.\n\nLINKCHECK_EXTERNAL_REGEX_STRING\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDefault: r'^https?://'\n\nA string applied as a regex to a URL to determine whether it's internal or external.\n\nLINKCHECK_MEDIA_PREFIX\n~~~~~~~~~~~~~~~~~~~~~~\n\nDefault: '/media/'\n\nCurrently linkcheck tests whether links to internal static media are correct by wrangling the URL to be a local filesystem path.\n\nIt strips MEDIA_PREFIX off the interal link and concatenates the result onto settings.MEDIA_ROOT and tests that using os.path.exists\n\nThis 'works for me' but it is probably going to break for other people's setups. Patches welcome.\n\nLINKCHECK_RESULTS_PER_PAGE\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nControls pagination.\n\nPagination is slightly peculiar at the moment due to the way links are grouped by object.\n\n\nLINKCHECK_MAX_URL_LENGTH\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nDefault: 255\n\nThe length of the URL field. Defaults to 255 for compatibility with MySQL (see http://docs.djangoproject.com/en/dev/ref/databases/#notes-on-specific-fields )\n\n\nLINKCHECK_CONNECTION_ATTEMPT_TIMEOUT\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDefault: 10\n\nThe timeout in seconds for each connection attempts. Sometimes it is useful to limit check time per connection in order to hold at bay the total check time.\n\n\nSITE_DOMAIN and LINKCHECK_SITE_DOMAINS\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nLinkcheck tests external and internal using differently. Internal links use the Django test client whereas external links are tested using urllib2.\n\nTesting internal links this as if they were external can cause errors in some circumstances so Linkcheck needs to know which external urls are to be treated as internal.\n\nLinkcheck looks for either of the settings above. It only uses SITE_DOMAIN if LINKCHECK_SITE_DOMAINS isn't present\n\n\nSITE_DOMAIN = \"mysite.com\"\n\nwould tell linkchecker to treat the following as internal links:\n\nmysite.com\nwww.mysite.com\ntest.mysite.com\n\nIf you instead set LINKCHECK_SITE_DOMAINS to be a list or tuple then you can explicitly list the domains that should be treated as internal.\n\n\ndjango-filebrowser integration\n------------------------------\n\nIf django-filebrowser is present on your path then linkcheck will listen to the post-upload, delete and rename signals and update itself according\n\n\nRunning tests\n-------------\n\nTests can be run standalone by using the runtests.py script in linkcheck root:\n $ python runtests.py\n\nIf you want to run linkcheck tests in the context of your project, you should include 'linkcheck.tests.sampleapp' in your INSTALLED_APPS setting.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/DjangoAdminHackers/django-linkcheck", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django-linkcheck", "package_url": "https://pypi.org/project/django-linkcheck/", "platform": "", "project_url": "https://pypi.org/project/django-linkcheck/", "project_urls": { "Homepage": "https://github.com/DjangoAdminHackers/django-linkcheck" }, "release_url": "https://pypi.org/project/django-linkcheck/1.6/", "requires_dist": null, "requires_python": "", "summary": "A Django app that will analyze and report on links in any model that you register with it.", "version": "1.6" }, "last_serial": 4965069, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "57e08195b56f3a413262d388486bb31a", "sha256": "d54dd3926e3aa7c504bc9f156c40c614bcf1ab1c265aee6cdfad6769fef358c2" }, "downloads": -1, "filename": "django-linkcheck-0.1.0.tar.gz", "has_sig": false, "md5_digest": "57e08195b56f3a413262d388486bb31a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13650, "upload_time": "2010-10-16T14:18:06", "url": "https://files.pythonhosted.org/packages/a0/03/32757d920fc215481d00dac15751eeb2943c99435c576f2f3fd41fcbef27/django-linkcheck-0.1.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "7f488d1792fbdb75ffeec2fc425897e8", "sha256": "244bcc260e462af90067da14fc0284558d98cd81afd564944af16d776424e618" }, "downloads": -1, "filename": "django-linkcheck-0.5.0.tar.gz", "has_sig": false, "md5_digest": "7f488d1792fbdb75ffeec2fc425897e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14539, "upload_time": "2010-11-13T13:37:03", "url": "https://files.pythonhosted.org/packages/b4/40/2799116475e660cedff64b03718f12bdcfcc9e74c96f32da8c0e3e2919ba/django-linkcheck-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "cc602f06d1692a56c3d14680e90ba192", "sha256": "3bedc23d180b4393493c15204abf0d996d0f9daf1e0ffb2782148c69a6009c75" }, "downloads": -1, "filename": "django-linkcheck-0.5.1.tar.gz", "has_sig": false, "md5_digest": "cc602f06d1692a56c3d14680e90ba192", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14862, "upload_time": "2010-11-13T13:42:09", "url": "https://files.pythonhosted.org/packages/66/3a/0d6e58e8ddd89fbda1f3058a49c7ef9c6da96e92b439cad9d9449b358deb/django-linkcheck-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "a75a5a0da9be195c2033b70f0c4d521f", "sha256": "5549d0586967a62c63ce4d83002db15b52481d41cd7160eca4a63be97501c339" }, "downloads": -1, "filename": "django-linkcheck-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a75a5a0da9be195c2033b70f0c4d521f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15047, "upload_time": "2010-11-13T16:49:20", "url": "https://files.pythonhosted.org/packages/30/64/bffb763804f517d4aef3b04426dd1058be06cdd4a980d91a893d647a5547/django-linkcheck-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "86edd0cde2a49a68d080fe0ea465c24d", "sha256": "9035412437a04e5523e7d461204d5608dbe6cad82f8eb945f4c08366935917f0" }, "downloads": -1, "filename": "django-linkcheck-0.6.0.tar.gz", "has_sig": false, "md5_digest": "86edd0cde2a49a68d080fe0ea465c24d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17753, "upload_time": "2011-01-11T23:29:12", "url": "https://files.pythonhosted.org/packages/41/37/24119aff6545cb564989ca249f7ee04f5160a2163ec3c301121debdf6ea5/django-linkcheck-0.6.0.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "cac2d6d5cc97f85962e222c99d065c9c", "sha256": "18815e2df96af2238c2f0b215d4dd3d2718c4a18daa463d053b7b235ea441446" }, "downloads": -1, "filename": "django-linkcheck-0.6.2.tar.gz", "has_sig": false, "md5_digest": "cac2d6d5cc97f85962e222c99d065c9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16766, "upload_time": "2011-01-14T10:10:14", "url": "https://files.pythonhosted.org/packages/ab/54/7ffe33bff74c21c39db9efe74979b584d4a5eb0667022612292481187ee4/django-linkcheck-0.6.2.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "583a1e646e974ebc394b81f116d0b6c0", "sha256": "db20a780ccf7795844af2eb3c6a999f4ea162f9446a984bf9ba5d9722f049b91" }, "downloads": -1, "filename": "django-linkcheck-0.6.4.tar.gz", "has_sig": false, "md5_digest": "583a1e646e974ebc394b81f116d0b6c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19200, "upload_time": "2011-06-15T12:25:25", "url": "https://files.pythonhosted.org/packages/3c/c3/96f74bb7252cd44e2302b0483c7c542422ef4660bda8fad6e4f634d2f220/django-linkcheck-0.6.4.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "881b65d3dfc54ed9e14e0400c6934eb9", "sha256": "16c1997542608fb6068893f0b0a63f35963a3dbcd7150ec6bdb42bfa04165cfb" }, "downloads": -1, "filename": "django-linkcheck-1.0.tar.gz", "has_sig": false, "md5_digest": "881b65d3dfc54ed9e14e0400c6934eb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19604, "upload_time": "2012-06-29T12:44:31", "url": "https://files.pythonhosted.org/packages/34/4a/e3d200e5185be35e7c2a379dce36bf1fdafbafa878c9f54ecc5b41ac7874/django-linkcheck-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "a8ceb4fa7098c31a7f74df0f47df135d", "sha256": "e6c2c8f41185ac9c3313c9fb2b9425bebe96a6f321dbec12a62dc328fa5f6e67" }, "downloads": -1, "filename": "django-linkcheck-1.1.tar.gz", "has_sig": false, "md5_digest": "a8ceb4fa7098c31a7f74df0f47df135d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22977, "upload_time": "2015-06-03T09:02:39", "url": "https://files.pythonhosted.org/packages/23/3a/642a219d75b8966b1ad465fde8ba7dae05a8bb4bb596b4541d4685121960/django-linkcheck-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "98c05a6cd77720640326bcc465b5712b", "sha256": "b75fc8fe1589a85aa1880fda46cd59e4fcdd61480f9b6300ecd38018fbc20f7d" }, "downloads": -1, "filename": "django-linkcheck-1.2.tar.gz", "has_sig": false, "md5_digest": "98c05a6cd77720640326bcc465b5712b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26901, "upload_time": "2015-11-13T12:24:49", "url": "https://files.pythonhosted.org/packages/cc/9d/3ad940b3adbf9d16bb6609829977225cfa4a1e5f647038ebe76467433115/django-linkcheck-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "d4a317118696ab5a335b8a1d49c6af57", "sha256": "cbb697bca828498ff2581724419c97cebea6fc8747ba07c1337dcb09f55207b8" }, "downloads": -1, "filename": "django-linkcheck-1.3.tar.gz", "has_sig": false, "md5_digest": "d4a317118696ab5a335b8a1d49c6af57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28220, "upload_time": "2016-06-05T14:56:09", "url": "https://files.pythonhosted.org/packages/14/29/aa40696d75873760077d233ae70d01a84faf73e15bdd10e145122a371808/django-linkcheck-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "4433d1c3dc2cd7fc038e07e439ab45e5", "sha256": "0d4dc5d08070605bfd1844cac912d086bbd8691a7360a02358606aed380309c6" }, "downloads": -1, "filename": "django-linkcheck-1.4.tar.gz", "has_sig": false, "md5_digest": "4433d1c3dc2cd7fc038e07e439ab45e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28903, "upload_time": "2017-01-13T17:22:09", "url": "https://files.pythonhosted.org/packages/7d/51/09b41d62905b64456ab21616afd29827aaa1844f690103c3b2884c5cac5b/django-linkcheck-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "831b0dc4ccccfed34b38cfc90e9e5d82", "sha256": "e1a3c483fc888407e4e0011d877b6db58e1c2639cba1fd184597728cda3886d2" }, "downloads": -1, "filename": "django-linkcheck-1.5.tar.gz", "has_sig": false, "md5_digest": "831b0dc4ccccfed34b38cfc90e9e5d82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29195, "upload_time": "2017-09-16T10:24:27", "url": "https://files.pythonhosted.org/packages/6d/28/13af28aafbe643d31420f64641ebbe4d625c5944863308f11889979535ba/django-linkcheck-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "c7159bbc847c7f279b0e4cb4c37094f9", "sha256": "9e8c13b7eaf24df5dc244330ef394d90001e249d9ecb5acdad58c123c69cfb1d" }, "downloads": -1, "filename": "django-linkcheck-1.6.tar.gz", "has_sig": false, "md5_digest": "c7159bbc847c7f279b0e4cb4c37094f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29675, "upload_time": "2019-03-20T18:57:32", "url": "https://files.pythonhosted.org/packages/49/40/bbcdf1c36dc9a196bf3b3dd04fd65f9c02f6ffa8281e7f37c0ff824dd734/django-linkcheck-1.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7159bbc847c7f279b0e4cb4c37094f9", "sha256": "9e8c13b7eaf24df5dc244330ef394d90001e249d9ecb5acdad58c123c69cfb1d" }, "downloads": -1, "filename": "django-linkcheck-1.6.tar.gz", "has_sig": false, "md5_digest": "c7159bbc847c7f279b0e4cb4c37094f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29675, "upload_time": "2019-03-20T18:57:32", "url": "https://files.pythonhosted.org/packages/49/40/bbcdf1c36dc9a196bf3b3dd04fd65f9c02f6ffa8281e7f37c0ff824dd734/django-linkcheck-1.6.tar.gz" } ] }