A reusable Django app that lets you call followup functions after an event has taken place. (Such as two-factor authentication)
Project description
OneTime is a drop-in Django app that allows you store callbacks
in your database to be called once another event has taken place.
In its most basic form, it has two main parts. First, you give
`onetime.call_later` a callable to execute when the event happens.
Second you hook up the CallbackMiddleware which will call the callable
with the arguments you supply to `call_later()`.
views.py
========
::
# Log a user in via email
from onetime import call_later
def login(request=None, user_id):
user = User.objects.get(id=user_id)
request.session['logged_in_user'] = user
def email_login_link(request):
alleged_user = User.objects.get(id=request.GET['user_id'])
onetime_id = call_later(login, user_id=alleged_user.id)
email_utils.sendmail(
alleged_user.email,
"Login Link",
"Login by clicking <a href='http://mysite/?onetime_id=%s'>here</a>"%onetime_id
)
settings.py
===========
::
MIDDLEWARE_CLASSES = (
'onetime.middleware.CallbackMiddleware',
...
)
If the callable you are passing in to call_later is in fact a Django
view that needs its first parameter to be the incoming request, you
can instead use `onetime.call_view_later` which will pass in the subsequent
request as the first parameter to the callable.
Settings
========
ONETIME_REQUEST_PARAMETER The request.REQUEST key we should look under
while searching for OneTime IDs. Can be any url-safe string, defaults
to `onetime_id`.
in your database to be called once another event has taken place.
In its most basic form, it has two main parts. First, you give
`onetime.call_later` a callable to execute when the event happens.
Second you hook up the CallbackMiddleware which will call the callable
with the arguments you supply to `call_later()`.
views.py
========
::
# Log a user in via email
from onetime import call_later
def login(request=None, user_id):
user = User.objects.get(id=user_id)
request.session['logged_in_user'] = user
def email_login_link(request):
alleged_user = User.objects.get(id=request.GET['user_id'])
onetime_id = call_later(login, user_id=alleged_user.id)
email_utils.sendmail(
alleged_user.email,
"Login Link",
"Login by clicking <a href='http://mysite/?onetime_id=%s'>here</a>"%onetime_id
)
settings.py
===========
::
MIDDLEWARE_CLASSES = (
'onetime.middleware.CallbackMiddleware',
...
)
If the callable you are passing in to call_later is in fact a Django
view that needs its first parameter to be the incoming request, you
can instead use `onetime.call_view_later` which will pass in the subsequent
request as the first parameter to the callable.
Settings
========
ONETIME_REQUEST_PARAMETER The request.REQUEST key we should look under
while searching for OneTime IDs. Can be any url-safe string, defaults
to `onetime_id`.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-onetime-0.2.0.tar.gz
(5.0 kB
view details)
File details
Details for the file django-onetime-0.2.0.tar.gz
.
File metadata
- Download URL: django-onetime-0.2.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d00c734ff02439ea2f0d4db2ab1b7cf800dca2cc09ed6c8d241ae210fa4019ae |
|
MD5 | 1ec4fc3988352534fef51db04c113c14 |
|
BLAKE2b-256 | caa3c030cd4b63c6ff54c4db3a80f91ebb2b2992139436df733fa79019e2ad70 |