morepath中的pymitter集成
more.emit的Python项目详细描述
more.emit:morepath中的pymitter集成
此包为pymitter提供了更多路径集成。
pymitter是扩展节点的python端口。jsEventEmitter 2 提供名称空间、通配符和ttl的方法。
快速启动
安装more.emit:
$ pip install -U more.emit
从emitapp扩展应用程序类:
frommore.ponyimportEmitAppclassApp(EmitApp):pass
现在您可以定义信号:
from.appimportApp@App.signal.on('myevent')defhandler1(arg,request):print(request)print('handler1 called with',arg)@App.signal.on('myevent')defhandler2(arg,request):print('handler2 called with',arg)
例如,您可以从视图发出信号:
@App.json(model=Root)defroot_view(self,request):request.app.signal.emit('myevent','foo',request)return{'name':'Root'}
示例
用户创建时发射信号的示例 以及发送确认电子邮件的用户更新。 本例使用more.pony。
signal.py
from.appimportApp@App.signal.on('user.email_updated')defsend_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')defuser_collection_add(self,request):email=request.json['email']ifnotUser.exists(email=email):user=self.add(email=email)@request.afterdefafter(response):request.app.signal.emit('user.email_updated',user,request)response.status=201else:@request.afterdefafter(response):response.status=409return{'validationError':'Email already exists'}@App.json(model=User,request_method='PUT')defuser_update(self,request):if'email'inrequest.jsonandUser.exists(email=request.json['email']):@request.afterdefafter(response):response.status=409return{'validationError':'Email already exists'}else:self.update(request.json)if'email'inrequest.json:self.email_confirmed=False@request.afterdefafter(response):request.app.signal.emit('user.email_updated',self,request)
更改
0.1(2017-04-22)
- 首次公开发行。