{ "info": { "author": "Damian Cugley", "author_email": "pdc@alleged.org.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "Spreadlinks - publish links from a spreadsheet\n==============================================\n\nGiven a spreadsheet of links to resources on the web, this Djang app displays\nthe links with a simple navigation system using tags to narrow the list down\nto resources with matching tags.\n\nThere are examples on [spreadsite.org][].\n\n [spreadsite.org]: https://spreadsite.org/\n\n\nHow it Works\n------------\n\nA 'resource library' is a collection of links to resources on web sites (either\nthe same as this site or external sites). A library is defined by a directory\ncontaining, at minimum, a spreadsheet with data about the links in it. Other,\noptional, files may add more metadata to flesh out the definition.\n\nLibraries are named after the directory. Libraries all live in a 'root\ndirectory'. For the sample app, the root is `resource-libraries` and the Fan\nfilms library is in `resource-libraries/fanfilms`.\n\nThe standard Drupal URLconf in `spreadlinks/urls.py` has these lines:\n\n urlpatterns = [\n url(r'^$', spreadlinks.views.library_list,\n {'root_dir': settings.SPREADLINKS_DIR}, 'library_list'),\n url(r'^(?P[^/]*)/$', spreadlinks.views.library_detail,\n {'root_dir': settings.SPREADLINKS_DIR}, 'library_detail'),\n url(r'^(?P[^/]*)/page(?P[0-9]+)$', spreadlinks.views.library_detail,\n {'root_dir': settings.SPREADLINKS_DIR}, 'library_detail'),\n url(r'^(?P[^/]*)/tags/(?P[a-z_0-9+:-]+)$', spreadlinks.views.library_detail,\n {'root_dir': settings.SPREADLINKS_DIR}, 'library_detail'),\n url(r'^(?P[^/]*)/tags/(?P[a-z_0-9+:-]+)/page(?P[0-9]+)$', spreadlinks.views.library_detail, {'root_dir': settings.SPREADLINKS_DIR}, 'library_detail'),\n ]\n\nEach view takes an argument that is the root directory; in this case it is in\nturn acquired from the web site settings. The library name will match one of its\nsubdirectories. I recommend using short names consisting only of lowercase\nletters and numbers; it keeps the URLs tidy.\n\nData Format\n-----------\n\nAt present the spreadsheet must be in comma-separated values form; this is just\nbecause I have not bothered adding support for one of the Excel-parsing libraries\navailable for Python. The first row MUST be column headings. Each of the\nsubsequent rows specifies an entry in the library.\n\nThe meaning of the columns is inferred from the column heading. Column headings\nare normalized to lower case and spaces replaced with underscores before\ninterpreting them. The following columns are significant:\n\n- `title`: The title of the link. Should be one line long and will be unique.\n- `description`: A paragraph or two describing the link. Markdown format.\n- `url`: The location of the item.\n- `image-url`: A picture to illustrate the item.\n- `href` or `url`: The address of the resource being linked to.\n- `keywords` or `main_keywords`: Keywords in the Main facet (see below)\n- `FACET_keywords`: Keywords in an additional facet (where FACET is\n replaced with the name of that facet).\n\nAt present other columns are ignored. (Probably they should be displayed as part\nof the link description or something.)\n\nKeywords are used to build a browseable drill-down navigation thingummy.\nThe navigator automatically hides keywords that would lead to no matches.\n\nA _facet_ is a collection of keywords that describe the resource in the same\nway. You might use a secondary facet to\ndescribe the resource type, or the intended audience, say. The navigator allows\nthe user to select keywords from separate facets independently.\n\nThe value of the keywords cells may contain multiple keywords. By default,\nkeywords are required to go one per line within the cell; this allows for\nkeywords to be normal phrases with spaces and punctuation.\n\nMetadata\n--------\n\nAdditional information about the library may be specified with a separate file\n`METADATA.txt`. This contains one or more headings following the RFC-2822 format\nof heading:value, followed by a blank line and then the description of the\nlibrary. The description uses Markdown format.\n\nThe following headers are understood:\n\n- `Title`: A title for the library as a whole.\n- `Keyword-Separator`: A character to use instead of newlines to separate\nkeywords in the data file.\n\nIf there is no `METADATA.txt`, or no title is specified, then it uses library name\n(the same as the directory name).\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pdc/spreadlinks", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "Spreadlinks", "package_url": "https://pypi.org/project/Spreadlinks/", "platform": "", "project_url": "https://pypi.org/project/Spreadlinks/", "project_urls": { "Homepage": "https://github.com/pdc/spreadlinks" }, "release_url": "https://pypi.org/project/Spreadlinks/0.4.0/", "requires_dist": [ "Markdown", "Django" ], "requires_python": "", "summary": "A Django app for serving libraries of links from spreadsheets.", "version": "0.4.0" }, "last_serial": 4197192, "releases": { "0.1.0.dev1": [ { "comment_text": "", "digests": { "md5": "e0c8c7b5698bf039dbe0367cd137153d", "sha256": "462bce3c227e1ec3a58fa1ee3dd21ea99dfb7cd32ca4e4a461124903900c1463" }, "downloads": -1, "filename": "Spreadlinks-0.1.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "e0c8c7b5698bf039dbe0367cd137153d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9962, "upload_time": "2018-07-29T10:29:47", "url": "https://files.pythonhosted.org/packages/c2/90/40853632385b1d8ed67ef52abf8dc2aa593de28dbb70af3effc419f4e866/Spreadlinks-0.1.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89c1f570dadf40f41cea4419841ccc5d", "sha256": "0b710a3819cbd909abf1195934e0b910708cd230c5c35f7845e34dc3b00c93d7" }, "downloads": -1, "filename": "Spreadlinks-0.1.0.dev1.tar.gz", "has_sig": false, "md5_digest": "89c1f570dadf40f41cea4419841ccc5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9868, "upload_time": "2018-07-29T10:29:49", "url": "https://files.pythonhosted.org/packages/44/32/f1bed9913ef0660ecbe72eeddac8ceae199c747985efb753c055cb7ff56c/Spreadlinks-0.1.0.dev1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "70621f8757de2498de0ba6394e472724", "sha256": "8e3eba2911bcec904337b44427e46908db2e0a49291a5978335c0d52b1e0fa87" }, "downloads": -1, "filename": "Spreadlinks-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "70621f8757de2498de0ba6394e472724", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9914, "upload_time": "2018-08-01T21:01:48", "url": "https://files.pythonhosted.org/packages/8e/94/70a82fba6478f75431a6f5911b834c2e7846c7609ab3748d8dff801f9982/Spreadlinks-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11b890e6793c152da18b4b2754a76ce9", "sha256": "e808108a171065ca9463f23905b176a0ccb7f35780c531bc13ae5b0ff0f7aa42" }, "downloads": -1, "filename": "Spreadlinks-0.2.0.tar.gz", "has_sig": false, "md5_digest": "11b890e6793c152da18b4b2754a76ce9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9899, "upload_time": "2018-08-01T21:01:49", "url": "https://files.pythonhosted.org/packages/9e/24/54669c0719f55b175c8afb184787aa60faa04d9d8554ce0a7604dcd2e8e0/Spreadlinks-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "3ffcab1a1ee1266e9b1dc8fe90d8322c", "sha256": "072d0a63497805f44d4a187b3adc076dd4f5b5da8377a1cb1670dd72e0689efc" }, "downloads": -1, "filename": "Spreadlinks-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3ffcab1a1ee1266e9b1dc8fe90d8322c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9913, "upload_time": "2018-08-01T21:24:30", "url": "https://files.pythonhosted.org/packages/e6/3b/b0b68f7dc029bdab532a114ef5aac01f2f94aab582908af2841ba2492f33/Spreadlinks-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a11ce7ca2132eb82fc9088748209492", "sha256": "dc0a4b8329568df991ad947524e29ec492173d12e614de46ba89122af7073614" }, "downloads": -1, "filename": "Spreadlinks-0.2.1.tar.gz", "has_sig": false, "md5_digest": "0a11ce7ca2132eb82fc9088748209492", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9911, "upload_time": "2018-08-01T21:24:31", "url": "https://files.pythonhosted.org/packages/64/3e/c292ed22207e3f161b697800ac802123bd13b5d2b8c6e445010a640a6bb0/Spreadlinks-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3f42acba979a59a0d310c94867371425", "sha256": "239aeeeace18cf547b1d0c04056f6ffe8a1d9885a5b4a58fa0eccd08903f86ca" }, "downloads": -1, "filename": "Spreadlinks-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3f42acba979a59a0d310c94867371425", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9915, "upload_time": "2018-08-02T20:52:54", "url": "https://files.pythonhosted.org/packages/47/9c/68aaae68510cd1f16b39fae6fdb72e6ec71c05a4af44934ed4f96188bf5e/Spreadlinks-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "273ee7600755c27bcf55d3133ede7129", "sha256": "d6a18867fea8ba3ce4d4b6d1fe5016cc9cae1e3a28fe04c2b18fbccb98a5689d" }, "downloads": -1, "filename": "Spreadlinks-0.2.2.tar.gz", "has_sig": false, "md5_digest": "273ee7600755c27bcf55d3133ede7129", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9954, "upload_time": "2018-08-02T20:52:55", "url": "https://files.pythonhosted.org/packages/79/d4/6dacda3fb478d2baeae8ead11e300ef93a555a058922ef82fe19ce992e12/Spreadlinks-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "8637cbe6490a6f5e362b3b58dd50c7f2", "sha256": "95c7544a35a1ec41828095fad3edd5b4c764f102dd5fa448fc182df41fbd2809" }, "downloads": -1, "filename": "Spreadlinks-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8637cbe6490a6f5e362b3b58dd50c7f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39845, "upload_time": "2018-08-02T21:18:04", "url": "https://files.pythonhosted.org/packages/67/de/aafc445e9ae95b3de61c869d9edfd4ac0e6871a2d29468c379b143c2440d/Spreadlinks-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c0fe4c6002b53cfb95f827b06aaf24a", "sha256": "3e6ab01e0cda58084c1447bda23f1dbb350dd66fc587bd880386306f66f20168" }, "downloads": -1, "filename": "Spreadlinks-0.2.3.tar.gz", "has_sig": false, "md5_digest": "3c0fe4c6002b53cfb95f827b06aaf24a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9975, "upload_time": "2018-08-02T21:18:05", "url": "https://files.pythonhosted.org/packages/66/64/bae80438e0d8bcd7b32471887f6940fa9b07e6df9e881fb6fcfa34032d02/Spreadlinks-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3f09acd72596d9a24c950d32ab36db90", "sha256": "8af63529800853488f8d5e7c22feece9c554baec1e01824fd3ab841dd4435287" }, "downloads": -1, "filename": "Spreadlinks-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3f09acd72596d9a24c950d32ab36db90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39870, "upload_time": "2018-08-04T19:59:29", "url": "https://files.pythonhosted.org/packages/8f/72/aed0edc52b2ceb07d508a8ee64d4005d61438cf637d879e8a306b2d0f22b/Spreadlinks-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd8ee4a155715ea4f22bd406a40ac63d", "sha256": "c50ba481aa3fd2f733eb234ff82bd7ed07a0bb26befbf6c85bdcf9d84ffcd4a2" }, "downloads": -1, "filename": "Spreadlinks-0.3.0.tar.gz", "has_sig": false, "md5_digest": "dd8ee4a155715ea4f22bd406a40ac63d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10012, "upload_time": "2018-08-04T19:59:31", "url": "https://files.pythonhosted.org/packages/58/1f/39029b13e55e2b8586669bd8c5055ffb8d5038e4ddc644ba31a8cba17492/Spreadlinks-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "74cbe6e707c4a8b1f4ff9d6bd3247598", "sha256": "3eee3004d14ccfc6c3de014f48fa32080c98043db79d92a1643d430123c51911" }, "downloads": -1, "filename": "Spreadlinks-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "74cbe6e707c4a8b1f4ff9d6bd3247598", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40326, "upload_time": "2018-08-22T18:07:07", "url": "https://files.pythonhosted.org/packages/a5/7a/6e14b44f7f398454b65ed278bd39af4554401389430ae545643aced26311/Spreadlinks-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5224eb4e1164485c758b5cc110b61b6b", "sha256": "fc7294cbea3e5bfa46782874fba374fb0624722464af225c63f5c1609955a901" }, "downloads": -1, "filename": "Spreadlinks-0.4.0.tar.gz", "has_sig": false, "md5_digest": "5224eb4e1164485c758b5cc110b61b6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10092, "upload_time": "2018-08-22T18:07:09", "url": "https://files.pythonhosted.org/packages/f1/bb/1b1ffc4c42d5936103f5ec2195cd53affd802d2769fe6a831115b7c70ba2/Spreadlinks-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "74cbe6e707c4a8b1f4ff9d6bd3247598", "sha256": "3eee3004d14ccfc6c3de014f48fa32080c98043db79d92a1643d430123c51911" }, "downloads": -1, "filename": "Spreadlinks-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "74cbe6e707c4a8b1f4ff9d6bd3247598", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40326, "upload_time": "2018-08-22T18:07:07", "url": "https://files.pythonhosted.org/packages/a5/7a/6e14b44f7f398454b65ed278bd39af4554401389430ae545643aced26311/Spreadlinks-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5224eb4e1164485c758b5cc110b61b6b", "sha256": "fc7294cbea3e5bfa46782874fba374fb0624722464af225c63f5c1609955a901" }, "downloads": -1, "filename": "Spreadlinks-0.4.0.tar.gz", "has_sig": false, "md5_digest": "5224eb4e1164485c758b5cc110b61b6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10092, "upload_time": "2018-08-22T18:07:09", "url": "https://files.pythonhosted.org/packages/f1/bb/1b1ffc4c42d5936103f5ec2195cd53affd802d2769fe6a831115b7c70ba2/Spreadlinks-0.4.0.tar.gz" } ] }