Pymitter integration in Morepath
Project description
more.emit: pymitter integration in Morepath
This package provides Morepath integration for pymitter.
pymitter is a Python port of the extended Node.js EventEmitter 2 approach providing namespaces, wildcards and TTL.
Quick start
Install more.emit:
$ pip install -U more.emit
Extend your App class from EmitApp:
from more.pony import EmitApp
class App(EmitApp):
pass
Now you can define signals:
from .app import App
@App.signal.on('myevent')
def handler1(arg, request):
print(request)
print('handler1 called with', arg)
@App.signal.on('myevent')
def handler2(arg, request):
print('handler2 called with', arg)
You can emit the signals for example from the view:
@App.json(model=Root)
def root_view(self, request):
request.app.signal.emit('myevent', 'foo', request)
return {
'name': 'Root'
}
Example
An example for emitting signals on user creation and user update for sending a confirmation email. This example uses more.pony.
signal.py
from .app import App
@App.signal.on('user.email_updated')
def send_confirmation_email(user, request):
mailer = request.app.service(name='mailer')
mailer.send_confirmation_email(user, request)
view.py
@App.json(model=UserCollection, request_method='POST')
def user_collection_add(self, request):
email = request.json['email']
if not User.exists(email=email):
user = self.add(email=email)
@request.after
def after(response):
request.app.signal.emit('user.email_updated', user, request)
response.status = 201
else:
@request.after
def after(response):
response.status = 409
return {
'validationError': 'Email already exists'
}
@App.json(model=User, request_method='PUT')
def user_update(self, request):
if 'email' in request.json and User.exists(email=request.json['email']):
@request.after
def after(response):
response.status = 409
return {
'validationError': 'Email already exists'
}
else:
self.update(request.json)
if 'email' in request.json:
self.email_confirmed = False
@request.after
def after(response):
request.app.signal.emit('user.email_updated', self, request)
CHANGES
0.1 (2017-04-22)
initial public release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
more.emit-0.1.tar.gz
(4.5 kB
view hashes)
Built Distribution
Close
Hashes for more.emit-0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05870db9c45b51266e6f1df1f8105269bf4f83d2588ae05d5230a4a624c19476 |
|
MD5 | c4ef3f6abff75724fc2fc1a5473f7951 |
|
BLAKE2b-256 | e9784c1fe52da339a97d18e52d0d3b3bd402d7735dfdbb5dafd16477ee88e1e8 |