{ "info": { "author": "Stephen McDonald", "author_email": "stephen.mc@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Drum\n====\n\nCreated by `Stephen McDonald `_\n\nDrum is a Reddit / Hacker News clone, built using `Mezzanine`_\nand `Django`_. It is `BSD licensed`_, and designed to demonstrate\nsome of the non-CMS capabilities of Mezzanine, such as threaded\ncomments, ratings, and public user accounts.\n\nCheck out the blog post `Building Social Apps with Mezzanine`_,\nwhich contains a detailed walk-through of how Drum was built. A\n`live demo of Drum`_ is also available.\n\nDependencies\n============\n\nDrum is designed as a plugin for the `Mezzanine`_ content management\nplatform, and therefore requires `Mezzanine`_ to be installed. The\nintegration of the two applications should occur automatically by\nfollowing the installation instructions below.\n\nInstallation\n============\n\nThe easiest method is to install directly from PyPI using `pip`_ by\nrunning the command below, which will also install the required\ndependencies mentioned above::\n\n $ pip install -U drum\n\nOtherwise, you can download Drum and install it directly from source::\n\n $ python setup.py install\n\nOnce installed, the command ``mezzanine-project`` can be used to\ncreate a new Mezzanine project, with Drum installed, in similar\nfashion to ``django-admin.py``::\n\n # FIXME: add new instructions of how to create a project with drum\n $ mezzanine-project -a drum project_name\n $ cd project_name\n $ python manage.py createdb --noinput\n $ python manage.py runserver\n\nHere we specify the ``-a`` switch for the ``mezzanine-project`` command,\nwhich tells it to use an alternative package (drum) for the project\ntemplate to use. Both Mezzanine and Drum contain a project template\npackage containing the ``settings.py`` and ``urls.py`` modules for an\ninitial project. If you'd like to add Drum to an existing Mezzanine\nor Django project, you'll need to manually configure these yourself. See\nthe `FAQ section of the Mezzanine documentation`_ for more information.\n\n.. note::\n\n The ``createdb`` is a shortcut for using Django's ``syncdb``\n command and setting the initial migration state. You\n can alternatively use ``syncdb`` and ``migrate`` if preferred.\n\nYou should then be able to browse to http://127.0.0.1:8000/admin/ and\nlog in using the default account (``username: admin, password:\ndefault``). If you'd like to specify a different username and password\nduring set up, simply exclude the ``--noinput`` option included above\nwhen running ``createdb``.\n\nRSS Import\n==========\n\nOne difficulty faced with a Drum site is building up an initial user\nbase, as well as a good amount of interesting link content. This is\na bit of a chicken and egg problem, in that each of these depends on\nthe other. One way to address this is to automatically populate\nthe site with interesting links. To help with this, Drum provides the\nDjango management command ``poll_rss`` for retrieving links from an RSS\nfeed, and populating the site with them. For example, suppose I was a\nterrible person and wanted to populate my Drum site with links directly\nfrom the Hacker News front page and the programming section of Reddit::\n\n python manage.py poll_rss https://news.ycombinator.com/rss http://www.reddit.com/r/programming/.rss\n\nHere you can see multiple RSS feeds being passed to the command, which\nI could then run on a scheduled basis using a cron job. Note that to\nuse the ``poll_rss`` command, you'll need the `feedparser`_ library\ninstalled.\n\nAuto Tagging\n============\n\nDrum provides some basic support for automatically tagging new links\nas they're added. This is first configured by setting the ``AUTO_TAG``\nsetting to ``True``. With that set, when a new link is added, its\ngiven title is broken up into keywords, and if those keywords already\nexist as tags in the database, they're applied to the newly added link.\n\nThis means that for auto-tagging to work, the tags must already exist\nin the database. You can either add them manually via the admin (under\nthe \"Keywords\" section), or if you have a large number of existing\nlinks, you can use the ``auto_tag`` management command Drum provides,\nwhich will analyse the titles of all your existing links, and provide\ntags it extracts from them. This makes use of the `topia.termextract`_\npackage which you'll first need to install::\n\n python manage.py auto_tag --generate=100 --assign --remove\n\nThe ``--generate`` option must be provided to extract tags, and limits\nthe number of tags extracted. Generally more tags will be extracted\nthan are relevant, depending on your existing set of links, so\nexperiment with different values here. You'll likely want to review all\nthe tags added, deleting some and manually editing others, via the\nDjango admin interface. The ``--assign`` option will go back and assign\nall tags in the database to all links in the database, as would occur\nif they were newly created. The ``--remove`` option will cause all\nexisting tags to be removed.\n\nYou can also define your own tag extraction function, if splitting the\ntitle on spaces doesn't suffice. To do so, define the setting\n``AUTO_TAG_FUNCTION`` which should contain a string with the Python\ndotted path to your custom tag function. The function will be given an\nunsaved ``Link`` object, and should return a sequence of tags to add.\n\n\nContributing\n============\n\nDrum is an open source project managed using both the Git and\nMercurial version control systems. These repositories are hosted on\nboth `GitHub`_ and `Bitbucket`_ respectively, so contributing is as\neasy as forking the project on either of these sites and committing\nback your enhancements.\n\nPlease note the following guidelines for contributing:\n\n * Contributed code must be written in the existing style. This is\n as simple as following the `Django coding style`_ and (most\n importantly) `PEP 8`_.\n * Contributions must be available on a separately named branch\n based on the latest version of the main branch.\n * Run the tests before committing your changes. If your changes\n cause the tests to break, they won't be accepted.\n * If you are adding new functionality, you must include basic tests\n and documentation.\n\nDonating\n========\n\nIf you would like to make a donation to continue development of\nDrum, you can do so via the `Mezzanine Project`_ website.\n\nSupport\n=======\n\nTo report a security issue, please send an email privately to\n`security@jupo.org`_. This gives us a chance to fix the issue and\ncreate an official release prior to the issue being made\npublic.\n\nFor general questions or comments, please join the `mezzanine-users`_\nmailing list. To report a bug or other type of issue, please use the\n`GitHub issue tracker`_. And feel free to drop by the `#mezzanine\nIRC channel`_ on `Freenode`_, for a chat.\n\nSites Using Drum\n================\n\n* `Food News `_\n\n.. _`Building Social Apps with Mezzanine`: http://blog.jupo.org/2013/04/30/building-social-apps-with-mezzanine-drum/\n.. _`Django`: http://djangoproject.com/\n.. _`BSD licensed`: http://www.linfo.org/bsdlicense.html\n.. _`live demo of Drum`: http://drum.jupo.org/\n.. _`Mezzanine`: http://mezzanine.jupo.org/\n.. _`Mezzanine Project`: http://mezzanine.jupo.org/\n.. _`pip`: http://www.pip-installer.org/\n.. _`FAQ section of the Mezzanine documentation`: http://mezzanine.jupo.org/docs/frequently-asked-questions.html#how-can-i-add-mezzanine-to-an-existing-django-project\n.. _`Django coding style`: http://docs.djangoproject.com/en/dev/internals/contributing/#coding-style\n.. _`PEP 8`: http://www.python.org/dev/peps/pep-0008/\n.. _`feedparser`: http://code.google.com/p/feedparser/\n.. _`topia.termextract`: https://pypi.python.org/pypi/topia.termextract/\n.. _`Github`: http://github.com/stephenmcd/drum/\n.. _`Bitbucket`: http://bitbucket.org/stephenmcd/drum/\n.. _`Github issue tracker`: http://github.com/stephenmcd/drum/issues\n.. _`security@jupo.org`: mailto:security@jupo.org?subject=Mezzanine+Security+Issue\n.. _`mezzanine-users`: http://groups.google.com/group/mezzanine-users\n.. _`#mezzanine IRC channel`: irc://freenode.net/mezzanine\n.. _`Freenode`: http://freenode.net", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://drum.jupo.org/", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "Drum", "package_url": "https://pypi.org/project/Drum/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Drum/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://drum.jupo.org/" }, "release_url": "https://pypi.org/project/Drum/0.4.0/", "requires_dist": null, "requires_python": null, "summary": "A Reddit / Hacker News clone for Django.", "version": "0.4.0" }, "last_serial": 2285447, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c14726c20ed96ec102d699a83fe1cb83", "sha256": "23862a6c947be5c29ec11a5a366b2908c193d0ae1695e607eaed59669052a7bc" }, "downloads": -1, "filename": "Drum-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c14726c20ed96ec102d699a83fe1cb83", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 23316, "upload_time": "2013-12-26T01:37:00", "url": "https://files.pythonhosted.org/packages/5d/39/caa053452a4f909df8ecffacac6278bef82f0511842f3adf183ede617247/Drum-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2734d5d6b700114f81e2f46408e5eb09", "sha256": "6b596d9a083e526b63264863eecb6a3ef375c32a2fa85cecc1884da529b4bfdd" }, "downloads": -1, "filename": "Drum-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2734d5d6b700114f81e2f46408e5eb09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17184, "upload_time": "2013-12-26T01:36:56", "url": "https://files.pythonhosted.org/packages/c2/c1/a1525048fa49c95aa414b2e5240a4df8d2a3b61ef00095c19e1bc9481fa9/Drum-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e36f5e7305a95dc5a2446d82783f49d1", "sha256": "a210555d7c9422adf383d4a0b5f9e988350d901b6a79b2b3a9b153d73b1f2aef" }, "downloads": -1, "filename": "Drum-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e36f5e7305a95dc5a2446d82783f49d1", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 104985, "upload_time": "2013-12-26T04:40:32", "url": "https://files.pythonhosted.org/packages/b5/45/92a47190bf5fc79e1b293abd32aafdda8f4a6eee0520aea2f51de13fd344/Drum-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87c69b55bfd77ff91ce14ed802bdd7ec", "sha256": "1ea2fafa9421456fb5d93e282c0b1dfb5cae1cffe1c7abdb5e2c14c06be5ebba" }, "downloads": -1, "filename": "Drum-0.1.1.tar.gz", "has_sig": false, "md5_digest": "87c69b55bfd77ff91ce14ed802bdd7ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93791, "upload_time": "2013-12-26T04:40:25", "url": "https://files.pythonhosted.org/packages/e0/25/c3f9607489c531c39fe56cefd34d92d7a3b1c9a5733cb2ac3405b11dc02a/Drum-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0cd75b4daa939e4252f4f5b13c9dd5af", "sha256": "d8f1f672cac83fc435e16ab1c4f16a91090d8ec86550a588e3819a047750ef64" }, "downloads": -1, "filename": "Drum-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0cd75b4daa939e4252f4f5b13c9dd5af", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 105005, "upload_time": "2013-12-26T05:41:37", "url": "https://files.pythonhosted.org/packages/f6/c6/4b2c687efebc6e13004d00048446f3928395e39a371d38c3d17c6193cb3b/Drum-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8da2a311538752447eeb070b092b9d69", "sha256": "836a56434c01747aff6028543dd00d968f971139e0c043ae9bbb2f83d17ed36b" }, "downloads": -1, "filename": "Drum-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8da2a311538752447eeb070b092b9d69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93808, "upload_time": "2013-12-26T05:41:30", "url": "https://files.pythonhosted.org/packages/cb/a2/eb10cafc8b3921888aeb89580ec4ac55ccc56d1e7c7b862b8c0a7ed27cca/Drum-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "387efe8ec30bee948e5f2f19b78ac6cf", "sha256": "27e915e820ff66968227402be9298fdc1ff115bcf3b23ac484b370ceb9ff547c" }, "downloads": -1, "filename": "Drum-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "387efe8ec30bee948e5f2f19b78ac6cf", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 106219, "upload_time": "2014-03-09T00:37:44", "url": "https://files.pythonhosted.org/packages/b2/90/905c9c25ea4bc9b14654be6762718fd7c99adf8661e0efe725d25a8bfe67/Drum-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be40dbc8f0b79f2f0c547fe242e2bc91", "sha256": "ac442683208ad26db376dff71f32e7ea0476b0b9e3469aa831398262aaca85ae" }, "downloads": -1, "filename": "Drum-0.1.3.tar.gz", "has_sig": false, "md5_digest": "be40dbc8f0b79f2f0c547fe242e2bc91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94763, "upload_time": "2014-03-09T00:37:38", "url": "https://files.pythonhosted.org/packages/f7/f7/94a4fe808042af87bf6783c4862af5370cee46bda3fcbadb72a4ce312484/Drum-0.1.3.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "24f6bfbad23dd443ba6092226821067b", "sha256": "97fc7fdfc9491f1035c1ec4e955c80da62a1eaea6baccde1516ab01f0ba32f87" }, "downloads": -1, "filename": "Drum-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "24f6bfbad23dd443ba6092226821067b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 108204, "upload_time": "2014-08-11T10:18:45", "url": "https://files.pythonhosted.org/packages/b0/ff/72d03ee6b6e4e9309cba2201e5324c28d7778ea4027d5c4a9452072571ed/Drum-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5042016f317ab60a51b7223fa50c9771", "sha256": "88623faa8732aafe3237db9f33c688ed27d40310184b4da3002aafc98a5f53d9" }, "downloads": -1, "filename": "Drum-0.2.tar.gz", "has_sig": false, "md5_digest": "5042016f317ab60a51b7223fa50c9771", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95327, "upload_time": "2014-08-11T10:18:39", "url": "https://files.pythonhosted.org/packages/4a/e3/d509621a62f6061517a1d7412572f76b571e7ffecc5acc6820fb97b0cccc/Drum-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "baccc4a54fbc6ff390f36cf778d18edd", "sha256": "6090bee5780da2a16809dd537d45aaf5fc3a88cfd0591ccf8105f0df5d8870cd" }, "downloads": -1, "filename": "Drum-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "baccc4a54fbc6ff390f36cf778d18edd", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 108863, "upload_time": "2014-09-27T04:15:08", "url": "https://files.pythonhosted.org/packages/84/ae/fa039d38b8a14ac694be98563318059835fe59c1bb95f117583ee9d53315/Drum-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "119c68074e22b5a250ae05b82b479f6d", "sha256": "a463d12b852efbb0c5bc3e11242e715179398eff6107144f5583c4c9e1a047c6" }, "downloads": -1, "filename": "Drum-0.2.1.tar.gz", "has_sig": false, "md5_digest": "119c68074e22b5a250ae05b82b479f6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95850, "upload_time": "2014-09-27T04:14:51", "url": "https://files.pythonhosted.org/packages/34/9f/26bf100886f6c8c474986e30643d2a627f3b6b6917bf80cf7d20169e0680/Drum-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "94de2663b96d2e7a1cfc9fae426343ce", "sha256": "f46af2907bc192ab521ea46f5430e4fc7fd25c997eea803d8260adc10dafd388" }, "downloads": -1, "filename": "Drum-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "94de2663b96d2e7a1cfc9fae426343ce", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 112668, "upload_time": "2014-11-09T11:24:00", "url": "https://files.pythonhosted.org/packages/ee/0c/aa011f6c440b9f23cb157c55ca7d1c03595102071150bd440f8086afabbf/Drum-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7eaee8bf77cfdb8c699af573e7e590c", "sha256": "36bce74823c550fd0c55a9de76d90443358dda5afb56297b40a60b80362a6c80" }, "downloads": -1, "filename": "Drum-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e7eaee8bf77cfdb8c699af573e7e590c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97937, "upload_time": "2014-11-09T11:23:55", "url": "https://files.pythonhosted.org/packages/65/80/b2c4b60efa276981b821219ac7974b451f2e6f39bfd3f7af0d7ef16ce95c/Drum-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "18a37967941ea3dbf77a27caa446b488", "sha256": "8754eb40e74a296c26994f6d367dd90f4078fe6fc5766c583494c7f43fcc529f" }, "downloads": -1, "filename": "Drum-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "18a37967941ea3dbf77a27caa446b488", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 124566, "upload_time": "2015-07-26T03:53:28", "url": "https://files.pythonhosted.org/packages/2f/27/0697ca7dbf92dbd2ca94f2a680b108ca3e10771ce6bc1d08c7da0379b754/Drum-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2c5ee2408a12b7ad5c895092b9a2a3f", "sha256": "5c1bf2ea1abb43817825cb291af819a85671421799a5368841808d25abec3fd2" }, "downloads": -1, "filename": "Drum-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b2c5ee2408a12b7ad5c895092b9a2a3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111500, "upload_time": "2015-07-26T03:53:18", "url": "https://files.pythonhosted.org/packages/33/15/08ab592ca4f65a979307bf943fff24a4aee80b94cff273fdd32938f2f2ec/Drum-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "610824bc45896a751e9a565ec8b1caaf", "sha256": "93302255bbc904b619e87c6ac4e0438d0e092a5a2991dea047fe3291d0019f38" }, "downloads": -1, "filename": "Drum-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "610824bc45896a751e9a565ec8b1caaf", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 111553, "upload_time": "2016-08-17T04:16:27", "url": "https://files.pythonhosted.org/packages/12/8d/8a46fcab8efd71f80cf5a083801f9d3f08dc3f8ba59f0c7bcd2e7fe93af7/Drum-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0cf3e194adb1ec5d30d6d05079788f3e", "sha256": "4b2cc1045693266e60c9618b6115bb6c4f197f6b8436b6ebcef5de961e287a28" }, "downloads": -1, "filename": "Drum-0.4.0.tar.gz", "has_sig": false, "md5_digest": "0cf3e194adb1ec5d30d6d05079788f3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97338, "upload_time": "2016-08-17T04:16:21", "url": "https://files.pythonhosted.org/packages/76/03/f13c994e7fc69f7e9ccab8f726d986a311f1934bcf520c3865df76a33658/Drum-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "610824bc45896a751e9a565ec8b1caaf", "sha256": "93302255bbc904b619e87c6ac4e0438d0e092a5a2991dea047fe3291d0019f38" }, "downloads": -1, "filename": "Drum-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "610824bc45896a751e9a565ec8b1caaf", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 111553, "upload_time": "2016-08-17T04:16:27", "url": "https://files.pythonhosted.org/packages/12/8d/8a46fcab8efd71f80cf5a083801f9d3f08dc3f8ba59f0c7bcd2e7fe93af7/Drum-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0cf3e194adb1ec5d30d6d05079788f3e", "sha256": "4b2cc1045693266e60c9618b6115bb6c4f197f6b8436b6ebcef5de961e287a28" }, "downloads": -1, "filename": "Drum-0.4.0.tar.gz", "has_sig": false, "md5_digest": "0cf3e194adb1ec5d30d6d05079788f3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97338, "upload_time": "2016-08-17T04:16:21", "url": "https://files.pythonhosted.org/packages/76/03/f13c994e7fc69f7e9ccab8f726d986a311f1934bcf520c3865df76a33658/Drum-0.4.0.tar.gz" } ] }