>> Are you looking for a publisher-subscriber mechanism? Yes. It would be really good to have it, Django has it and Web2py still doesn't, it could be very nice to have publisher-subscriber especially for project with several apps/plug-ins. It allows to add plug-in that will change main app behavior without the need to modify the main app or adding ugly hooks.
On Oct 23, 4:17 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > On Oct 22, 3:27 pm, Alex Ruddy <person...@gmail.com> wrote: > > > 1) OK, if you need content internationalization in web2py - do and > > handle it by yourself. > > Question: is the secondary table (as in provided example) is the best > > way to do it? > > I used the same table structure of the Django example. I think it is a > good idea to implement it. > > > > > If it should be done manually, what other good ways to do it can you > > suggest? > > (on some project we used one table with all translations and user > > defined function > > in db to get localized string) > > And yes, I referred tohttp://code.google.com/p/django-multilingual-model/ > > as example > > of Django integration. > > > 2) Not sure if Queue is what is needed. As far as I understand Queue > > should be used > > to pass something from one app to other app asynchronously. > > I asked about synchronous way of event and listeners > > Event fires (event "comment_posted" is fired in "comments" plug-in > > when comment is posted for example) > > And many other plug-in like "comment verifier" "admin notified by > > email", "spam checker", "some comment processor" > > that have listeners to "comment_posted" event are doing their job in > > synchronous way. > > The same effect as you have method > > > def post_comment(data): > > verify_comment(data) > > check_if_spam(data) > > some_other_comment_processor(data) > > notify_admin_by_email(data) > > > but when you just have all those functions in different plug-in, so if > > plug-in installed - it will do it's job. And the order listeners calls > > should be also always the same. And until all listeners will not do > > their work, post_comment() will not be finished (synchronous call) > > I guess I misunderstood. Are you looking for a publisher-subscriber > mechanism? If so that could be implemented as an app. Would be nice to > have it. I will think about it some more and implement it, unless > somebody beats me on time. > > > Can this trivial Queue approach do this? > > Yes but would not allow other apps to subscribe to events, only takes > action (synchronously or asynchronously) end an event is sent to them. > > > Thanks. > > On Oct 22, 5:20 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > Thanks Alex, > > > > 1) > > > I supposed you refer to: > > > http://code.google.com/p/django-multilingual-model/ > > > Most of what Django does has to do with handling the table in Django > > > Admin, but it does not do anything special about the actual table > > > structure. Django needs special API like this because of the way it > > > handles joins. We tend to be more low level when dealing with > > > databases. In web2py you could do something like this: > > > > db.define_table('book', > > > Field('isbn')) > > > > db.define_table('book_translation', > > > Field('book',db.book), > > > Field('language'), > > > Field('title'), > > > Field('description')) > > > > >>> book = db.book.insert(isbn="1234567890") > > > >>> db.book.translation.insert( > > > > book=book, > > > language='en' > > > title = "web2py for Dummies", > > > description = "web2py described in simple words.")>>> > > > db.book.translation.insert( > > > > book=book, > > > language='pl' > > > title = "web2py opisane w prostych slowach") > > > > 2) We do not have it but it is trivial to implement. Create a model > > > file called (for example) events.py > > > > import xmlrpclib, cPickle > > > queue=cache.ram('events',lambda:[],10**10) > > > @service.xmlrpc > > > def remote_enqueue(data): > > > session.forget() > > > session._unlock(response) > > > queue.append(data) > > > def enqueue(app,*a): > > > url = 'http://127.0.0.1:8000'+URL > > > (app,'default','call',args='xmlrpc') > > > print url > > > s=xmlrpclib.ServerProxy(url) > > > s.remote_enqueue(cPickle.dumps(a)) > > > def dequeue(): > > > return cPickle.loads(queue.pop()) if queue else None > > > > and now anywhere in your code you can call > > > > enqueue('target_app',....) # to queue something in the other app > > > info = dequeue() # to dequeue first received messages > > > > Hope this helps. > > > > On Oct 22, 2:11 am, Alex <person...@gmail.com> wrote: > > > > > Hello All, > > > > > web2py looks very intersting framework, just bought a manual in pdf > > > > today. > > > > > But in comparision with Django 2 nice things are missed: > > > > > 1. Content Internationalization (automatic handling blog-posts in > > > > several languages) > > > > > 2. Events framework - that allows cross-apps event notification and > > > > because of it better decomposition of features in the apps (included > > > > in django core) > > > > > How to do it in web2py? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---