{
"info": {
"author": "Jeff Knupp",
"author_email": "jeff@jeffknupp.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Application Frameworks",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "``bull`` always charges...\n==========================\n\n|Build Status| |Coverage Status|\n\nWTF is ``bull``?\n----------------\n\nOn a Friday evening, not too long ago, I was lamenting the shortcomings\nof the various services I've used to sell my digital book from my\npersonal website. *Digital goods sales should be a solved problem by\nnow*, but I ran into all sorts of issues when trying to send updates to\ncustomers and integrate properly with Google Analytics.\n\n`Long\nstory `__\nshort, I took two hours and wrote a replacement using Python, Flask,\nSQLAlchemy, and Stripe (as the payment processor). ``bull`` is to set up\n*on your own domain*. Why does the fact that ``bull`` runs on your own\ndomain matter? Because it makes Google Analytics happy and report\nconversions properly.\n\nThe only things you need to get started using ``bull`` are a Stripe\naccount (free) and a web server (free?).\n\nInstallation\n------------\n\n1. ``pip install bull``. This installs the ``bull`` command, which helps\n setup your environment\n2. ``bull setup``. This creates a directory named ``bull`` with the\n following contents:\n\n- ``app.py``: the main application script. ``get_app`` can be used to\n run ``bull`` as a WSGI application\n- ``config.py``: ``bull``'s configuration file. This must be edited to\n contain your installation-specific configuration details.\n- ``files`` directory: The directory that contains the files for your\n digital products\n\n3. Add product entries to the database (use ``scripts/populate_db`` as a\n model)\n4. (Optional) Create an admin user for viewing ``/reports`` by running\n ``scripts/create_user.py``\n5. Add ``bull`` to your web server's configuration\n6. Profit! (...literally)\n\nAnalytics and Login\n-------------------\n\n``bull`` supports simple sales analytics at the ``/reports`` endpoint.\nIt requires authorization, which in turn requires you to create (at\nleast one) user using the ``scripts/create_user.py`` script. To see the\nreports, hit ``/login``, log in, and from then on you can go directly to\n``/reports`` to see reporting data. You should be good to go after that,\nand no one else will be able to see the reports.\n\nIf for some reason you need to logout, there is also a ``/logout``\nendpoint which will log you out (which should use HTTP POST instead of\nGET, but whatever).\n\n**Reporting includes:**\n\n- Email addresses and sales totals of recent purchases\n- Sales data broken down by calendar day\n- Sales charts based on revenue/units sold per day\n\nOverriding Default Templates\n----------------------------\n\nSimply create a ``templates`` directory and create a file of the same\nname as the template you want to replace.\n\nTesting\n-------\n\n``bull`` has a (small) suite of tests that are run via TravisCI, but can\n(and should) also be tested manually once installed. Run\n``python app.py`` and browse to http://localhost:5000/test/1. You should\nsee a single \"Buy\" button, which should be completely functional\n(assuming you have at least one product in your database). Enter\nStripe's test credit card number (4242 4242 4242 4242). You should be\nsuccessfully directed to a \"success.html\" page with your download link.\nIf your product is in the ``files`` directory, you'll be able to\ndownload it by clicking the link.\n\nDeployment\n----------\n\n*Don't run ``app.py`` in production.* The web server it uses is not\nmeant for such a purpose. Instead, deploy as you would normally deploy\nan WSGI application. See `Flask's\ndocumentation `__ on the\nsubject.\n\nTODO\n----\n\nStill need to add better documentation and (possibly) deployment\ninformation. All of this is coming. I just wanted to get ``bull`` out as\nfast as possible so that those who know what they're doing can make use\nof it.\n\n.. |Build Status| image:: https://travis-ci.org/jeffknupp/bull.png?branch=develop\n :target: https://travis-ci.org/jeffknupp/bull\n.. |Coverage Status| image:: https://coveralls.io/repos/jeffknupp/bull/badge.png?branch=develop\n :target: https://coveralls.io/r/jeffknupp/bull?branch=develop",
"description_content_type": null,
"docs_url": "https://pythonhosted.org/bull/",
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://github.com/jeffknupp/bull/",
"keywords": null,
"license": "Apache Software License",
"maintainer": null,
"maintainer_email": null,
"name": "bull",
"package_url": "https://pypi.org/project/bull/",
"platform": "any",
"project_url": "https://pypi.org/project/bull/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://github.com/jeffknupp/bull/"
},
"release_url": "https://pypi.org/project/bull/0.4.1/",
"requires_dist": null,
"requires_python": null,
"summary": "Digital goods payment processing made simple",
"version": "0.4.1"
},
"last_serial": 984119,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "767edf7ecde39aba432de0e9f2c4f278",
"sha256": "4b93c9b1d29d6db5c83becea2a416f82faf946b1c0b2b386679106a63bf776f5"
},
"downloads": -1,
"filename": "bull-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "767edf7ecde39aba432de0e9f2c4f278",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4706,
"upload_time": "2014-01-24T22:43:10",
"url": "https://files.pythonhosted.org/packages/f9/7c/a7f1f622f77b6c2a5a4cc161debc6023023238e4c535fa66073e49b4afcd/bull-0.1.0.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "4a2b8329c4218edf5246b325439492b2",
"sha256": "30837cb932e62487c490734a16f18917090028f054e0dd4b6b2a61e2608f1d06"
},
"downloads": -1,
"filename": "bull-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "4a2b8329c4218edf5246b325439492b2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6977,
"upload_time": "2014-01-26T14:18:10",
"url": "https://files.pythonhosted.org/packages/04/31/7179ffbee21fb385f50c384863a12fa2a10de4ff92ea7755de56584e6c22/bull-0.2.0.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "bd87d1ae086608ae575242d2f319565e",
"sha256": "f44d52207005f3b213aadb0b9027d26a0f37a556e376b2c258d99993a776bf2e"
},
"downloads": -1,
"filename": "bull-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "bd87d1ae086608ae575242d2f319565e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7075,
"upload_time": "2014-01-28T03:38:51",
"url": "https://files.pythonhosted.org/packages/6c/10/098f20920f35b00d37ccc9666bc4071cf8e2775345b613936b72792e4067/bull-0.3.0.tar.gz"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "aa9660b7f5559d9cb1f425b4544abf1a",
"sha256": "626bbf27a88d98b5924749f1f9f96cf3b2c44503e2d4553f6b4c86a25e40f29d"
},
"downloads": -1,
"filename": "bull-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "aa9660b7f5559d9cb1f425b4544abf1a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8198,
"upload_time": "2014-01-28T14:12:20",
"url": "https://files.pythonhosted.org/packages/5e/f7/4085f7b9d11d7a55a2597a2071716eeb7f32496f419fb0efa926948cf209/bull-0.4.0.tar.gz"
}
],
"0.4.1": [
{
"comment_text": "",
"digests": {
"md5": "bbae4480ec3da0b26820b4c2b455a02a",
"sha256": "7f73754baf04fa573436c3ed8241b868bfc10cd25bff456f4b35b555ba479729"
},
"downloads": -1,
"filename": "bull-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "bbae4480ec3da0b26820b4c2b455a02a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8302,
"upload_time": "2014-01-28T14:16:22",
"url": "https://files.pythonhosted.org/packages/20/08/bf244edf23f8418d1fb270eb3b844500f95ce6b4e8b971def348abca5504/bull-0.4.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "bbae4480ec3da0b26820b4c2b455a02a",
"sha256": "7f73754baf04fa573436c3ed8241b868bfc10cd25bff456f4b35b555ba479729"
},
"downloads": -1,
"filename": "bull-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "bbae4480ec3da0b26820b4c2b455a02a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8302,
"upload_time": "2014-01-28T14:16:22",
"url": "https://files.pythonhosted.org/packages/20/08/bf244edf23f8418d1fb270eb3b844500f95ce6b4e8b971def348abca5504/bull-0.4.1.tar.gz"
}
]
}