{ "info": { "author": "Marin Prcela", "author_email": "marin.prcela@vingd.com", "bugtrack_url": null, "classifiers": [], "description": "============\r\nDjango Vingd\r\n============\r\n\r\nDjango Vingd enables integrating Vingd into django project.\r\n\r\nBasic setup\r\n===========\r\n\r\n1. Add \"django_vingd\" to INSTALLED_APPS.\r\n\r\n2. Configure django settings:\r\n\r\n.. code-block:: python\r\n\r\n VINGD_SETTINGS = {\r\n 'sandbox': {\r\n 'VINGD_USR': 'test@knopso.com',\r\n 'VINGD_PWD': '123',\r\n }\r\n }\r\n VINGD_MODE = 'sandbox'\r\n\r\n3. In any django app that uses vingd define Vingd Orders details (models.py):\r\n\r\n.. code-block:: python\r\n\r\n # Imaginary scenario where users are voting for candidates via vingd.\r\n\r\n from django.db import models\r\n from django.http import HttpResponseRedirect\r\n from django_vingd.models import VingdOrder\r\n\r\n class Candidate(models.Model):\r\n name = models.CharField(max_length=128)\r\n votes = models.IntegerField(default=0)\r\n \r\n def add_vote(self):\r\n Candidate.objects.filter(id=self.id).update(votes=models.F('votes')+1)\r\n self.votes += 1\r\n\r\n class VoteOrder(VingdOrder):\r\n candidate = models.ForeignKey(Candidate)\r\n\r\n # Short object description\r\n def get_display_name(self):\r\n return 'Vote for candidate'\r\n\r\n # Handle form submission (before sending user to vingd)\r\n def take_order(self):\r\n self.candidate_id = self.request.POST.get('candidate_id')\r\n\r\n # Determine vingd price\r\n def get_vingd_amount(self):\r\n return 75 # 0.75 vingd\r\n \r\n # Access is confirmed (user has returned back from vingd)\r\n def accept_order(self):\r\n self.candidate.add_vote()\r\n\r\n # Serve requested content to user\r\n def success_response(self):\r\n return HttpResponseRedirect('/')\r\n\r\n4. Register order classes in your urls (urls.py):\r\n\r\n.. code-block:: python\r\n\r\n from django_vingd.models import VingdMeta\r\n from base.models import VoteOrder\r\n \r\n VingdMeta.register([VoteOrder, ])\r\n \r\n urlpatterns = patterns('',\r\n (r'^vgd/', include('django_vingd.urls')),\r\n )\r\n\r\n5. In HTML template place vingd order forms:\r\n\r\n.. code-block:: django\r\n\r\n {% for candidate in candidates %}\r\n
\r\n {% endfor %}\r\n\r\nSync database and start your engines! \r\n\r\n\r\nPopup version\r\n=============\r\n\r\n1. Add jQuery to your page.\r\n\r\n2. Add popup related javascript to HTML head:\r\n\r\n.. code-block:: django\r\n\r\n {% load vingd_tt %}\r\n {% vingd_scripts %}\r\n \r\n \r\n\r\n3. Handle ajax requests in your VoteOrders (models.py):\r\n\r\n.. code-block:: python\r\n\r\n from django_vingd.util import HttpResponseJSON\r\n # ...\r\n def success_response(self):\r\n request = self.request\r\n if request.is_ajax():\r\n return HttpResponseJSON({\r\n 'ok': True,\r\n 'votes': self.candidate.votes,\r\n })\r\n return HttpResponseRedirect('/')\r\n\r\n\r\nDeny access to content\r\n======================\r\n\r\nIn some situations user should not be allowed to access content. Such cases should be handled both for:\r\n\r\n- denying access at vingd ordering time (before sending user to vingd)\r\n- denying access at vingd verification time (after user has returned from vingd).\r\n\r\nIn those cases one should raise exception within take_order and accept_order respectively.\r\n\r\nHandling exceptions\r\n===================\r\n\r\nTo gracefully handle any kind of exception one should use VingdOrder handle_exception function:\r\n\r\n.. code-block:: python\r\n\r\n def handle_exception(self, e):\r\n # log exception\r\n # inform user\r\n return HttpResponse(\"Inform user that something has gone wrong.\")", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vingd/django-vingd", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "django-vingd", "package_url": "https://pypi.org/project/django-vingd/", "platform": "OS Independent", "project_url": "https://pypi.org/project/django-vingd/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/vingd/django-vingd" }, "release_url": "https://pypi.org/project/django-vingd/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Django App for Vingd integration", "version": "0.1.1" }, "last_serial": 790995, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "fafe4dd02f824539fd634e73c29c745d", "sha256": "6557bc344dd86061436aa1de0674f258ac5df9999b7a037b6a73f4d48d060b7c" }, "downloads": -1, "filename": "django-vingd-0.1.1.linux-x86_64.exe", "has_sig": false, "md5_digest": "fafe4dd02f824539fd634e73c29c745d", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 72818, "upload_time": "2013-01-30T17:00:14", "url": "https://files.pythonhosted.org/packages/15/79/332feca411eb9a83ab58d691172db7889f843c3f3a51cf7736e44f2f5ad1/django-vingd-0.1.1.linux-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "ddd5cfb5b215b4b8da6f0989b27f4b1b", "sha256": "4675b0ae9b26f876c61241be110f3cbba4f13994db052cd84b7caf76a67e78b9" }, "downloads": -1, "filename": "django-vingd-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ddd5cfb5b215b4b8da6f0989b27f4b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6675, "upload_time": "2013-01-30T17:00:10", "url": "https://files.pythonhosted.org/packages/8a/8b/8991fde0bdaff4249c36795e431e1d971d266005b117a9781f6210f7b522/django-vingd-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fafe4dd02f824539fd634e73c29c745d", "sha256": "6557bc344dd86061436aa1de0674f258ac5df9999b7a037b6a73f4d48d060b7c" }, "downloads": -1, "filename": "django-vingd-0.1.1.linux-x86_64.exe", "has_sig": false, "md5_digest": "fafe4dd02f824539fd634e73c29c745d", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 72818, "upload_time": "2013-01-30T17:00:14", "url": "https://files.pythonhosted.org/packages/15/79/332feca411eb9a83ab58d691172db7889f843c3f3a51cf7736e44f2f5ad1/django-vingd-0.1.1.linux-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "ddd5cfb5b215b4b8da6f0989b27f4b1b", "sha256": "4675b0ae9b26f876c61241be110f3cbba4f13994db052cd84b7caf76a67e78b9" }, "downloads": -1, "filename": "django-vingd-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ddd5cfb5b215b4b8da6f0989b27f4b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6675, "upload_time": "2013-01-30T17:00:10", "url": "https://files.pythonhosted.org/packages/8a/8b/8991fde0bdaff4249c36795e431e1d971d266005b117a9781f6210f7b522/django-vingd-0.1.1.tar.gz" } ] }