{ "info": { "author": "Mikko Ohtamaa", "author_email": "mikko@opensourcehacker.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Pyramid", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" ], "description": "This is a Python package for websauna.blog, an addon for `Websauna framework `_. You can use it as a simple blog for your site or as an example of Websaunsa design patterns.\n\n.. |ci| image:: https://img.shields.io/travis/websauna/websauna.blog/master.svg?style=flat-square\n :target: https://travis-ci.org/websauna/websauna.blog/\n\n.. |cov| image:: https://codecov.io/github/websauna/websauna.blog/coverage.svg?branch=master\n :target: https://codecov.io/github/websauna/websauna.blog?branch=master\n\n.. |latest| image:: https://img.shields.io/pypi/v/websauna.blog.svg\n :target: https://pypi.python.org/pypi/websauna.blog/\n :alt: Latest Version\n\n.. |license| image:: https://img.shields.io/pypi/l/websauna.blog.svg\n :target: https://pypi.python.org/pypi/websauna.blog/\n :alt: License\n\n.. |versions| image:: https://img.shields.io/pypi/pyversions/websauna.blog.svg\n :target: https://pypi.python.org/pypi/websauna.blog/\n :alt: Supported Python versions\n\n+-----------+-----------+-----------+\n| |versions|| |latest| | |license| |\n+-----------+-----------+-----------+\n| |ci| | |cov| | |\n+-----------+-----------+-----------+\n\n.. contents:: :local:\n\nFeatures\n========\n\n* Markdown based editing\n\n* `Disqus `_ based commenting\n\n* Post description and meta for Google (SEO), Facebook, Twitter. Sitemap support and Google Article metadata support.\n\n* Blog post management through Websauna admin interface\n\n* Drafts (admin only visible) and published posts\n\n* RSS feed\n\n* Basic unit and functional test suite\n\nNote that this addon is not intended to be used as is, but more of an example. You most likely want to fork it over and modify for your own needs.\n\nScreenshots\n===========\n\nBlog post\n---------\n\n.. image:: https://github.com/websauna/websauna.blog/raw/master/screenshots/post.png\n\nAdmin\n-----\n\n.. image:: https://github.com/websauna/websauna.blog/raw/master/screenshots/admin.png\n\nInstallation\n============\n\nAdding to your site\n-------------------\n\nInclude addon in your application initializer:\n\n.. code-block:: python\n\n class Initializer(websauna.system.Initializer):\n\n def include_addons(self):\n \"\"\"Include this addon in the configuration.\"\"\"\n self.config.include(\"websauna.blog\")\n\n\nExample settings:\n\n.. code-block:: ini\n\n # Title on blog roll\n blog.title = My little Websauna blog\n\n # this is \"websauna\" part from websaua.disqus.com/embed.js univeral\n # embed link\n blog.disqus_id = websauna\n\n # The email appearing in RSS feed\n # (It is recommended not to use any real email)\n blog.rss_feed_email = no-reply@example.com\n\nSee ``nav.html`` example how to add a link to the blog in your site navigation.\n\nAdd RSS feed discovery by customizing ``site/meta.html`` template:\n\n.. code-block:: html\n\n {# Misc ```` tags in ````. #}\n\n \n \n\n {% include \"blog/rss_head.html\" %}\n\nCreate migrations for blog post SQL table for your site::\n\n ws-alembic -c myapp/conf/development.ini -x packages=all revision --auto -m \"Adding blog content types\"\n\nRun migrations::\n\n ws-alembic -c myapp/conf/development.ini -x packages=all upgrade head\n\nGo to admin, start adding blog posts.\n\nLocal development mode\n----------------------\n\nActivate the virtual environment of your Websauna application.\n\nThen::\n\n cd blog # This is the folder with setup.py file\n pip install -e .\n\n\nRunning the development website\n===============================\n\nLocal development machine\n-------------------------\n\nExample (OSX / Homebrew)::\n\n psql create blog_dev\n ws-sync-db websauna/blog/conf/development.ini\n ws-create-user websauna/blog/conf/development.ini admin@example.com mypassword\n ws-pserve websauna/blog/conf/development.ini --reload\n\n\nRunning the test suite\n======================\n\nFirst create test database::\n\n # Create database used for unit testing\n psql create blog_test\n\nInstall test and dev dependencies (run in the folder with ``setup.py``)::\n\n pip install -e \".[dev,test]\"\n\nRun test suite using py.test running::\n\n py.test\n\nMore information\n================\n\nPlease see https://websauna.org/\n\nChangelog for Websauna Blog\n===========================\n\n1.0a2 (2018-04-22)\n------------------\n\n- Closes `Issue #6`_: missing 'namespace_packages', .\n\n\n1.0a1 (2018-03-06)\n------------------\n\n- Initial Release\n\n.. _`Issue #6`: https://github.com/websauna/websauna.blog/issues/6\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://websauna.org", "keywords": "web websauna pyramid", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "websauna.blog", "package_url": "https://pypi.org/project/websauna.blog/", "platform": "", "project_url": "https://pypi.org/project/websauna.blog/", "project_urls": { "Homepage": "https://websauna.org" }, "release_url": "https://pypi.org/project/websauna.blog/1.0a2/", "requires_dist": [ "websauna", "Markdown", "rfeed", "pyroma (==2.2); extra == 'dev'", "sphinx (>=1.6.1); extra == 'dev'", "sphinx-autodoc-typehints; extra == 'dev'", "sphinx-rtd-theme; extra == 'dev'", "sphinxcontrib-zopeext; extra == 'dev'", "zest.releaser[recommended]; extra == 'dev'", "codecov; extra == 'test'", "flake8; extra == 'test'", "pytest (>=3.0); extra == 'test'", "pytest-runner; extra == 'test'", "coverage; extra == 'test'", "flaky; extra == 'test'", "isort; extra == 'test'", "pytest-cov; extra == 'test'", "pytest-runner; extra == 'test'", "pytest-splinter; extra == 'test'", "pytest-timeout; extra == 'test'", "webtest; extra == 'test'" ], "requires_python": "", "summary": "Blog add on for Websauna", "version": "1.0a2" }, "last_serial": 3789694, "releases": { "1.0a1": [ { "comment_text": "", "digests": { "md5": "c411df927d2d9b7302c287cdd5564283", "sha256": "bf106b9f439f9a1b72f8c701735f15e9ee9a5e0588ad16ffcd0554c210a38b36" }, "downloads": -1, "filename": "websauna.blog-1.0a1-py3-none-any.whl", "has_sig": false, "md5_digest": "c411df927d2d9b7302c287cdd5564283", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41583, "upload_time": "2018-03-06T21:02:05", "url": "https://files.pythonhosted.org/packages/d6/6b/26f239db0f4ddfe362f1a5fd1eca01b70f1e5420d9628101fc2b755814c1/websauna.blog-1.0a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dd9b4ea2c1a9238615fc2b9359a8abe", "sha256": "0e12f3a345abb1b6b482f42518af4c4944acbf52b006c3816ff61e3736614406" }, "downloads": -1, "filename": "websauna.blog-1.0a1.tar.gz", "has_sig": false, "md5_digest": "3dd9b4ea2c1a9238615fc2b9359a8abe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33326, "upload_time": "2018-03-06T21:02:08", "url": "https://files.pythonhosted.org/packages/68/9f/a821f7320cc3fec12b29b7158e350b53a7f057acc9761b23efdc59996162/websauna.blog-1.0a1.tar.gz" } ], "1.0a2": [ { "comment_text": "", "digests": { "md5": "38c6dbd6c3e082a14d7d4aec688274bc", "sha256": "7ef568a7094a79186bd5eb1cac53f15f494934d39481482b3bb19b6f93ea3ede" }, "downloads": -1, "filename": "websauna.blog-1.0a2-py3-none-any.whl", "has_sig": false, "md5_digest": "38c6dbd6c3e082a14d7d4aec688274bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42147, "upload_time": "2018-04-22T19:09:35", "url": "https://files.pythonhosted.org/packages/75/75/a935000ba4774c92391975332830c2d8d864c751c8ea2e7920e294959f1b/websauna.blog-1.0a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cffbf7a8bee832e4c1e78fe883e3a2d2", "sha256": "0c111b0a34f07aa71f82ed9f8b4573ccff61eb89ee77a8d6ef1a8427d6728eee" }, "downloads": -1, "filename": "websauna.blog-1.0a2.tar.gz", "has_sig": false, "md5_digest": "cffbf7a8bee832e4c1e78fe883e3a2d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33625, "upload_time": "2018-04-22T19:09:36", "url": "https://files.pythonhosted.org/packages/ed/48/45051975d53bcd1787669eb26b83d78d4d0b96d00a970dea6221f9bfd706/websauna.blog-1.0a2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "38c6dbd6c3e082a14d7d4aec688274bc", "sha256": "7ef568a7094a79186bd5eb1cac53f15f494934d39481482b3bb19b6f93ea3ede" }, "downloads": -1, "filename": "websauna.blog-1.0a2-py3-none-any.whl", "has_sig": false, "md5_digest": "38c6dbd6c3e082a14d7d4aec688274bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42147, "upload_time": "2018-04-22T19:09:35", "url": "https://files.pythonhosted.org/packages/75/75/a935000ba4774c92391975332830c2d8d864c751c8ea2e7920e294959f1b/websauna.blog-1.0a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cffbf7a8bee832e4c1e78fe883e3a2d2", "sha256": "0c111b0a34f07aa71f82ed9f8b4573ccff61eb89ee77a8d6ef1a8427d6728eee" }, "downloads": -1, "filename": "websauna.blog-1.0a2.tar.gz", "has_sig": false, "md5_digest": "cffbf7a8bee832e4c1e78fe883e3a2d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33625, "upload_time": "2018-04-22T19:09:36", "url": "https://files.pythonhosted.org/packages/ed/48/45051975d53bcd1787669eb26b83d78d4d0b96d00a970dea6221f9bfd706/websauna.blog-1.0a2.tar.gz" } ] }