[web2py] fadeOut response.flash
When I log in the flash telling me that I am logged in does not timeout until I close it. I want it to fade out after a period - say two seconds. I have no clarity on how to change this behaviour in web2py.js. How do get the flash to fade out and set the timeout? Regards Johann -- Because experiencing your loyal love is better than life itself, my lips will praise you. (Psalm 63:3) --
Re: [web2py] Re: No module named plural_rules, end emtpy db in DAL connection
The same warning appears: In [1]: from gluon.dal import DAL,Field WARNING:root:Unable to import plural rules: No module named plural_rules --
[web2py] widgets.checkboxes.widget INPUT inside LABLE
Hello, Using this widget=SQLFORM.widgets.checkboxes.widget for list of values gives the following html code: input id=some1 name=something type=checkbox value=1 / label for=some1Option1/label input id=some2 name=something type=checkbox value=2 / label for=some2Option2/label While if INPUT reside inside LABLE it looks better (imho) label for=some1 input id=some1 name=something type=checkbox value=1 / Option1 /label label for=some2 input id=some2 name=something type=checkbox value=2 / Option2 /label Same time this change might broke some compatibility. Maybe this behavior was made for some reason. Community, please share your opinion. Thanks, --
Re: [web2py] Re: new setup-web2py-nginx-uwsgi-ubuntu.sh
perfect, Ccing Massimo on this final one. Il giorno giovedì 20 dicembre 2012 00:16:25 UTC+1, Paolo ha scritto: Hi I was trying with the script that comes with the stable web2py. with the one on dropbox I problem has gone. Paolo 2012/12/19 Niphlod nip...@gmail.com javascript: @Simone, an other improvement to the script could be to combine into a single server the 80, and 443 to avoid duplicating configuration, as stated here : http://nginx.org/en/docs/http/**configuring_https_servers.** html#single_http_https_serverhttp://nginx.org/en/docs/http/configuring_https_servers.html#single_http_https_server I don't had test this. Also, here the code for permanent redirection server { server_name $hostname; listen 80; return 301 http*s*://$hostname$request_uri; # NOTE: I am not sure for $hostname here, because I didn't set hostname for my VM until now, as in the example (URL below) we can use domainName.com instead if properly configure in nginx ... } People may want separate configs for http and https. The script objective is to have a working copy of web2py. If we start to follow such requests, we'd end up installing postgresql and redis too :P @Paolo: try the script found at the dropbox link. If the same error happens I think we need the log of pip and a hand by Roberto on the specific error... -- -- Paolo --
[web2py] Re: web3py?
Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
[web2py] ABS function inside DAL query
In my web2py DAL query I want to calculate the absolute minimum value of a field. I am trying to convert this sql query to DAL (mysql database) select MIN(ABS(field2)) from tbl_table where field1='abc'; I have tried like below, but not correct result = db(db.tbl_table.field1==value).select(ABS(db.tbl_table.field2).min()) I would greatly appreciate any suggestions. --
[web2py] how to decorate a function without using auth?
hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António --
Re: [web2py] Re: help please
yeah.. backup backup backup.. it's just that sometimes you forget to :( Would it be wise to add some backup module to web2py admin? It could default to 1 copy per day or smthing simillar. It would especially serve Noobs :) On Thu, Dec 20, 2012 at 12:27 AM, Derek sp1d...@gmail.com wrote: The data is gone. Let this be a reminder to all of you out there, back up your data and back it up often. Also, it's not backed up if you can't restore it, so test out restores as well. On Wednesday, December 19, 2012 9:08:47 AM UTC-7, LightDot wrote: First, make a couple of physical copies of the database and do not write into it anymore. Then, working on a copy, you could try restoring / extracting the data by using forensic tools, etc. I'm not aware of a straightforward sqlite restore tool, but there might be one or two out there... I'm sure you're not the first to have such an issue. I guess it comes down to the question of is it worth the time and effort. Regards, Ales On Wednesday, December 19, 2012 4:54:50 PM UTC+1, Aurelijus Useckas wrote: Yeah I know.. I have an old backup only :( me bad On Wed, Dec 19, 2012 at 5:51 PM, Mark czhan...@gmail.com wrote: Do you have any kind of backup files for the database? Or, do your server/computer backup daily or weekly? If there are any backup files, you can restore the deleted data easily. Mark On Wednesday, December 19, 2012 8:21:27 AM UTC-5, Aurelijus Useckas wrote: I've deleted user information from auth_users and suddenly all my data (from other table views) disapears.. Yes, other tables are linked to this one. Specifically for info on updates and simillar... If I restore the same data in auth_users other table still doesn't show anything... I event reset the autoincrement and make it appear totally identical.. still nothing :( did i mess up??? :( -- -- --
[web2py] Beware auth.enable_record_versioning
I just discovered that auth.enable_record_versioning will create archive tables for the archive tables if turned off and turned back on. Not acceptable. --
[web2py] Re: fadeOut response.flash
Maybe you'll find this discussionhttps://groups.google.com/d/topic/web2py/xXGAGZvLDzo/discussion useful. Il giorno giovedì 20 dicembre 2012 09:36:25 UTC+1, Johann Spies ha scritto: When I log in the flash telling me that I am logged in does not timeout until I close it. I want it to fade out after a period - say two seconds. I have no clarity on how to change this behaviour in web2py.js. How do get the flash to fade out and set the timeout? Regards Johann -- Because experiencing your loyal love is better than life itself, my lips will praise you. (Psalm 63:3) --
Re: [web2py] Re: web2py 2.3.2 added + - to some form elements
Hmm I'm not sure how to open a ticket in google...sorry ~_~ On Dec 20, 2012, at 6:48 AM, howesc how...@umich.edu wrote: ooops. i added the - and didn't test the only 1 row case. i'll try and create a patch tomorrow for it. mind opening a ticket in google code? thanks, christian On Tuesday, December 18, 2012 8:17:11 AM UTC-8, Daniele wrote: The newest version of web2py has added some + and - clickable links to form elements so that it is possible to remove the element. However, if there is only one element and one clicks the -, the form disappears and there's no way to get the form element back without refreshing the page. I'll post an image so that you can see what it looks like. I think this is a bug with the newest version because my code hasn't changed at all. There was only a + before... -- --
Re: [web2py] Re: web2py 2.3.2 added + - to some form elements
http://code.google.com/p/web2py/issues/list Il giorno giovedì 20 dicembre 2012 15:31:56 UTC+1, Daniele ha scritto: Hmm I'm not sure how to open a ticket in google...sorry ~_~ On Dec 20, 2012, at 6:48 AM, howesc how...@umich.edu javascript: wrote: ooops. i added the - and didn't test the only 1 row case. i'll try and create a patch tomorrow for it. mind opening a ticket in google code? thanks, christian On Tuesday, December 18, 2012 8:17:11 AM UTC-8, Daniele wrote: The newest version of web2py has added some + and - clickable links to form elements so that it is possible to remove the element. However, if there is only one element and one clicks the -, the form disappears and there's no way to get the form element back without refreshing the page. I'll post an image so that you can see what it looks like. I think this is a bug with the newest version because my code hasn't changed at all. There was only a + before... -- --
[web2py] Re: fadeOut response.flash
Look at the js named web2py.js which comes with the scaffolding. The flash function does not fadeout after time. You can add a function to this file (or modify the flash function) to timeout and fadeOut your flash as you choose. On Thursday, December 20, 2012 4:36:25 PM UTC+8, Johann Spies wrote: When I log in the flash telling me that I am logged in does not timeout until I close it. I want it to fade out after a period - say two seconds. I have no clarity on how to change this behaviour in web2py.js. How do get the flash to fade out and set the timeout? Regards Johann -- Because experiencing your loyal love is better than life itself, my lips will praise you. (Psalm 63:3) --
Re: [web2py] Re: No module named plural_rules, end emtpy db in DAL connection
I will check this. Anyway, the warning is not a problem. It is just trying to import some pluralization libraries and does not find them in path. They are not used by the DAL anyway. On Thursday, 20 December 2012 02:52:17 UTC-6, Kostas M wrote: The same warning appears: In [1]: from gluon.dal import DAL,Field WARNING:root:Unable to import plural rules: No module named plural_rules --
[web2py] Re: widgets.checkboxes.widget INPUT inside LABLE
I am not convinced this is the right fix. Does bootstrap suggest this? I do not think the input should be in the label. Perhaps there is an alternative fix using css? On Thursday, 20 December 2012 03:08:01 UTC-6, KMax wrote: Hello, Using this widget=SQLFORM.widgets.checkboxes.widget for list of values gives the following html code: input id=some1 name=something type=checkbox value=1 / label for=some1Option1/label input id=some2 name=something type=checkbox value=2 / label for=some2Option2/label While if INPUT reside inside LABLE it looks better (imho) label for=some1 input id=some1 name=something type=checkbox value=1 / Option1 /label label for=some2 input id=some2 name=something type=checkbox value=2 / Option2 /label Same time this change might broke some compatibility. Maybe this behavior was made for some reason. Community, please share your opinion. Thanks, --
Re: [web2py] Re: new setup-web2py-nginx-uwsgi-ubuntu.sh
please email me the patch of latest file when ready for inclusion. On Thursday, 20 December 2012 03:18:20 UTC-6, Niphlod wrote: perfect, Ccing Massimo on this final one. Il giorno giovedì 20 dicembre 2012 00:16:25 UTC+1, Paolo ha scritto: Hi I was trying with the script that comes with the stable web2py. with the one on dropbox I problem has gone. Paolo 2012/12/19 Niphlod nip...@gmail.com @Simone, an other improvement to the script could be to combine into a single server the 80, and 443 to avoid duplicating configuration, as stated here : http://nginx.org/en/docs/http/**configuring_https_servers.** html#single_http_https_serverhttp://nginx.org/en/docs/http/configuring_https_servers.html#single_http_https_server I don't had test this. Also, here the code for permanent redirection server { server_name $hostname; listen 80; return 301 http*s*://$hostname$request_uri; # NOTE: I am not sure for $hostname here, because I didn't set hostname for my VM until now, as in the example (URL below) we can use domainName.com instead if properly configure in nginx ... } People may want separate configs for http and https. The script objective is to have a working copy of web2py. If we start to follow such requests, we'd end up installing postgresql and redis too :P @Paolo: try the script found at the dropbox link. If the same error happens I think we need the log of pip and a hand by Roberto on the specific error... -- -- Paolo --
[web2py] Re: web3py?
They always did although the syntax is cumbersone DIV('content',**{'data-something':'something value'}) On Thursday, 20 December 2012 04:16:54 UTC-6, Arnon Marcus wrote: Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
[web2py] Re: ABS function inside DAL query
OK. Ib trunk now: db().select(db.tbl_table.field2.abs().min()) On Thursday, 20 December 2012 05:20:15 UTC-6, Pradeeshnarayan wrote: In my web2py DAL query I want to calculate the absolute minimum value of a field. I am trying to convert this sql query to DAL (mysql database) select MIN(ABS(field2)) from tbl_table where field1='abc'; I have tried like below, but not correct result = db(db.tbl_table.field1==value).select(ABS(db.tbl_table.field2).min()) I would greatly appreciate any suggestions. --
[web2py] Re: how to decorate a function without using auth?
@requires(auth.user.F1=='F') def yourfunction(...): On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote: hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António --
[web2py] Re: Beware auth.enable_record_versioning
I do not understand. Can you explain? On Thursday, 20 December 2012 08:11:42 UTC-6, Cliff Kachinske wrote: I just discovered that auth.enable_record_versioning will create archive tables for the archive tables if turned off and turned back on. Not acceptable. --
[web2py] Re: web2py 2.3.2 added + - to some form elements
For now I have remove the - button. On Wednesday, 19 December 2012 23:48:37 UTC-6, howesc wrote: ooops. i added the - and didn't test the only 1 row case. i'll try and create a patch tomorrow for it. mind opening a ticket in google code? thanks, christian On Tuesday, December 18, 2012 8:17:11 AM UTC-8, Daniele wrote: The newest version of web2py has added some + and - clickable links to form elements so that it is possible to remove the element. However, if there is only one element and one clicks the -, the form disappears and there's no way to get the form element back without refreshing the page. I'll post an image so that you can see what it looks like. I think this is a bug with the newest version because my code hasn't changed at all. There was only a + before... --
Re: [web2py] Re: The book updates and status
On 19 December 2012 19:11, Massimo Di Pierro massimo.dipie...@gmail.comwrote: It would help me if people could add to this thread some comments about: - what needs clarification? The request I mentioned in an earlier message ( https://groups.google.com/forum/?fromgroups=#!searchin/web2py/johann$20spies/web2py/s2tn5S_1la4/0inWrg4z14YJ ) I repeat it here: Can somebody please update the book's documentation about the grid. All the arguments for using the grid are not covered in the book. There is no documentation in the code for the grid options either. e.g. What is the content of the dicts createargs, viewargs, editargs supposed to be? Regards Johann -- Because experiencing your loyal love is better than life itself, my lips will praise you. (Psalm 63:3) --
[web2py] Re: web3py?
correction, the _ in front is needed as always DIV('content',**{'_data-something':'something value'}) Il giorno giovedì 20 dicembre 2012 15:58:25 UTC+1, Massimo Di Pierro ha scritto: They always did although the syntax is cumbersone DIV('content',**{'data-something':'something value'}) On Thursday, 20 December 2012 04:16:54 UTC-6, Arnon Marcus wrote: Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
[web2py] Re: Query results from 2 children tables from same parent ordered by date
Sorry I do not have a good solution at the moment. Can you open a ticket about this so we'll will not forget. For now you may want to consider creating a database view and selecting from the view. You would need to create a model (readonly) to access the view. On Wednesday, 19 December 2012 16:19:33 UTC-6, Mamisoa Andriantafika wrote: Best results to UNION I could have was using the mutex table trick: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ with this syntax: exams_mutex = db().select(db.dataset1.ALL, db.dataset2.ALL, left=[db.dataset1.on(db.mutex.i==0),db.dataset2.on(db.mutex.i==1)]) Two problems left: 1- how to merge the 2 date columns 2- how to order then by date SQL answer is there: http://stackoverflow.com/questions/8245630/mysql-combine-two-date-fields-and-then-order-by SELECT [some info], GREATEST( ticket_date, ticket_history_date ) as latest_date FROM [tables and join] ORDER BY latest_date Is is possible using to process it using DAL? Le dimanche 16 décembre 2012 17:40:22 UTC+1, Mamisoa Andriantafika a écrit : Sorry I still get: Cannot | incompatible Rows objects. I'll change the field name date you are very right. Le dimanche 16 décembre 2012 15:49:57 UTC+1, Massimo Di Pierro a écrit : My bad. Thry this: fields1 = [db.dataset1.date, db.dataset1.param1, db.dateset1.patient_id] fields2 = [db.dataset2.date, db.dataset2.test1, db.dateset2.patient_id] rows = ( db(db.dataset1).select(*fields1) | db(db.dataset2).select(*fields2) ).sort(lambda row: row.date) Mind that having a column called date will result in major headaches in the future. On Sunday, 16 December 2012 03:15:46 UTC-6, Mamisoa Andriantafika wrote: Hi again, | seems not to work because the column numbers is different between the 2 tables? Le samedi 15 décembre 2012 20:23:44 UTC+1, Massimo Di Pierro a écrit : If you have lots of records you may be able to do it with a database view but that may be db specific. If you don't have too many records you can do: rows = ( db(db.dataset1).select() | db(db.dataset2).select() ).sort(lambda row: row.date) On Saturday, 15 December 2012 08:43:35 UTC-6, Mamisoa Andriantafika wrote: Hi, I have this db model: db.define_table('patients', Field('name', 'string', length=32), Field('firstname', 'string', length=32), Field('dob', 'date'), format='%(name)s') db.define_table('dataset1', Field('date', 'date', length=32), Field('param1', 'string', length=50), Field('param2', 'string', length=50), Field('patient_id', db.patients, writable=False, readable=False)) db.define_table('dataset2', Field('date', 'date', notnull=True), Field('test1', 'text'), Field('patient_id', db.patients, writable=False, readable=True)) I'd like to show in one view, for 1 patient_id, all the corresponding dataset1 and dataset2 ordered by date. What query should I use? Do I have to use an intermediate table 'history' to record each activity in dataset1/2 to get a result? Thanks for help. --
[web2py] Re: upload from Edit page
Can you explain what you are trying to accomplish and what your models are? I do not understand from the code. On Tuesday, 18 December 2012 13:51:12 UTC-6, ArNew wrote: Hi Everyone, I need help urgently. In my application, I am have included upload fields in Create and edit page. Through create page, it was very straight forward with: td{{=form.custom.widget.attachment}}/td (View) Field('attachment','upload',uploadfolder=os.path.join(request.folder, 'attachments')) (DAL). if form.vars.attachment: form.vars.attachment_name = request.vars.attachment.filename id = thisdb.service_attachments.insert(**thisdb.service_attachments._filter_fields(form.vars)) .(Controller) And this works great. That with Edit page is not the same, as it is not about editing the current image, but uploading more attachments. So I tried doing something like this: input class=upload id=service_attachments_attachment name=attachment type=file / (view) if request.vars.attachment != '': form.vars.attachment = request.vars.attachment.file filename = request.vars.attachment.filename form.vars.attachment_name = filename id = thisdb.service_attachments.insert(**thisdb.service_attachments._filter_fields(form.vars)) This follows the very similar procedure of saving the encrypted version of attachment name in the attachment field, but it changes the extension to .txt for all the attachments. It saves the attachment as service_attachments.attachment.b19d4ef38978e8e6.746d707437756c626f.txt where as the orginal attachment is photo.JPG. So ideall it should save it as service_attachments.attachment.b19d4ef38978e8e6.746d707437756c626f.JPG. Can anyone please help me with this? --
[web2py] Re: Login manually
If your data is not confidential, any chance you send me your application? To me this looks like corrupted data in database as if the password field was at some pointed treated as type='list:string' and than changed back to type='password'. Is it possible? Massimo On Wednesday, 19 December 2012 11:28:15 UTC-6, Wonton wrote: Yes, of course. This is my ticket: Error ticket for dianaappv1 Ticket ID 127.0.0.1.2012-12-19.18-24-12.5d2b292c-7e9a-4281-a9f7-bb9aa17bbd0c type 'exceptions.ValueError' unsupported hash type |pbkdf2(1000,20,sha512) Versión web2py™ (2, 2, 1, datetime.datetime(2012, 10, 21, 16, 57, 4), 'stable') Python Python 2.7.1: /usr/bin/python Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Traceback (most recent call last): File /Applications/web2py/gluon/restricted.py, line 212, in restricted exec ccode in environment File /Applications/web2py/applications/dianaappv1/controllers/default.py https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py, line 101, in module File /Applications/web2py/gluon/globals.py, line 188, in lambda self._caller = lambda f: f() File /Applications/web2py/applications/dianaappv1/controllers/default.py https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py, line 27, in public_call return servicios_publicos() File /Applications/web2py/gluon/tools.py, line 4387, in __call__ return self.serve_json(request.args[1:]) File /Applications/web2py/gluon/tools.py, line 4197, in serve_json s = universal_caller(self.json_procedures[args[0]], *args[1:], **d) File /Applications/web2py/gluon/tools.py, line 3889, in universal_caller return f(**arg_dict) File /Applications/web2py/applications/dianaappv1/controllers/default.py https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py, line 65, in login user = auth.login_bare(usuario, password) File /Applications/web2py/gluon/tools.py, line 1789, in login_bare if not user.registration_key and password == user[passfield]: File /Applications/web2py/gluon/validators.py, line 2636, in __eq__ h = simple_hash(self.password, key, salt, digest_alg) File /Applications/web2py/gluon/utils.py, line 74, in simple_hash h = hashlib.new(digest_alg) File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py, line 121, in __hash_new return __get_builtin_constructor(name)(string) File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py, line 88, in __get_builtin_constructor raise ValueError('unsupported hash type %s' % name) ValueError: unsupported hash type |pbkdf2(1000,20,sha512) Error snapshot [image: help] type 'exceptions.ValueError'(unsupported hash type |pbkdf2(1000,20,sha512)) inspect attributes Frames - *File /Applications/web2py/gluon/restricted.py in restricted at line 212* código argumentos variables - *File /Applications/web2py/applications/dianaappv1/controllers/default.py in module at line 101* código argumentos variables - *File /Applications/web2py/gluon/globals.py in lambda at line 188* código argumentos variables - *File /Applications/web2py/applications/dianaappv1/controllers/default.py in public_call at line 27* código argumentos variables - *File /Applications/web2py/gluon/tools.py in __call__ at line 4387* código argumentos variables - *File /Applications/web2py/gluon/tools.py in serve_json at line 4197* código argumentos variables - *File /Applications/web2py/gluon/tools.py in universal_caller at line 3889* código argumentos variables - *File /Applications/web2py/applications/dianaappv1/controllers/default.py in login at line 65* código argumentos variables - *File /Applications/web2py/gluon/tools.py in login_bare at line 1789* código argumentos variables - *File /Applications/web2py/gluon/validators.py in __eq__ at line 2636* código argumentos variables - *File /Applications/web2py/gluon/utils.py in simple_hash at line 74* código argumentos variables - *File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py in __hash_new at line 121* código argumentos variables - *File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py in __get_builtin_constructor at line 88* código argumentos variables Function argument list (name='|pbkdf2(1000,20,sha512)') Code listing 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. if bs ==
Re: [web2py] Re: The book updates and status
Niphlod just did. We are working on merging the edits. It will be done today, together with lots of other edits. On Thursday, 20 December 2012 00:43:49 UTC-6, Johann Spies wrote: On 19 December 2012 19:11, Massimo Di Pierro massimo@gmail.comjavascript: wrote: It would help me if people could add to this thread some comments about: - what needs clarification? The request I mentioned in an earlier message ( https://groups.google.com/forum/?fromgroups=#!searchin/web2py/johann$20spies/web2py/s2tn5S_1la4/0inWrg4z14YJ ) I repeat it here: Can somebody please update the book's documentation about the grid. All the arguments for using the grid are not covered in the book. There is no documentation in the code for the grid options either. e.g. What is the content of the dicts createargs, viewargs, editargs supposed to be? Regards Johann -- Because experiencing your loyal love is better than life itself, my lips will praise you. (Psalm 63:3) --
[web2py] Re: web3py?
Oops. right. I wish there was a simple syntax but I cannot think about one. On Thursday, 20 December 2012 09:07:21 UTC-6, Niphlod wrote: correction, the _ in front is needed as always DIV('content',**{'_data-something':'something value'}) Il giorno giovedì 20 dicembre 2012 15:58:25 UTC+1, Massimo Di Pierro ha scritto: They always did although the syntax is cumbersone DIV('content',**{'data-something':'something value'}) On Thursday, 20 December 2012 04:16:54 UTC-6, Arnon Marcus wrote: Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
Re: [web2py] Interesting - Brython (python to javascript)
Looks like this is too limited to be useful. On Monday, 17 December 2012 01:08:41 UTC-6, viniciusban wrote: Brypthon doesn't support string interpolation, too. :-( On Sun, Dec 16, 2012 at 6:40 PM, Arnon Marcus a.m.m...@gmail.comjavascript: wrote: From what I saw, it does not support many fundamental features of python, like class-inheritance (class, classMethod) modules (__import__, from, as), scope (globals, nonlocal) and parsing (exec, eval). I think these are trivial for python developement, and should have some kind of design-pattern transpiling specification that it follows. I think CoffeeScript actually has many of these already implemented, as is quite pythonic already in much of it's syntax - and is much closer to JavaScript in the first place and already has tons of tools for denugging, client/server-side automatic-transpiling, bundled up in minification/compression algorythms, etc... It's a cool idea, and pyjammas has existed for a long time now, but is anyone seriously thinking about using that in production? I think as long as browsers don't have some kind of cross-language VMs, or at least a PVM built-in/plugin, than with all the excitement, it will remain useless. I mean, how do you debug this? -- --
Re: [web2py] Re: how to decorate a function without using auth?
extra fields are available in my auth.user var but they have None instead of the real value so i create an extra function def checkempreiteiro(user): print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==user).select()[0] return record['isempreiteiro'] #*returns True* @auth.requires_login() @auth.requires(checkempreiteiro(auth.user_id)==True) 2012/12/20 Massimo Di Pierro massimo.dipie...@gmail.com @requires(auth.user.F1=='F') def yourfunction(...): On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote: hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António -- --
[web2py] Re: how to decorate a function without using auth?
Note, should be @auth.requires(...). Anthony On Thursday, December 20, 2012 10:04:26 AM UTC-5, Massimo Di Pierro wrote: @requires(auth.user.F1=='F') def yourfunction(...): On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote: hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António --
[web2py] Re: fadeOut response.flash
If you are interested you could add this code: var flashBox = jQuery(.flash), flashTimer; flashBox.click(function(){ if (flashTimer) clearTimeout(flashTimer); flashBox.fadeOut(400, function(){jQuery(.flash).html('')}); }); flashTimer = setTimeout(function(){flashBox.fadeOut(400, function(){jQuery (.flash).html('')});}, 8000); inside the function web2py_ajax_init in static/js/web2py.js file (attached you'll find modified version for your personal usage. Please beware that it is related to the last trunk version of web2py and it could be incompatible with the version you are using currently). By this code the flash message will close after 8 seconds if the user doesn't close it before. Il giorno giovedì 20 dicembre 2012 15:31:38 UTC+1, Paolo Caruccio ha scritto: Maybe you'll find this discussionhttps://groups.google.com/d/topic/web2py/xXGAGZvLDzo/discussion useful. Il giorno giovedì 20 dicembre 2012 09:36:25 UTC+1, Johann Spies ha scritto: When I log in the flash telling me that I am logged in does not timeout until I close it. I want it to fade out after a period - say two seconds. I have no clarity on how to change this behaviour in web2py.js. How do get the flash to fade out and set the timeout? Regards Johann -- Because experiencing your loyal love is better than life itself, my lips will praise you. (Psalm 63:3) -- web2py.js Description: JavaScript source
[web2py] Re: The book updates and status
This is in: http://web2py.com/books/default/chapter/29/07?search=SQLFORM.grid#SQLFORM.grid-and-SQLFORM.smartgrid along with tons of other additions. :-) I hope to make a first pdf draft by the end of next week. Massimo On Wednesday, 19 December 2012 20:53:25 UTC-6, Andrew W wrote: I'm happy to proof read. Send it through when ready. Andrew W On Thursday, December 20, 2012 2:46:41 PM UTC+13, Anthony wrote: On Wednesday, December 19, 2012 5:56:48 PM UTC-5, Massimo Di Pierro wrote: I have been going over that document. The things in gray were not in the published 4th edition but are in the online version. Make sure you click the link below -- it's an updated version of the original document. All the gray items were removed, and some newer items have been added (though some of them may already be in the book). Anthony On Wednesday, 19 December 2012 14:15:46 UTC-6, Anthony wrote: This document is a bit old, so some of the items may already have been added: https://docs.google.com/document/d/1yQy0F5HcxiecBOBLblrLmAAAsAK6sL37wSL527yssGk/edit --
Re: [web2py] Re: how to decorate a function without using auth?
extra fields are available in my auth.user var but they have None instead of the real value so i create an extra function def checkempreiteiro(user): print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==user).select()[0] return record['isempreiteiro'] #*returns True* @auth.requires_login() @auth.requires(checkempreiteiro(auth.user_id)==True) 2012/12/20 Anthony abasta...@gmail.com Note, should be @auth.requires(...). Anthony On Thursday, December 20, 2012 10:04:26 AM UTC-5, Massimo Di Pierro wrote: @requires(auth.user.F1=='F') def yourfunction(...): On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote: hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António -- --
[web2py] Re: widgets.checkboxes.widget INPUT inside LABLE
I think as Massimo said, but W3C raccomandation on formshttp://www.w3.org/TR/html5/forms.html#forms tells: To label a control, the label element is used; the label text and the control itself go inside the label element. So KMax request should be acceptable Il giorno giovedì 20 dicembre 2012 15:57:03 UTC+1, Massimo Di Pierro ha scritto: I am not convinced this is the right fix. Does bootstrap suggest this? I do not think the input should be in the label. Perhaps there is an alternative fix using css? On Thursday, 20 December 2012 03:08:01 UTC-6, KMax wrote: Hello, Using this widget=SQLFORM.widgets.checkboxes.widget for list of values gives the following html code: input id=some1 name=something type=checkbox value=1 / label for=some1Option1/label input id=some2 name=something type=checkbox value=2 / label for=some2Option2/label While if INPUT reside inside LABLE it looks better (imho) label for=some1 input id=some1 name=something type=checkbox value=1 / Option1 /label label for=some2 input id=some2 name=something type=checkbox value=2 / Option2 /label Same time this change might broke some compatibility. Maybe this behavior was made for some reason. Community, please share your opinion. Thanks, --
Re: [web2py] Re: how to decorate a function without using auth?
Now i have 2 problems. Recap 1 - print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==auth.user_id).select()[0] print record['isempreiteiro'] #*returns True This is the real value* Why? 2 - my decorated function in controller default works ok when user logged in @auth.requires_login() *#@auth.requires(checkempreiteiro(auth.user_id)==True) * def inserttrab(): form = SQLFORM(db.trabalhador) if form.accepts(request.vars, session): session.flash = 'registo inserido com sucesso' redirect(URL()) return dict(form=form) but gives an error when the user does logout. logging out should redirect to login page but the line *#@auth.requires(checkempreiteiro(auth.user_id)==True) * def inserttrab(): ... give a ticket with the error msg. File C:\web2pyGit\web2py\gluon\dal.py, line 9170, in __getitem__ row = self.records[i] IndexError: list index out of range When i browse to index page the same error .Why? thank you 2012/12/20 António Ramos ramstei...@gmail.com extra fields are available in my auth.user var but they have None instead of the real value so i create an extra function def checkempreiteiro(user): print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==user).select()[0] return record['isempreiteiro'] #*returns True* @auth.requires_login() @auth.requires(checkempreiteiro(auth.user_id)==True) 2012/12/20 Anthony abasta...@gmail.com Note, should be @auth.requires(...). Anthony On Thursday, December 20, 2012 10:04:26 AM UTC-5, Massimo Di Pierro wrote: @requires(auth.user.F1=='F') def yourfunction(...): On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote: hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António -- --
[web2py] SQLFORM in html - Book example
I tried the book example in http://web2py.com/books/default/chapter/29/07#SQLFORM-in-HTML It's not working. I tried to use to sqlform.process from a html form using the way, but did not work. Then I tried exactly the same code on book and still did not work. Its not validating the form, just flashing fill the form message. Am I missing something? --
[web2py] json service
trying to expose this simple controller I got the subsequent error... does anybody understand why? the query runs perfectly inserted manually in a ipdb console... @service.json def mRender(): #import ipdb; ipdb.set_trace() query = (db.plugin_lookout_fields.table_id==source_table_id) res = db(query).select(db.plugin_lookout_fields.field_name, limitby=(1, 4, )).as_list() return res ERROR:Rocket.Errors.Thread-3:Unhandled Error when serving connection: Traceback (most recent call last): File /home/manuele/portali/web2py-2.2.1/gluon/rocket.py, line 1318, in run self.run_app(conn) File /home/manuele/portali/web2py-2.2.1/gluon/rocket.py, line 1840, in run_app self.conn.sendall(b('0\r\n\r\n')) File /usr/lib/python2.7/socket.py, line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 32] Broken pipe --
Re: [web2py] Re: how to decorate a function without using auth?
the first problem i solved with loggout then login 2? 2012/12/20 António Ramos ramstei...@gmail.com Now i have 2 problems. Recap 1 - print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==auth.user_id).select()[0] print record['isempreiteiro'] #*returns True This is the real value* Why? 2 - my decorated function in controller default works ok when user logged in @auth.requires_login() *#@auth.requires(checkempreiteiro(auth.user_id)==True) * def inserttrab(): form = SQLFORM(db.trabalhador) if form.accepts(request.vars, session): session.flash = 'registo inserido com sucesso' redirect(URL()) return dict(form=form) but gives an error when the user does logout. logging out should redirect to login page but the line *#@auth.requires(checkempreiteiro(auth.user_id)==True) * def inserttrab(): ... give a ticket with the error msg. File C:\web2pyGit\web2py\gluon\dal.py, line 9170, in __getitem__ row = self.records[i] IndexError: list index out of range When i browse to index page the same error .Why? thank you 2012/12/20 António Ramos ramstei...@gmail.com extra fields are available in my auth.user var but they have None instead of the real value so i create an extra function def checkempreiteiro(user): print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==user).select()[0] return record['isempreiteiro'] #*returns True* @auth.requires_login() @auth.requires(checkempreiteiro(auth.user_id)==True) 2012/12/20 Anthony abasta...@gmail.com Note, should be @auth.requires(...). Anthony On Thursday, December 20, 2012 10:04:26 AM UTC-5, Massimo Di Pierro wrote: @requires(auth.user.F1=='F') def yourfunction(...): On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote: hello i have a function to be acessed only by users with an extra field F1 set to F how to protect this function to not be used bu everyone? what is the best way? thank you António -- --
Re: [web2py] Re: how to hide a field until another field is chosen using SQLFORM.smartgrid
Thanks Jose, that was too easy! Jim From: Jose jjac...@gmail.com Reply-To: web2py@googlegroups.com Date: Wednesday, December 19, 2012 4:26 AM To: web2py@googlegroups.com Subject: [web2py] Re: how to hide a field until another field is chosen using SQLFORM.smartgrid El martes, 11 de diciembre de 2012 21:50:07 UTC-3, JimK escribió: I have a table defined with many columns but some are only relevant if a previous one is chosen. How would I hide a field like this with SQLFORM.smartgrid? model: db.define_table('t_schedule_frat_query', Field('f_recurring', type='boolean', notnull=True, label=T('Recurring schedule?'), Field('f_schedule_frequency', type='string', label=T('Schedule Frequency'), auth.signature, format='%(f_query_name)s', migrate=True) controller: def foo(): form = SQLFORM.smartgrid(db.t_frat_query) return locals() view: default view On the webpage, t_schedule_frat_query. f_schedule_frequency should only show up if t_schedule_frat_query. f_recurring is checked. How would I do this? Jim Hi Jim maybe this [1] will help Jose [1] http://www.web2py.com/books/default/chapter/29/11#Conditional-fields-in-form s -- --
Re: [web2py] Re: how to decorate a function without using auth?
On Thursday, December 20, 2012 11:00:28 AM UTC-5, Ramos wrote: Now i have 2 problems. Recap 1 - print auth.user.isempreiteiro # *returns None* record=db(db.auth_user.id==auth.user_id).select()[0] print record['isempreiteiro'] #*returns True This is the real value* Why? Is isempreiteiro a virtual field or regular field? Is its value set after login (auth.user is stored in the session, so it won't be updated after login even if the record is updated)? If so, you can manually update auth.user when the record is updated. 2 - my decorated function in controller default works ok when user logged in @auth.requires_login() *#@auth.requires(checkempreiteiro(auth.user_id)==True) * def inserttrab(): form = SQLFORM(db.trabalhador) if form.accepts(request.vars, session): session.flash = 'registo inserido com sucesso' redirect(URL()) return dict(form=form) but gives an error when the user does logout. logging out should redirect to login page but the line Your checkempreiteiro() function does db(db.auth_user.id ==auth.user_id).select()[0], but if the user is not logged in, auth.user_id will be None, and the query will return no results -- so subscripting with [0] will produce an error. Instead, you can do db(db.auth_user.id ==auth.user_id).select().first(), which will return None if there are no records. Also, note that by default, @auth.requires(...) already requires login, so you don't have to precede it with @auth.requires_login(). Finally, keep in mind that the condition within @auth.requires(...) will be executed on every request to that controller (even requests to other functions within the controller), so it is better to put the condition inside a lambda so it will only get executed when that specific function is called. Actually, in a case like this, you're probably better off putting a flag in the session so you don't have to repeat the db query on every request to that function. Anthony --
[web2py] Re: SQLFORM in html - Book example
Did you add session=None to the call to .process()? Anthony On Thursday, December 20, 2012 11:22:32 AM UTC-5, Fabiano Faver wrote: I tried the book example in http://web2py.com/books/default/chapter/29/07#SQLFORM-in-HTML It's not working. I tried to use to sqlform.process from a html form using the way, but did not work. Then I tried exactly the same code on book and still did not work. Its not validating the form, just flashing fill the form message. Am I missing something? --
[web2py] Re: widgets.checkboxes.widget INPUT inside LABLE
On Thursday, December 20, 2012 10:50:47 AM UTC-5, Paolo Caruccio wrote: I think as Massimo said, but W3C raccomandation on formshttp://www.w3.org/TR/html5/forms.html#forms tells: To label a control, the label element is used; the label text and the control itself go inside the label element. So KMax request should be acceptable This appears to be how Bootstrap does it as well. Anthony --
[web2py] Web2py vs Grails on VSCharts.com
i saw this page and link to share http://vschart.com/compare/web2py/vs/grails --
[web2py] Ver 2.3.2 changes the order models are loaded.
I have database tables defined in models/db.py. I have a controller-specific model defined in a models/client subdirectory. Ver 2.3.2 loads the models in a different order from ver 2.2.1. Ver 2.2.1 models/0.py models/db.py models/clients/edit/db.py Ver 2.3.2 models/0.py models/clients/edit/db.py models/db.py The models/clients/edit/db.py depends on variables defined in modes/db.py so I get errors with Ver 2.3.2 The sort=False argument was removed from the listdir call in this line of gluon/compileapp.py def run_models_in() models = listdir(path, '^\w+\.py$', 0, sort=False) # Ver 2.2.1 models = listdir(path, '^\w+\.py$', 0) # Ver 2.3.2 If I restore that, it works again. The issue was discussed here: https://groups.google.com/d/topic/web2py/ZfI7K9jW45w/discussion In Ver 2.2.1, files in the models directory are first loaded in alphabetically order. Then each subfolder is handled in order, model files in subfolders are loaded in alphabetical order. In Ver 2.3.2, all models are sorted by path name and then loaded in that order. I can rename subfolders so they are loaded properly but before I change anything I'd like to make sure the effects of dropping sort=False were intended. --
[web2py] Re: Ver 2.3.2 changes the order models are loaded.
That probably wasn't the right change. I think it should put the subfolders in alphabetical order and then run the files within each folder in alphabetical order (that's roughly how it worked prior to the change, but alphabetical ordering of the subfolders was not guaranteed). Anthony On Thursday, December 20, 2012 1:12:20 PM UTC-5, Jim Karsten wrote: I have database tables defined in models/db.py. I have a controller-specific model defined in a models/client subdirectory. Ver 2.3.2 loads the models in a different order from ver 2.2.1. Ver 2.2.1 models/0.py models/db.py models/clients/edit/db.py Ver 2.3.2 models/0.py models/clients/edit/db.py models/db.py The models/clients/edit/db.py depends on variables defined in modes/db.py so I get errors with Ver 2.3.2 The sort=False argument was removed from the listdir call in this line of gluon/compileapp.py def run_models_in() models = listdir(path, '^\w+\.py$', 0, sort=False) # Ver 2.2.1 models = listdir(path, '^\w+\.py$', 0) # Ver 2.3.2 If I restore that, it works again. The issue was discussed here: https://groups.google.com/d/topic/web2py/ZfI7K9jW45w/discussion In Ver 2.2.1, files in the models directory are first loaded in alphabetically order. Then each subfolder is handled in order, model files in subfolders are loaded in alphabetical order. In Ver 2.3.2, all models are sorted by path name and then loaded in that order. I can rename subfolders so they are loaded properly but before I change anything I'd like to make sure the effects of dropping sort=False were intended. --
[web2py] Re: widgets.checkboxes.widget INPUT inside LABLE
For completeness: wrapping the input controls with label should be avoided when for the layout is used a table. In such case the label goes in one TD and the associated control in another TD. Bootstrap, indeed, doesn't use table layout for the forms. Il giorno giovedì 20 dicembre 2012 16:50:47 UTC+1, Paolo Caruccio ha scritto: I think as Massimo said, but W3C raccomandation on formshttp://www.w3.org/TR/html5/forms.html#forms tells: To label a control, the label element is used; the label text and the control itself go inside the label element. So KMax request should be acceptable Il giorno giovedì 20 dicembre 2012 15:57:03 UTC+1, Massimo Di Pierro ha scritto: I am not convinced this is the right fix. Does bootstrap suggest this? I do not think the input should be in the label. Perhaps there is an alternative fix using css? On Thursday, 20 December 2012 03:08:01 UTC-6, KMax wrote: Hello, Using this widget=SQLFORM.widgets.checkboxes.widget for list of values gives the following html code: input id=some1 name=something type=checkbox value=1 / label for=some1Option1/label input id=some2 name=something type=checkbox value=2 / label for=some2Option2/label While if INPUT reside inside LABLE it looks better (imho) label for=some1 input id=some1 name=something type=checkbox value=1 / Option1 /label label for=some2 input id=some2 name=something type=checkbox value=2 / Option2 /label Same time this change might broke some compatibility. Maybe this behavior was made for some reason. Community, please share your opinion. Thanks, --
Re: [web2py] Re: web2py 2.3.2 added + - to some form elements
ok, here is a patch against current *trunk*. this should never allow you to remove the last item from the list. note that when the list is empty (showing one field with no data) the + and - buttons appear to be no-op. On 12/20/12 7:06 , Massimo Di Pierro wrote: For now I have remove the - button. On Wednesday, 19 December 2012 23:48:37 UTC-6, howesc wrote: ooops. i added the - and didn't test the only 1 row case. i'll try and create a patch tomorrow for it. mind opening a ticket in google code? thanks, christian On Tuesday, December 18, 2012 8:17:11 AM UTC-8, Daniele wrote: The newest version of web2py has added some + and - clickable links to form elements so that it is possible to remove the element. However, if there is only one element and one clicks the -, the form disappears and there's no way to get the form element back without refreshing the page. I'll post an image so that you can see what it looks like. I think this is a bug with the newest version because my code hasn't changed at all. There was only a + before... -- diff -r 4c55a243c4c2 gluon/sqlhtml.py --- a/gluon/sqlhtml.py Thu Dec 20 09:22:24 2012 -0600 +++ b/gluon/sqlhtml.py Thu Dec 20 10:45:52 2012 -0800 @@ -263,18 +263,27 @@ jQuery.fn.grow_input = function() { return this.each(function() { var ul = this; -jQuery(ul).find(:text).after('a href=javascript:void(0)+/a').keypress(function (e) { return (e.which == 13) ? pe(ul) : true; }).next().click(function(){ pe(ul) }); +jQuery(ul).find(:text).after('a href=javascript:void(0)+/anbsp;a href=javascript:void(0)-/a').keypress(function (e) { return (e.which == 13) ? pe(ul, e) : true; }).next().click(function(e){ pe(ul, e) }).next().click(function(e){ rl(ul, e)}); }); }; function pe(ul, e) { var new_line = ml(ul); rel(ul); - new_line.appendTo(ul); + if ($(e.target).parent().is(':visible')) { +//make sure we didn't delete the element before we insert after +new_line.insertAfter($(e.target).parent()); + } else { +//the line we clicked on was deleted, just add to end of list +new_line.appendTo(ul); + } new_line.find(:text).focus(); return false; } function rl(ul, e) { - jQuery(e.target).parent().remove(); + if (jQuery(ul).children().length 1) { +//only remove if we have more than 1 item so the list is never empty +$(e.target).parent().remove(); + } } function ml(ul) { var line = jQuery(ul).find(li:first).clone(true);
Re: [web2py] Re: web2py 2.3.2 added + - to some form elements
and here is the diff between the 2.3.2 release and the patch i made in case you want to apply it to gluon/sqlhtml.py in your environment. sorry for the headache! cfh On 12/20/12 7:06 , Massimo Di Pierro wrote: For now I have remove the - button. On Wednesday, 19 December 2012 23:48:37 UTC-6, howesc wrote: ooops. i added the - and didn't test the only 1 row case. i'll try and create a patch tomorrow for it. mind opening a ticket in google code? thanks, christian On Tuesday, December 18, 2012 8:17:11 AM UTC-8, Daniele wrote: The newest version of web2py has added some + and - clickable links to form elements so that it is possible to remove the element. However, if there is only one element and one clicks the -, the form disappears and there's no way to get the form element back without refreshing the page. I'll post an image so that you can see what it looks like. I think this is a bug with the newest version because my code hasn't changed at all. There was only a + before... -- 272c272,278 new_line.insertAfter(jQuery(e.target).parent()); --- if ($(e.target).parent().is(':visible')) { //make sure we didn't delete the element before we insert after new_line.insertAfter($(e.target).parent()); } else { //the line we clicked on was deleted, just add to end of list new_line.appendTo(ul); } 277c283,286 jQuery(e.target).parent().remove(); --- if (jQuery(ul).children().length 1) { //only remove if we have more than 1 item so the list is never empty $(e.target).parent().remove(); }
[web2py] Re: json service
yes. You are not supposed to return an iterable (in your case a list). web2py thinks you want to do streaming and will start looping over the iterable. This should change in web3py not we cannot change it in web2py. Massimo On Thursday, 20 December 2012 10:24:05 UTC-6, Manuele wrote: trying to expose this simple controller I got the subsequent error... does anybody understand why? the query runs perfectly inserted manually in a ipdb console... @service.json def mRender(): #import ipdb; ipdb.set_trace() query = (db.plugin_lookout_fields.table_id==source_table_id) res = db(query).select(db.plugin_lookout_fields.field_name, limitby=(1, 4, )).as_list() return res ERROR:Rocket.Errors.Thread-3:Unhandled Error when serving connection: Traceback (most recent call last): File /home/manuele/portali/web2py-2.2.1/gluon/rocket.py, line 1318, in run self.run_app(conn) File /home/manuele/portali/web2py-2.2.1/gluon/rocket.py, line 1840, in run_app self.conn.sendall(b('0\r\n\r\n')) File /usr/lib/python2.7/socket.py, line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 32] Broken pipe --
Re: [web2py] Re: web2py 2.3.2 added + - to some form elements
(my first try didn't post) ok, here is a patch against current *trunk*. this should never allow you to remove the last item from the list. note that when the list is empty (showing one field with no data) the + and - buttons appear to be no-op. -- diff -r 4c55a243c4c2 gluon/sqlhtml.py --- a/gluon/sqlhtml.py Thu Dec 20 09:22:24 2012 -0600 +++ b/gluon/sqlhtml.py Thu Dec 20 10:45:52 2012 -0800 @@ -263,18 +263,27 @@ jQuery.fn.grow_input = function() { return this.each(function() { var ul = this; -jQuery(ul).find(:text).after('a href=javascript:void(0)+/a').keypress(function (e) { return (e.which == 13) ? pe(ul) : true; }).next().click(function(){ pe(ul) }); +jQuery(ul).find(:text).after('a href=javascript:void(0)+/anbsp;a href=javascript:void(0)-/a').keypress(function (e) { return (e.which == 13) ? pe(ul, e) : true; }).next().click(function(e){ pe(ul, e) }).next().click(function(e){ rl(ul, e)}); }); }; function pe(ul, e) { var new_line = ml(ul); rel(ul); - new_line.appendTo(ul); + if ($(e.target).parent().is(':visible')) { +//make sure we didn't delete the element before we insert after +new_line.insertAfter($(e.target).parent()); + } else { +//the line we clicked on was deleted, just add to end of list +new_line.appendTo(ul); + } new_line.find(:text).focus(); return false; } function rl(ul, e) { - jQuery(e.target).parent().remove(); + if (jQuery(ul).children().length 1) { +//only remove if we have more than 1 item so the list is never empty +$(e.target).parent().remove(); + } } function ml(ul) { var line = jQuery(ul).find(li:first).clone(true);
[web2py] Re: Ver 2.3.2 changes the order models are loaded.
I agree with Anthony. The fix was wrong. I will write a patch if he does not send me one first. Massimo On Thursday, 20 December 2012 12:12:20 UTC-6, Jim Karsten wrote: I have database tables defined in models/db.py. I have a controller-specific model defined in a models/client subdirectory. Ver 2.3.2 loads the models in a different order from ver 2.2.1. Ver 2.2.1 models/0.py models/db.py models/clients/edit/db.py Ver 2.3.2 models/0.py models/clients/edit/db.py models/db.py The models/clients/edit/db.py depends on variables defined in modes/db.py so I get errors with Ver 2.3.2 The sort=False argument was removed from the listdir call in this line of gluon/compileapp.py def run_models_in() models = listdir(path, '^\w+\.py$', 0, sort=False) # Ver 2.2.1 models = listdir(path, '^\w+\.py$', 0) # Ver 2.3.2 If I restore that, it works again. The issue was discussed here: https://groups.google.com/d/topic/web2py/ZfI7K9jW45w/discussion In Ver 2.2.1, files in the models directory are first loaded in alphabetically order. Then each subfolder is handled in order, model files in subfolders are loaded in alphabetical order. In Ver 2.3.2, all models are sorted by path name and then loaded in that order. I can rename subfolders so they are loaded properly but before I change anything I'd like to make sure the effects of dropping sort=False were intended. --
[web2py] Re: Beware auth.enable_record_versioning
To enable archiving, I added enable_record_versioning(db) = True to my models files. I encountered the problems described in the two bug reports I submitted today on Google code. At one point I thought it would help with isolating the problem if I turned off versioning, so I commented out the line enabling it. When I uncommented the line, I found tables with names like products_archive_archive. These are archive tables for the archive tables. I suppose if I repeated the sequence I would have tables with names like products_archive_archive_archive. On Thursday, December 20, 2012 10:05:25 AM UTC-5, Massimo Di Pierro wrote: I do not understand. Can you explain? On Thursday, 20 December 2012 08:11:42 UTC-6, Cliff Kachinske wrote: I just discovered that auth.enable_record_versioning will create archive tables for the archive tables if turned off and turned back on. Not acceptable. --
[web2py] Question about SQLFORM.grid - process a column before show it
Hi, I'm wondering about if is possible process the values of a column to show the result on the grid instead of original value... My Code: (db_events.events.device_id == request.vars.id) \ (db_events.events.event_datetime = from) \ (db_events.events.event_datetime = to) grid = SQLFORM.grid(query, editable=False, searchable=False, deletable=False,create=False,details=False ) With this code I get : Idhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.id_signature=acefaa93bdd83c149087600ecbf3e87539935034 Chttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.device_id_signature=acefaa93bdd83c149087600ecbf3e87539935034 odeThttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_type_signature=acefaa93bdd83c149087600ecbf3e87539935034 ypeAhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_index_signature=acefaa93bdd83c149087600ecbf3e87539935034 ctionDhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_datetime_signature=acefaa93bdd83c149087600ecbf3e87539935034 ateLahttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_latitude_signature=acefaa93bdd83c149087600ecbf3e87539935034 tLonhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_longitude_signature=acefaa93bdd83c149087600ecbf3e87539935034 Velhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_velocity_signature=acefaa93bdd83c149087600ecbf3e87539935034 Dirhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_heading_signature=acefaa93bdd83c149087600ecbf3e87539935034 PFMhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_pfm_signature=acefaa93bdd83c149087600ecbf3e87539935034 Agehttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_age_signature=acefaa93bdd83c149087600ecbf3e87539935034 Odhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.vodometer_signature=acefaa93bdd83c149087600ecbf3e87539935034 5742356612022462768EVENT22012-12-20 15:24:52-20.23496-70.1384814.48371732 18460843.005743356612022462768EVENT12012-12-20 15:25:58-20.23064-70.13754 16.0933363218461344.005744356612022462768EVENT12012-12-20 15:26:26-20.23049 -70.138616.0933293218461461.005745356612022462768EVENT12012-12-20 15:28:49 -20.22115-70.137746.43723253218462508.005746356612022462768EVENT02012-12-20 15:29:11-20.22088-70.1394724.13953593218462702.005747356612022462768EVENT02012-12-20 15:31:17-20.21419-70.1389919.31163081218463458.005748356612022462768EVENT02012-12-20 15:34:16-20.21372-70.1469522.53022713218464303.005749356612022462768EVENT22012-12-20 15:36:17 I need change the Action column with the values of a Dic that I have: Actions = { 0:'Quiet',1:'Running',2:'Fail'} How can I show on SQLFORM.grid a 'Quiet' instead of a 0, a 'Running' instead a 1, an finally a 'Fail' instead a 2?? Greetings Christian. --
[web2py] Re: Ver 2.3.2 changes the order models are loaded.
Sounds good. Thanks guys On Thursday, December 20, 2012 1:12:20 PM UTC-5, Jim Karsten wrote: I have database tables defined in models/db.py. I have a controller-specific model defined in a models/client subdirectory. Ver 2.3.2 loads the models in a different order from ver 2.2.1. Ver 2.2.1 models/0.py models/db.py models/clients/edit/db.py Ver 2.3.2 models/0.py models/clients/edit/db.py models/db.py The models/clients/edit/db.py depends on variables defined in modes/db.py so I get errors with Ver 2.3.2 The sort=False argument was removed from the listdir call in this line of gluon/compileapp.py def run_models_in() models = listdir(path, '^\w+\.py$', 0, sort=False) # Ver 2.2.1 models = listdir(path, '^\w+\.py$', 0) # Ver 2.3.2 If I restore that, it works again. The issue was discussed here: https://groups.google.com/d/topic/web2py/ZfI7K9jW45w/discussion In Ver 2.2.1, files in the models directory are first loaded in alphabetically order. Then each subfolder is handled in order, model files in subfolders are loaded in alphabetical order. In Ver 2.3.2, all models are sorted by path name and then loaded in that order. I can rename subfolders so they are loaded properly but before I change anything I'd like to make sure the effects of dropping sort=False were intended. --
Re: [web2py] Interesting - Brython (python to javascript)
I agree. On Thu, Dec 20, 2012 at 1:18 PM, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Looks like this is too limited to be useful. On Monday, 17 December 2012 01:08:41 UTC-6, viniciusban wrote: Brypthon doesn't support string interpolation, too. :-( On Sun, Dec 16, 2012 at 6:40 PM, Arnon Marcus a.m.m...@gmail.com wrote: From what I saw, it does not support many fundamental features of python, like class-inheritance (class, classMethod) modules (__import__, from, as), scope (globals, nonlocal) and parsing (exec, eval). I think these are trivial for python developement, and should have some kind of design-pattern transpiling specification that it follows. I think CoffeeScript actually has many of these already implemented, as is quite pythonic already in much of it's syntax - and is much closer to JavaScript in the first place and already has tons of tools for denugging, client/server-side automatic-transpiling, bundled up in minification/compression algorythms, etc... It's a cool idea, and pyjammas has existed for a long time now, but is anyone seriously thinking about using that in production? I think as long as browsers don't have some kind of cross-language VMs, or at least a PVM built-in/plugin, than with all the excitement, it will remain useless. I mean, how do you debug this? -- -- --
[web2py] Re: Question about SQLFORM.grid - process a column before show it
What does your model look like? -Jim On Thursday, December 20, 2012 2:15:20 PM UTC-6, Christian Espinoza wrote: Hi, I'm wondering about if is possible process the values of a column to show the result on the grid instead of original value... My Code: (db_events.events.device_id == request.vars.id) \ (db_events.events.event_datetime = from) \ (db_events.events.event_datetime = to) grid = SQLFORM.grid(query, editable=False, searchable=False, deletable=False,create=False,details=False ) With this code I get : Idhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.id_signature=acefaa93bdd83c149087600ecbf3e87539935034 Chttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.device_id_signature=acefaa93bdd83c149087600ecbf3e87539935034 odeThttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_type_signature=acefaa93bdd83c149087600ecbf3e87539935034 ypeAhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_index_signature=acefaa93bdd83c149087600ecbf3e87539935034 ctionDhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_datetime_signature=acefaa93bdd83c149087600ecbf3e87539935034 ateLahttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_latitude_signature=acefaa93bdd83c149087600ecbf3e87539935034 tLonhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_longitude_signature=acefaa93bdd83c149087600ecbf3e87539935034 Velhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_velocity_signature=acefaa93bdd83c149087600ecbf3e87539935034 Dirhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_heading_signature=acefaa93bdd83c149087600ecbf3e87539935034 PFMhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_pfm_signature=acefaa93bdd83c149087600ecbf3e87539935034 Agehttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.event_age_signature=acefaa93bdd83c149087600ecbf3e87539935034 Odhttp://127.0.0.1:8000/avl/reports/events?keywords=order=events.vodometer_signature=acefaa93bdd83c149087600ecbf3e87539935034 5742356612022462768EVENT22012-12-20 15:24:52-20.23496-70.1384814.48371732 18460843.005743356612022462768EVENT12012-12-20 15:25:58-20.23064-70.13754 16.0933363218461344.005744356612022462768EVENT12012-12-20 15:26:26 -20.23049-70.138616.0933293218461461.005745356612022462768EVENT12012-12-20 15:28:49-20.22115-70.137746.43723253218462508.005746356612022462768EVENT02012-12-20 15:29:11-20.22088-70.1394724.13953593218462702.005747356612022462768EVENT02012-12-20 15:31:17-20.21419-70.1389919.31163081218463458.005748356612022462768EVENT02012-12-20 15:34:16-20.21372-70.1469522.53022713218464303.005749356612022462768EVENT22012-12-20 15:36:17 I need change the Action column with the values of a Dic that I have: Actions = { 0:'Quiet',1:'Running',2:'Fail'} How can I show on SQLFORM.grid a 'Quiet' instead of a 0, a 'Running' instead a 1, an finally a 'Fail' instead a 2?? Greetings Christian. --
Re: [web2py] Re: The book updates and status
I can proof read and help amplifying some parts. I'd like to act on DAL chapter, for instance. On Thu, Dec 20, 2012 at 1:35 PM, Massimo Di Pierro massimo.dipie...@gmail.com wrote: This is in: http://web2py.com/books/default/chapter/29/07?search=SQLFORM.grid#SQLFORM.grid-and-SQLFORM.smartgrid along with tons of other additions. :-) I hope to make a first pdf draft by the end of next week. Massimo On Wednesday, 19 December 2012 20:53:25 UTC-6, Andrew W wrote: I'm happy to proof read. Send it through when ready. Andrew W On Thursday, December 20, 2012 2:46:41 PM UTC+13, Anthony wrote: On Wednesday, December 19, 2012 5:56:48 PM UTC-5, Massimo Di Pierro wrote: I have been going over that document. The things in gray were not in the published 4th edition but are in the online version. Make sure you click the link below -- it's an updated version of the original document. All the gray items were removed, and some newer items have been added (though some of them may already be in the book). Anthony On Wednesday, 19 December 2012 14:15:46 UTC-6, Anthony wrote: This document is a bit old, so some of the items may already have been added: https://docs.google.com/document/d/1yQy0F5HcxiecBOBLblrLmAAAsAK6sL37wSL527yssGk/edit -- --
[web2py] Re: Question about SQLFORM.grid - process a column before show it
My Model for this App db_events.define_table('events', Field('devid', length=15, label='CODE'), Field('type', length=15, label='Type'), Field('index','integer', label='Action'), Field('datetime','datetime', label='Date'), Field('latitude','double', label='Lat'), Field('longitude','double', label='Lon'), Field('velocity','double', label='Vel'), Field('heading', 'integer', label='Dir'), Field('pfm','integer', label='PFM'), Field('age','integer', label='Age'), Field('odometer','double', label='Od') ) --
[web2py] Re: widgets.checkboxes.widget INPUT inside LABLE
Good point. It will probably have to depend on the formstyle used. Anthony On Thursday, December 20, 2012 1:57:16 PM UTC-5, Paolo Caruccio wrote: For completeness: wrapping the input controls with label should be avoided when for the layout is used a table. In such case the label goes in one TD and the associated control in another TD. Bootstrap, indeed, doesn't use table layout for the forms. Il giorno giovedì 20 dicembre 2012 16:50:47 UTC+1, Paolo Caruccio ha scritto: I think as Massimo said, but W3C raccomandation on formshttp://www.w3.org/TR/html5/forms.html#forms tells: To label a control, the label element is used; the label text and the control itself go inside the label element. So KMax request should be acceptable Il giorno giovedì 20 dicembre 2012 15:57:03 UTC+1, Massimo Di Pierro ha scritto: I am not convinced this is the right fix. Does bootstrap suggest this? I do not think the input should be in the label. Perhaps there is an alternative fix using css? On Thursday, 20 December 2012 03:08:01 UTC-6, KMax wrote: Hello, Using this widget=SQLFORM.widgets.checkboxes.widget for list of values gives the following html code: input id=some1 name=something type=checkbox value=1 / label for=some1Option1/label input id=some2 name=something type=checkbox value=2 / label for=some2Option2/label While if INPUT reside inside LABLE it looks better (imho) label for=some1 input id=some1 name=something type=checkbox value=1 /Option1 /label label for=some2 input id=some2 name=something type=checkbox value=2 /Option2 /label Same time this change might broke some compatibility. Maybe this behavior was made for some reason. Community, please share your opinion. Thanks, --
Re: [web2py] Re: Question about SQLFORM.grid - process a column before show it
Have you though about adding a table to define the relation between 'index' and the text: db_actions.define_table('actions', Field(name, length=20, label='Action')) Then modify db_events so field index looks like: Field('index', db.actions, label='Action), Table actions would then have three records, Quiet Running Fail This should then automatically display the right value - the only problem is that it wouldn't guarantee that the index would be 0, 1, and 2. It would be whatever the primary key on the actions table worked out to be. The other way to handle it would be to write a custom validator that changed the numeric value as you mentioned. I haven't done that before, but heard it isn't that difficult. -Jim On Thu, Dec 20, 2012 at 2:45 PM, Christian Espinoza chespin...@gmail.comwrote: My Model for this App db_events.define_table('events', Field('devid', length=15, label='CODE'), Field('type', length=15, label='Type'), Field('index','integer', label='Action'), Field('datetime','datetime', label='Date'), Field('latitude','double', label='Lat'), Field('longitude','double', label='Lon'), Field('velocity','double', label='Vel'), Field('heading', 'integer', label='Dir'), Field('pfm','integer', label='PFM'), Field('age','integer', label='Age'), Field('odometer','double', label='Od') ) -- --
Re: [web2py] Re: Question about SQLFORM.grid - process a column before show it
Disclaimer: not tested why don't you just change the action Field to Field('action', requires=IS_IN_SET({ 0:'Quiet',1:'Running',2:'Fail'})) On Thursday, December 20, 2012 10:23:07 PM UTC+1, Jim S wrote: Have you though about adding a table to define the relation between 'index' and the text: db_actions.define_table('actions', Field(name, length=20, label='Action')) Then modify db_events so field index looks like: Field('index', db.actions, label='Action), Table actions would then have three records, Quiet Running Fail This should then automatically display the right value - the only problem is that it wouldn't guarantee that the index would be 0, 1, and 2. It would be whatever the primary key on the actions table worked out to be. The other way to handle it would be to write a custom validator that changed the numeric value as you mentioned. I haven't done that before, but heard it isn't that difficult. -Jim On Thu, Dec 20, 2012 at 2:45 PM, Christian Espinoza chesp...@gmail.comjavascript: wrote: My Model for this App db_events.define_table('events', Field('devid', length=15, label='CODE'), Field('type', length=15, label='Type'), Field('index','integer', label='Action'), Field('datetime','datetime', label='Date'), Field('latitude','double', label='Lat'), Field('longitude','double', label='Lon'), Field('velocity','double', label='Vel'), Field('heading', 'integer', label='Dir'), Field('pfm','integer', label='PFM'), Field('age','integer', label='Age'), Field('odometer','double', label='Od') ) -- --
[web2py] Re: web3py?
Pfff... The creator of web2py says he wishes he could do web3py some other way, but can't... Am I the only one that finds that funny? :) web3py will end up however you wish it to end up as... You can do whatever you want with it, as it's already inherently backwards incompatible (python 3.x), and is not even fully planned yet... If anyone at any time could change things, it would be you guys and at this time... How about putting auxiliary attributes front and center? Data-* attributes are already a part of the standard of HTML5 and most-if-not-all browsers support them. Single-Page apps are also not even considered a novelty anymore, and we're in a Renaissance of data-binding frameworks... I mean, I guess I could do this: def DATA(name, value): return {('_data-' + name):str(value)} Then: DIV( {{MyVar}}, **DATA( ng-controller, MyController ) ) = DIV( {{MyVar}}, **{ _data-ng-controller: MyController } ) = div data-ng-controller=MyController{{MyVar}}/div and: DIV( {{MyVar}}, **DATA( bind, text: MyVar ) ) = DIV( {{MyVar}}, **{ _data-bind: text: MyVar } ) = div data-bind=text: MyVar{{MyVar}}/div But hell, you can make the TAG classes able to receive DATA class-instances, that other people can sub-class/modify to implenet the interface for different frameworks. A generic DATA class may look something like this: class DATA: namespace = aggregate = False seperator = : delimiter = , def __init__(self, **attrs): self.attrs = dict(**attrs) ... def parse( self ): parsed = if aggregatre: parsed += 'data-' + ns + '=' for k, v in items(self.attrs): parsed += k + seperator + v + delimiter parsed = parsed[:-len(delimiter)] + '' else: ns = namespace + '-' if namespace else '' for k, v in items(self.attrs): parsed += 'data-' + ns + k + '=' + v + '' return parsed And have your TAG classes do something like: class TAG: def __init__(self, content, *vars, **args): ... parsed = [ var.parsed() for var in *vars if isinstanceof(var, DATA) ] ... use parsed somehow ... Angular guys may then do something like this: DATA.namespace = ng BUTTON( Delete, DATA( click=destroy(), show=project._id.) ) = button data-ng-click=destroy() data-ng-show=project._idDelete/button or: class ngDATA( DATA ): namespace = ng + use ngDATA instead of DATA in the html helpers Knockout guys could do this: DATA.namespace = bind DATA.aggregate = True SELECT( , DATA( options = $root.availableMeals, value = meal. optionsText = 'mealName' ) ) = select data-bind=options: $root.availableMeals, value: meal, optionsText: 'mealName'/select or: class koDATA( DATA ): namespace = bind aggregated = False + use koDATA instead of DATA in the html helpers What say you? On Thursday, December 20, 2012 7:17:48 AM UTC-8, Massimo Di Pierro wrote: Oops. right. I wish there was a simple syntax but I cannot think about one. On Thursday, 20 December 2012 09:07:21 UTC-6, Niphlod wrote: correction, the _ in front is needed as always DIV('content',**{'_data-something':'something value'}) Il giorno giovedì 20 dicembre 2012 15:58:25 UTC+1, Massimo Di Pierro ha scritto: They always did although the syntax is cumbersone DIV('content',**{'data-something':'something value'}) On Thursday, 20 December 2012 04:16:54 UTC-6, Arnon Marcus wrote: Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
[web2py] Re: web3py?
On Thursday, December 20, 2012 5:02:45 PM UTC-5, Arnon Marcus wrote: Pfff... The creator of web2py says he wishes he could do web3py some other way, but can't... I don't think he said that. He wasn't talking about web3py at all -- this is in reference to web2py. He was just noting the Python limitation regarding the naming of function arguments (which the HTML helpers use as attribute names). If we want attribute names that are not legal Python function arguments, we either need to use the **{'attribute': 'value'} syntax or some other alternative way to pass in the attributes. You have proposed an alternative, but probably could have done so without the attitude. Anthony --
Re: [web2py] Re: Question about SQLFORM.grid - process a column before show it
I guess you need to use: actions.represent as well. On Thursday, December 20, 2012 9:46:58 PM UTC, Niphlod wrote: Disclaimer: not tested why don't you just change the action Field to Field('action', requires=IS_IN_SET({ 0:'Quiet',1:'Running',2:'Fail'})) On Thursday, December 20, 2012 10:23:07 PM UTC+1, Jim S wrote: Have you though about adding a table to define the relation between 'index' and the text: db_actions.define_table('actions', Field(name, length=20, label='Action')) Then modify db_events so field index looks like: Field('index', db.actions, label='Action), Table actions would then have three records, Quiet Running Fail This should then automatically display the right value - the only problem is that it wouldn't guarantee that the index would be 0, 1, and 2. It would be whatever the primary key on the actions table worked out to be. The other way to handle it would be to write a custom validator that changed the numeric value as you mentioned. I haven't done that before, but heard it isn't that difficult. -Jim On Thu, Dec 20, 2012 at 2:45 PM, Christian Espinoza chesp...@gmail.comwrote: My Model for this App db_events.define_table('events', Field('devid', length=15, label='CODE'), Field('type', length=15, label='Type'), Field('index','integer', label='Action'), Field('datetime','datetime', label='Date'), Field('latitude','double', label='Lat'), Field('longitude','double', label='Lon'), Field('velocity','double', label='Vel'), Field('heading', 'integer', label='Dir'), Field('pfm','integer', label='PFM'), Field('age','integer', label='Age'), Field('odometer','double', label='Od') ) -- --
[web2py] Re: Web2py vs Grails on VSCharts.com
a very flexible, robust and easy to manage framework that put all other frameworks to shame +1 Right! --
[web2py] Re: hello3.xml question
Hi Lucas, Yes, just make the generic_patterns as restrictive as poss; it is there mainly for security. On Thursday, December 20, 2012 4:16:29 AM UTC, lucas wrote: oh yeah, that worked absolutely great. thank you so much. so cool, data can be stripped and sent so many different ways. so sweet. lucas --
Re: [web2py] Re: Question about SQLFORM.grid - process a column before show it
my bad, sorry Christian. myset = { 0:'Quiet',1:'Running',2:'Fail'} Field('action', 'integer', requires=IS_IN_SET(myset), represent=lambda value, row: myset.get(value, None) # or myset[value] if you are totally sure that myset contains all the possible values ) Tested ! On Friday, December 21, 2012 12:13:11 AM UTC+1, villas wrote: I guess you need to use: actions.represent as well. On Thursday, December 20, 2012 9:46:58 PM UTC, Niphlod wrote: Disclaimer: not tested why don't you just change the action Field to Field('action', requires=IS_IN_SET({ 0:'Quiet',1:'Running',2:'Fail'})) On Thursday, December 20, 2012 10:23:07 PM UTC+1, Jim S wrote: Have you though about adding a table to define the relation between 'index' and the text: db_actions.define_table('actions', Field(name, length=20, label='Action')) Then modify db_events so field index looks like: Field('index', db.actions, label='Action), Table actions would then have three records, Quiet Running Fail This should then automatically display the right value - the only problem is that it wouldn't guarantee that the index would be 0, 1, and 2. It would be whatever the primary key on the actions table worked out to be. The other way to handle it would be to write a custom validator that changed the numeric value as you mentioned. I haven't done that before, but heard it isn't that difficult. -Jim On Thu, Dec 20, 2012 at 2:45 PM, Christian Espinoza chesp...@gmail.comwrote: My Model for this App db_events.define_table('events', Field('devid', length=15, label='CODE'), Field('type', length=15, label='Type'), Field('index','integer', label='Action'), Field('datetime','datetime', label='Date'), Field('latitude','double', label='Lat'), Field('longitude','double', label='Lon'), Field('velocity','double', label='Vel'), Field('heading', 'integer', label='Dir'), Field('pfm','integer', label='PFM'), Field('age','integer', label='Age'), Field('odometer','double', label='Od') ) -- --
[web2py] Re: web3py?
LOL.. You got me all wrong! :) I meant no disrespect, I adore Massimo! Massimo - You Da Man! I was just teasing a little, is all... You know, the way he said that it could have sounded as if he was frustrated from not being able to change his own creation - it's like a clay-sculptor staring at his clay, saying I wish I could mold that... A shame it's made out of clay... :P And this is a web3py thread, so I think I got the context right... I know about the - problem not being able to get used within a function-argument-name, while being required as a tag-attribute-name by the HTML5 standard for full compliance. I'm just saying: So what? Who's to say that the expected arguments in the HTML-helpers must be regular arguments? Client-side frameworks are already overloading/abusing/nesting this attribute like crazy anyway, so why not make a special class for it to begin with? It IS a special kind of argument, even by HTML5's standards, why not treat it as such? I mean, it's not like we're stuck with the helpers the way they are, Massimo just said here that he's going to add context-managers to them, and even back-port that to web2py... My proposal doesn't even have to necessarily break backward compatibility... On Thursday, December 20, 2012 2:47:27 PM UTC-8, Anthony wrote: On Thursday, December 20, 2012 5:02:45 PM UTC-5, Arnon Marcus wrote: Pfff... The creator of web2py says he wishes he could do web3py some other way, but can't... I don't think he said that. He wasn't talking about web3py at all -- this is in reference to web2py. He was just noting the Python limitation regarding the naming of function arguments (which the HTML helpers use as attribute names). If we want attribute names that are not legal Python function arguments, we either need to use the **{'attribute': 'value'} syntax or some other alternative way to pass in the attributes. You have proposed an alternative, but probably could have done so without the attitude. Anthony --
[web2py] Re: web3py?
OK, thanks for clarifying. So, when you asked the questionhttps://groups.google.com/d/msg/web2py/lwdZ5vEMGdM/8WYviZxIWfAJabout using HTML5 data- attributes, you were asking about how they would be supported in web3py, not how they are currently supported in web2py, correct? I think Massimo was answering for web2py. Anyway, there's nothing stopping us from making a change in web2py as well. Maintaining backward compatibility doesn't prevent additions to the API -- we just can't change any old behavior (i.e., old code should continue to work the same). Anthony On Thursday, December 20, 2012 7:23:23 PM UTC-5, Arnon Marcus wrote: LOL.. You got me all wrong! :) I meant no disrespect, I adore Massimo! Massimo - You Da Man! I was just teasing a little, is all... You know, the way he said that it could have sounded as if he was frustrated from not being able to change his own creation - it's like a clay-sculptor staring at his clay, saying I wish I could mold that... A shame it's made out of clay... :P And this is a web3py thread, so I think I got the context right... I know about the - problem not being able to get used within a function-argument-name, while being required as a tag-attribute-name by the HTML5 standard for full compliance. I'm just saying: So what? Who's to say that the expected arguments in the HTML-helpers must be regular arguments? Client-side frameworks are already overloading/abusing/nesting this attribute like crazy anyway, so why not make a special class for it to begin with? It IS a special kind of argument, even by HTML5's standards, why not treat it as such? I mean, it's not like we're stuck with the helpers the way they are, Massimo just said here that he's going to add context-managers to them, and even back-port that to web2py... My proposal doesn't even have to necessarily break backward compatibility... On Thursday, December 20, 2012 2:47:27 PM UTC-8, Anthony wrote: On Thursday, December 20, 2012 5:02:45 PM UTC-5, Arnon Marcus wrote: Pfff... The creator of web2py says he wishes he could do web3py some other way, but can't... I don't think he said that. He wasn't talking about web3py at all -- this is in reference to web2py. He was just noting the Python limitation regarding the naming of function arguments (which the HTML helpers use as attribute names). If we want attribute names that are not legal Python function arguments, we either need to use the **{'attribute': 'value'} syntax or some other alternative way to pass in the attributes. You have proposed an alternative, but probably could have done so without the attitude. Anthony --
[web2py] Re: The book updates and status
I'm in for proof reading of the 5th edition. --
[web2py] Re: Login manually
If you don't mind I could send you my project to your email directly. El jueves, 20 de diciembre de 2012 16:14:12 UTC+1, Massimo Di Pierro escribió: If your data is not confidential, any chance you send me your application? To me this looks like corrupted data in database as if the password field was at some pointed treated as type='list:string' and than changed back to type='password'. Is it possible? Massimo On Wednesday, 19 December 2012 11:28:15 UTC-6, Wonton wrote: Yes, of course. This is my ticket: Error ticket for dianaappv1 Ticket ID 127.0.0.1.2012-12-19.18-24-12.5d2b292c-7e9a-4281-a9f7-bb9aa17bbd0c type 'exceptions.ValueError' unsupported hash type |pbkdf2(1000,20,sha512) Versión web2py™ (2, 2, 1, datetime.datetime(2012, 10, 21, 16, 57, 4), 'stable') Python Python 2.7.1: /usr/bin/python Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Traceback (most recent call last): File /Applications/web2py/gluon/restricted.py, line 212, in restricted exec ccode in environment File /Applications/web2py/applications/dianaappv1/controllers/default.py https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py, line 101, in module File /Applications/web2py/gluon/globals.py, line 188, in lambda self._caller = lambda f: f() File /Applications/web2py/applications/dianaappv1/controllers/default.py https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py, line 27, in public_call return servicios_publicos() File /Applications/web2py/gluon/tools.py, line 4387, in __call__ return self.serve_json(request.args[1:]) File /Applications/web2py/gluon/tools.py, line 4197, in serve_json s = universal_caller(self.json_procedures[args[0]], *args[1:], **d) File /Applications/web2py/gluon/tools.py, line 3889, in universal_caller return f(**arg_dict) File /Applications/web2py/applications/dianaappv1/controllers/default.py https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py, line 65, in login user = auth.login_bare(usuario, password) File /Applications/web2py/gluon/tools.py, line 1789, in login_bare if not user.registration_key and password == user[passfield]: File /Applications/web2py/gluon/validators.py, line 2636, in __eq__ h = simple_hash(self.password, key, salt, digest_alg) File /Applications/web2py/gluon/utils.py, line 74, in simple_hash h = hashlib.new(digest_alg) File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py, line 121, in __hash_new return __get_builtin_constructor(name)(string) File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py, line 88, in __get_builtin_constructor raise ValueError('unsupported hash type %s' % name) ValueError: unsupported hash type |pbkdf2(1000,20,sha512) Error snapshot [image: help] type 'exceptions.ValueError'(unsupported hash type |pbkdf2(1000,20,sha512)) inspect attributes Frames - *File /Applications/web2py/gluon/restricted.py in restricted at line 212* código argumentos variables - *File /Applications/web2py/applications/dianaappv1/controllers/default.py in module at line 101* código argumentos variables - *File /Applications/web2py/gluon/globals.py in lambda at line 188* código argumentos variables - *File /Applications/web2py/applications/dianaappv1/controllers/default.py in public_call at line 27* código argumentos variables - *File /Applications/web2py/gluon/tools.py in __call__ at line 4387* código argumentos variables - *File /Applications/web2py/gluon/tools.py in serve_json at line 4197* código argumentos variables - *File /Applications/web2py/gluon/tools.py in universal_caller at line 3889* código argumentos variables - *File /Applications/web2py/applications/dianaappv1/controllers/default.py in login at line 65* código argumentos variables - *File /Applications/web2py/gluon/tools.py in login_bare at line 1789* código argumentos variables - *File /Applications/web2py/gluon/validators.py in __eq__ at line 2636* código argumentos variables - *File /Applications/web2py/gluon/utils.py in simple_hash at line 74* código argumentos variables - *File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py in __hash_new at line 121* código argumentos variables - *File /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py in __get_builtin_constructor at line 88* código argumentos variables Function argument list
[web2py] Web2Py and Ajax
I've just started using web2py and have a question about ajax calls. In my project a menu is defined (and build) in models/meny.py). The menu is added to the response like this : response.menu = _menu() In this way I can access the menu in my layout and that is exacly what I want, except... when I am doing a ajax call. Is there a way to skip building my menu when I'm using a ajax call? --
[web2py] Web2Py and Ajax
When I handle a request in Web2Py it builds a menu in models/menu.py. This behaviour is exactly what I want for a normal request, but I want to skip this, when I make an ajax-call. Is this possible? thx, Martijn --
[web2py] Re: Query results from 2 children tables from same parent ordered by date
I finally found the solution using COALESCE to merge and order date columns: exams_mutex = db().select(db.dataset1.date.coalesce(db.dataset2.date), db. dataset1.ALL, db.dataset2.ALL, left=[db.dataset1.on(db.mutex.i==0),db. dataset2.on(db.mutex.i==1)], orderby=db.dataset1.date.coalesce(db.dataset2. date)) Mamisoa Le jeudi 20 décembre 2012 16:08:34 UTC+1, Massimo Di Pierro a écrit : Sorry I do not have a good solution at the moment. Can you open a ticket about this so we'll will not forget. For now you may want to consider creating a database view and selecting from the view. You would need to create a model (readonly) to access the view. On Wednesday, 19 December 2012 16:19:33 UTC-6, Mamisoa Andriantafika wrote: Best results to UNION I could have was using the mutex table trick: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ with this syntax: exams_mutex = db().select(db.dataset1.ALL, db.dataset2.ALL, left=[db.dataset1.on(db.mutex.i==0),db.dataset2.on(db.mutex.i==1)]) Two problems left: 1- how to merge the 2 date columns 2- how to order then by date SQL answer is there: http://stackoverflow.com/questions/8245630/mysql-combine-two-date-fields-and-then-order-by SELECT [some info], GREATEST( ticket_date, ticket_history_date ) as latest_date FROM [tables and join] ORDER BY latest_date Is is possible using to process it using DAL? Le dimanche 16 décembre 2012 17:40:22 UTC+1, Mamisoa Andriantafika a écrit : Sorry I still get: Cannot | incompatible Rows objects. I'll change the field name date you are very right. Le dimanche 16 décembre 2012 15:49:57 UTC+1, Massimo Di Pierro a écrit : My bad. Thry this: fields1 = [db.dataset1.date, db.dataset1.param1, db.dateset1.patient_id] fields2 = [db.dataset2.date, db.dataset2.test1, db.dateset2.patient_id] rows = ( db(db.dataset1).select(*fields1) | db(db.dataset2).select(*fields2) ).sort(lambda row: row.date) Mind that having a column called date will result in major headaches in the future. On Sunday, 16 December 2012 03:15:46 UTC-6, Mamisoa Andriantafika wrote: Hi again, | seems not to work because the column numbers is different between the 2 tables? Le samedi 15 décembre 2012 20:23:44 UTC+1, Massimo Di Pierro a écrit : If you have lots of records you may be able to do it with a database view but that may be db specific. If you don't have too many records you can do: rows = ( db(db.dataset1).select() | db(db.dataset2).select() ).sort(lambda row: row.date) On Saturday, 15 December 2012 08:43:35 UTC-6, Mamisoa Andriantafika wrote: Hi, I have this db model: db.define_table('patients', Field('name', 'string', length=32), Field('firstname', 'string', length=32), Field('dob', 'date'), format='%(name)s') db.define_table('dataset1', Field('date', 'date', length=32), Field('param1', 'string', length=50), Field('param2', 'string', length=50), Field('patient_id', db.patients, writable=False, readable=False)) db.define_table('dataset2', Field('date', 'date', notnull=True), Field('test1', 'text'), Field('patient_id', db.patients, writable=False, readable=True)) I'd like to show in one view, for 1 patient_id, all the corresponding dataset1 and dataset2 ordered by date. What query should I use? Do I have to use an intermediate table 'history' to record each activity in dataset1/2 to get a result? Thanks for help. --
Re: [web2py] Re: web2py interactive shell in windows does not start the browser
Thanks very much. This gives me a very good hold to understand web2py internals at my pace, understanding the internal workings step by step. Great!!. Can someone explain the workflow in greater details than what is available in the web2py 4th edition (Chapter: THE CORE page 137). ? One of you who have indepth understanding of the framework - if you could try to explain its internal process, Example of what i am looking for : What happens from the time someone makes a webpage request from the browser -- what objects are created in memory ... how the user inputs in forms are automatically processed by web2py,... how these objects are available to the user for modification through the controller code,... how the final response object is created and rendered as html back to the browser... ((For example, i was trying to set a break point in the view code layout.html, but this is never reached and i think this is because the view is not directly executed as it is html+python but some other web2py python code is text processing this view code and generating pure python code which then gets executed. This took quite some time and digging iinto the web2py book to figure out... Also , i am new to web development and don't have the correct basic instincts to yet know what to expect and what not :-)) I really want to understand more internal workings I am sure i will make use of the debugger and try to uncover these details one by one... But a documentation from the experts who created web2py would be of immense value to me and reduce my learning time I love web2py not just for its simplicity but more importantly for its wonderful support by people like you -- Thank you very much. Regards, Bhaskar On Wednesday, December 19, 2012 10:18:44 PM UTC-6, rochacbruno wrote: FYK. I just tested the new WingIDE 4.1 with web2py for debugging and it is just awesome! **maybe we can try to include this in the documentation Take a look at breakpoints, Stack data, debug probe and documentation on the right panel! [image: Inline image 1] --
[web2py] Re: Customizing auth login form but unable to set the form class name
Hi Anthony, Your XML(form.custom..) command worked!!.* But simply writing the form statement in HTML did not .* I am customizing the auth.login() form here. In my default.py, i have dict(form=auth.login()) statement. Now if i simply manually write a form in pure HTML in the view file, will web2py be able to map this form to the auth login form ?. Or do i need any form name to be specified ? This is the only form in my page. Also, I am writing the form in the layout.html page and not index.html page because i want the login form to appear as part of my layout template itself for multiple pages so the user always sees the login form on top of the page until he decides to login. I assume writing this form in index.html or layout.html shouldn't make a difference. On Wednesday, December 19, 2012 6:50:18 PM UTC-6, Anthony wrote: Sorry, I forgot this doesn't work with form.custom.begin, which is an XML object rather than an HTML helper (because it includes only the opening form tag). Instead, you could do this: {{=XML(form.custom.begin.replace('', ' class=myclass'))}} but it's probably more straightforward to just manually code the HTML: form action= enctype=multipart/form-data method=post class= myclass Anthony On Wednesday, December 19, 2012 6:38:42 PM UTC-5, Bhaskar Ramachandran wrote: Hi Anthony, I tried that earlier also but that code didn't seem to work. I say so because my html page still has that login form on the left side of the navigation bar and looking at the source code, i see the following: form action= enctype=multipart/form-data method=post No class is added. If I replace the custom form with a hard coded form with class name in the form class= then i am able to get the form in the right way. So, it looks like somehow those statements to set class name are overridden by something else. I have these statements after the custom begin and custom end block in my view file so this is the last thing that is done to the form before it is rendered. I tried both your statements below and both of them didn't do anything. If you could also teach me how i can go and debug this situation, ( by looking at the form object in real time if possible to see how it gets modified during web2py execution on that page) it will help me in the long run... Thanks! -Bhaskar On Wednesday, December 19, 2012 11:09:48 AM UTC-6, Anthony wrote: form['_class'] = 'myclass' or form.update(_class='myclass') A form is an HTML helper object, just like any other HTML helper, so the usual rules apply: http://web2py.com/books/default/chapter/29/05#HTML-helpers Anthony On Tuesday, December 18, 2012 11:33:32 PM UTC-5, Bhaskar Ramachandran wrote: As listed in the view code below, i am trying to customize the form returned by auth.login(). Note that i have in my controller return dict(form=auth.login()). Then in the view code pasted below i am customizing the login form. It seems to work fine except that i am unable to assign a class name to this form. So my question is How to set the class name for a form object ?. There are posts in the mailing list to specify class name for elements within the form object but i couldn't find one that explains how the class name for the form object itself can be assinged. Please let me know if my question needs more explanation. Thank you. {{ if not auth.is_logged_in() : if not 'register' in auth.settings. actions_disabled: form.add_button(T('Register'),URL( args='register'),_class='btn') pass if not 'request_reset_password' inauth .settings.actions_disabled: form.add_button(T('Lost Password' ),URL(args='request_reset_password'),_class='btn') pass }} {{=form.custom.begin}} a href= /myscienceapp/default/register?_next=/default/index style=margin-right: 10pxSign Up/a div class=input-append input id=user_username class=input-small style=margin-right: 5px; border-radius: 5px 5px 5px 5px; type=text name=email placeholder=Email/ input id=user_password class=input-smallstyle =margin-right: 2px; border-radius: 5px 5px 5px 5px; type=passwordname =password placeholder=Password/ input class=btn btn-primary style=margin-right: 5px; margin-bottom: 0px;border-radius: 5px 5px 5px 5px; size=5 type= submit name=commit value=Go! / input id=user_remember_me style=margin-right: 5px; margin-bottom: 16px; type=checkbox name=remember value=1 / label class=string optional style=margin-right: 10px;
[web2py] Re: Customizing auth login form but unable to set the form class name
Your XML(form.custom..) command worked!!.* But simply writing the form statement in HTML did not .* I am customizing the auth.login() form here. In my default.py, i have dict(form=auth.login()) statement. Now if i simply manually write a form in pure HTML in the view file, will web2py be able to map this form to the auth login form ?. Or do i need any form name to be specified ? This is the only form in my page. I was only suggesting doing that first line manually, not the entire form. When web2py serializes a form, it includes two hidden fields -- _formname and _formkey, which are needed for processing. Those fields are included as part of {{=form.custom.end}}, or you can insert them directly via {{=form.hidden_fields()}}. The values of those fields are stored in form.formname and form.formkey as well. Anthony --
Re: [web2py] Web2Py and Ajax
if not request.ajax: response.menu = _menu() On Thu, Dec 20, 2012 at 1:52 PM, Martijn Hermans martijn.herm...@gmail.comwrote: When I handle a request in Web2Py it builds a menu in models/menu.py. This behaviour is exactly what I want for a normal request, but I want to skip this, when I make an ajax-call. Is this possible? thx, Martijn -- --
[web2py] Re: Customizing auth login form but unable to set the form class name
Great!. Thank you. Web2py is very much customizable!!. Regards, Bhaskar On Thursday, December 20, 2012 10:55:29 PM UTC-6, Anthony wrote: Your XML(form.custom..) command worked!!.* But simply writing the form statement in HTML did not .* I am customizing the auth.login() form here. In my default.py, i have dict(form=auth.login()) statement. Now if i simply manually write a form in pure HTML in the view file, will web2py be able to map this form to the auth login form ?. Or do i need any form name to be specified ? This is the only form in my page. I was only suggesting doing that first line manually, not the entire form. When web2py serializes a form, it includes two hidden fields -- _formname and _formkey, which are needed for processing. Those fields are included as part of {{=form.custom.end}}, or you can insert them directly via {{=form.hidden_fields()}}. The values of those fields are stored in form.formname and form.formkey as well. Anthony --
[web2py] Re: Web2Py and Ajax
if not request.ajax: On Thursday, December 20, 2012 9:35:02 AM UTC-6, Martijn Hermans wrote: I've just started using web2py and have a question about ajax calls. In my project a menu is defined (and build) in models/meny.py). The menu is added to the response like this : response.menu = _menu() In this way I can access the menu in my layout and that is exacly what I want, except... when I am doing a ajax call. Is there a way to skip building my menu when I'm using a ajax call? --
[web2py] Re: Beware auth.enable_record_versioning
This helped me a lot understand the problem. I believe I have a fix in trunk. Can you please check if the problem is indeed solved? On Thursday, December 20, 2012 1:21:21 PM UTC-6, Cliff Kachinske wrote: To enable archiving, I added enable_record_versioning(db) = True to my models files. I encountered the problems described in the two bug reports I submitted today on Google code. At one point I thought it would help with isolating the problem if I turned off versioning, so I commented out the line enabling it. When I uncommented the line, I found tables with names like products_archive_archive. These are archive tables for the archive tables. I suppose if I repeated the sequence I would have tables with names like products_archive_archive_archive. On Thursday, December 20, 2012 10:05:25 AM UTC-5, Massimo Di Pierro wrote: I do not understand. Can you explain? On Thursday, 20 December 2012 08:11:42 UTC-6, Cliff Kachinske wrote: I just discovered that auth.enable_record_versioning will create archive tables for the archive tables if turned off and turned back on. Not acceptable. --
[web2py] Re: Query results from 2 children tables from same parent ordered by date
Nice! You should sign up on experts4solutions.com. You'd approve you immediately. Massimo On Thursday, December 20, 2012 4:40:15 PM UTC-6, Mamisoa Andriantafika wrote: I finally found the solution using COALESCE to merge and order date columns: exams_mutex = db().select(db.dataset1.date.coalesce(db.dataset2.date), db. dataset1.ALL, db.dataset2.ALL, left=[db.dataset1.on(db.mutex.i==0),db. dataset2.on(db.mutex.i==1)], orderby=db.dataset1.date.coalesce(db.dataset2 .date)) Mamisoa Le jeudi 20 décembre 2012 16:08:34 UTC+1, Massimo Di Pierro a écrit : Sorry I do not have a good solution at the moment. Can you open a ticket about this so we'll will not forget. For now you may want to consider creating a database view and selecting from the view. You would need to create a model (readonly) to access the view. On Wednesday, 19 December 2012 16:19:33 UTC-6, Mamisoa Andriantafika wrote: Best results to UNION I could have was using the mutex table trick: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ with this syntax: exams_mutex = db().select(db.dataset1.ALL, db.dataset2.ALL, left=[db.dataset1.on(db.mutex.i==0),db.dataset2.on(db.mutex.i==1)]) Two problems left: 1- how to merge the 2 date columns 2- how to order then by date SQL answer is there: http://stackoverflow.com/questions/8245630/mysql-combine-two-date-fields-and-then-order-by SELECT [some info], GREATEST( ticket_date, ticket_history_date ) as latest_date FROM [tables and join] ORDER BY latest_date Is is possible using to process it using DAL? Le dimanche 16 décembre 2012 17:40:22 UTC+1, Mamisoa Andriantafika a écrit : Sorry I still get: Cannot | incompatible Rows objects. I'll change the field name date you are very right. Le dimanche 16 décembre 2012 15:49:57 UTC+1, Massimo Di Pierro a écrit : My bad. Thry this: fields1 = [db.dataset1.date, db.dataset1.param1, db.dateset1.patient_id] fields2 = [db.dataset2.date, db.dataset2.test1, db.dateset2.patient_id] rows = ( db(db.dataset1).select(*fields1) | db(db.dataset2).select(*fields2) ).sort(lambda row: row.date) Mind that having a column called date will result in major headaches in the future. On Sunday, 16 December 2012 03:15:46 UTC-6, Mamisoa Andriantafika wrote: Hi again, | seems not to work because the column numbers is different between the 2 tables? Le samedi 15 décembre 2012 20:23:44 UTC+1, Massimo Di Pierro a écrit : If you have lots of records you may be able to do it with a database view but that may be db specific. If you don't have too many records you can do: rows = ( db(db.dataset1).select() | db(db.dataset2).select() ).sort(lambda row: row.date) On Saturday, 15 December 2012 08:43:35 UTC-6, Mamisoa Andriantafika wrote: Hi, I have this db model: db.define_table('patients', Field('name', 'string', length=32), Field('firstname', 'string', length=32), Field('dob', 'date'), format='%(name)s') db.define_table('dataset1', Field('date', 'date', length=32), Field('param1', 'string', length=50), Field('param2', 'string', length=50), Field('patient_id', db.patients, writable=False, readable=False)) db.define_table('dataset2', Field('date', 'date', notnull=True), Field('test1', 'text'), Field('patient_id', db.patients, writable=False, readable=True)) I'd like to show in one view, for 1 patient_id, all the corresponding dataset1 and dataset2 ordered by date. What query should I use? Do I have to use an intermediate table 'history' to record each activity in dataset1/2 to get a result? Thanks for help. --
[web2py] Regarding ldap+kerberos authetication
Hello, I have an application that is using ldap+kerberose for authentication. models/db.py has the following code to configure the login method: from gluon.tools import * mail = Mail() # mailer auth = Auth(globals(),db) # authentication/authorization crud = Crud(globals(),db) # for CRUD helpers using auth plugins = PluginManager() from gluon.contrib.login_methods.pam_auth import pam_auth auth.settings.actions_disabled=['register','request_reset_password','profile','forgot_username','retrieve_username'] auth.settings.login_methods=[pam_auth()] auth.settings.allow_basic_login = True #for CLI access crud.settings.auth = None # =auth to enforce authorization on crud I am unable to understand the flow from login to authentication. Need help with that. I want to change the authentication process. I want the application to authenticate users from the db instead ldap+kerberos. Please guide me how to do that? --
[web2py] Regarding running web2py.py on ubuntu
Hello, I have a web2py application running on Ubuntu and when i search for the processes running i cannot find python web2py.py running. Why is this so? Is there any other way of running web2py on ubuntu other than running web2py.py? --
[web2py] Re: web3py?
Actually I like your solution. It could be even easier. class attr(object): def __init__(self,key,value): self.key=key self.value=value class DIV(object): def __init__(self,*components,**attributes): self.components = [] self.attributes = attributes for x in components: if isinstance(x,attr): self.attributes[x.key]=x.value else: self.components.append(x) print DIV('hello','world',attr('data-something','value'),_class='myclass') div data-something='value' class='myclass'helloworld/div ... DIV('hello','world',attr('data-something')='value') On Thursday, December 20, 2012 4:02:45 PM UTC-6, Arnon Marcus wrote: Pfff... The creator of web2py says he wishes he could do web3py some other way, but can't... Am I the only one that finds that funny? :) web3py will end up however you wish it to end up as... You can do whatever you want with it, as it's already inherently backwards incompatible (python 3.x), and is not even fully planned yet... If anyone at any time could change things, it would be you guys and at this time... How about putting auxiliary attributes front and center? Data-* attributes are already a part of the standard of HTML5 and most-if-not-all browsers support them. Single-Page apps are also not even considered a novelty anymore, and we're in a Renaissance of data-binding frameworks... I mean, I guess I could do this: def DATA(name, value): return {('_data-' + name):str(value)} Then: DIV( {{MyVar}}, **DATA( ng-controller, MyController ) ) = DIV( {{MyVar}}, **{ _data-ng-controller: MyController } ) = div data-ng-controller=MyController{{MyVar}}/div and: DIV( {{MyVar}}, **DATA( bind, text: MyVar ) ) = DIV( {{MyVar}}, **{ _data-bind: text: MyVar } ) = div data-bind=text: MyVar{{MyVar}}/div But hell, you can make the TAG classes able to receive DATA class-instances, that other people can sub-class/modify to implenet the interface for different frameworks. A generic DATA class may look something like this: class DATA: namespace = aggregate = False seperator = : delimiter = , def __init__(self, **attrs): self.attrs = dict(**attrs) ... def parse( self ): parsed = if aggregatre: parsed += 'data-' + ns + '=' for k, v in items(self.attrs): parsed += k + seperator + v + delimiter parsed = parsed[:-len(delimiter)] + '' else: ns = namespace + '-' if namespace else '' for k, v in items(self.attrs): parsed += 'data-' + ns + k + '=' + v + '' return parsed And have your TAG classes do something like: class TAG: def __init__(self, content, *vars, **args): ... parsed = [ var.parsed() for var in *vars if isinstanceof(var, DATA) ] ... use parsed somehow ... Angular guys may then do something like this: DATA.namespace = ng BUTTON( Delete, DATA( click=destroy(), show=project._id.) ) = button data-ng-click=destroy() data-ng-show=project._idDelete/button or: class ngDATA( DATA ): namespace = ng + use ngDATA instead of DATA in the html helpers Knockout guys could do this: DATA.namespace = bind DATA.aggregate = True SELECT( , DATA( options = $root.availableMeals, value = meal. optionsText = 'mealName' ) ) = select data-bind=options: $root.availableMeals, value: meal, optionsText: 'mealName'/select or: class koDATA( DATA ): namespace = bind aggregated = False + use koDATA instead of DATA in the html helpers More advanced usages can then sub-class DATA and just re-implement the parse function... What say you? On Thursday, December 20, 2012 7:17:48 AM UTC-8, Massimo Di Pierro wrote: Oops. right. I wish there was a simple syntax but I cannot think about one. On Thursday, 20 December 2012 09:07:21 UTC-6, Niphlod wrote: correction, the _ in front is needed as always DIV('content',**{'_data-something':'something value'}) Il giorno giovedì 20 dicembre 2012 15:58:25 UTC+1, Massimo Di Pierro ha scritto: They always did although the syntax is cumbersone DIV('content',**{'data-something':'something value'}) On Thursday, 20 December 2012 04:16:54 UTC-6, Arnon Marcus wrote: Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
[web2py] Re: web3py?
Ignore the very last line. Cut and paste error. On Friday, December 21, 2012 12:43:34 AM UTC-6, Massimo Di Pierro wrote: Actually I like your solution. It could be even easier. class attr(object): def __init__(self,key,value): self.key=key self.value=value class DIV(object): def __init__(self,*components,**attributes): self.components = [] self.attributes = attributes for x in components: if isinstance(x,attr): self.attributes[x.key]=x.value else: self.components.append(x) print DIV('hello','world',attr('data-something','value'),_class='myclass') div data-something='value' class='myclass'helloworld/div ... DIV('hello','world',attr('data-something')='value') On Thursday, December 20, 2012 4:02:45 PM UTC-6, Arnon Marcus wrote: Pfff... The creator of web2py says he wishes he could do web3py some other way, but can't... Am I the only one that finds that funny? :) web3py will end up however you wish it to end up as... You can do whatever you want with it, as it's already inherently backwards incompatible (python 3.x), and is not even fully planned yet... If anyone at any time could change things, it would be you guys and at this time... How about putting auxiliary attributes front and center? Data-* attributes are already a part of the standard of HTML5 and most-if-not-all browsers support them. Single-Page apps are also not even considered a novelty anymore, and we're in a Renaissance of data-binding frameworks... I mean, I guess I could do this: def DATA(name, value): return {('_data-' + name):str(value)} Then: DIV( {{MyVar}}, **DATA( ng-controller, MyController ) ) = DIV( {{MyVar}}, **{ _data-ng-controller: MyController } ) = div data-ng-controller=MyController{{MyVar}}/div and: DIV( {{MyVar}}, **DATA( bind, text: MyVar ) ) = DIV( {{MyVar}}, **{ _data-bind: text: MyVar } ) = div data-bind=text: MyVar{{MyVar}}/div But hell, you can make the TAG classes able to receive DATA class-instances, that other people can sub-class/modify to implenet the interface for different frameworks. A generic DATA class may look something like this: class DATA: namespace = aggregate = False seperator = : delimiter = , def __init__(self, **attrs): self.attrs = dict(**attrs) ... def parse( self ): parsed = if aggregatre: parsed += 'data-' + ns + '=' for k, v in items(self.attrs): parsed += k + seperator + v + delimiter parsed = parsed[:-len(delimiter)] + '' else: ns = namespace + '-' if namespace else '' for k, v in items(self.attrs): parsed += 'data-' + ns + k + '=' + v + '' return parsed And have your TAG classes do something like: class TAG: def __init__(self, content, *vars, **args): ... parsed = [ var.parsed() for var in *vars if isinstanceof(var, DATA) ] ... use parsed somehow ... Angular guys may then do something like this: DATA.namespace = ng BUTTON( Delete, DATA( click=destroy(), show=project._id.) ) = button data-ng-click=destroy() data-ng-show=project._idDelete/button or: class ngDATA( DATA ): namespace = ng + use ngDATA instead of DATA in the html helpers Knockout guys could do this: DATA.namespace = bind DATA.aggregate = True SELECT( , DATA( options = $root.availableMeals, value = meal. optionsText = 'mealName' ) ) = select data-bind=options: $root.availableMeals, value: meal, optionsText: 'mealName'/select or: class koDATA( DATA ): namespace = bind aggregated = False + use koDATA instead of DATA in the html helpers More advanced usages can then sub-class DATA and just re-implement the parse function... What say you? On Thursday, December 20, 2012 7:17:48 AM UTC-8, Massimo Di Pierro wrote: Oops. right. I wish there was a simple syntax but I cannot think about one. On Thursday, 20 December 2012 09:07:21 UTC-6, Niphlod wrote: correction, the _ in front is needed as always DIV('content',**{'_data-something':'something value'}) Il giorno giovedì 20 dicembre 2012 15:58:25 UTC+1, Massimo Di Pierro ha scritto: They always did although the syntax is cumbersone DIV('content',**{'data-something':'something value'}) On Thursday, 20 December 2012 04:16:54 UTC-6, Arnon Marcus wrote: Cool (!) Do the HTML helpers support HTML5's data-* attributes? Can that be used for javascriupt frameworks like Knockout.js or Angular.js ? --
Re: [web2py] Re: web2py interactive shell in windows does not start the browser
I strongly agree. I wish people outside, specifically in the larger Python community, were to understand how large and how nice is this community is. On Thursday, December 20, 2012 8:04:44 PM UTC-6, Bhaskar Ramachandran wrote: Thanks very much. This gives me a very good hold to understand web2py internals at my pace, understanding the internal workings step by step. Great!!. Can someone explain the workflow in greater details than what is available in the web2py 4th edition (Chapter: THE CORE page 137). ? One of you who have indepth understanding of the framework - if you could try to explain its internal process, Example of what i am looking for : What happens from the time someone makes a webpage request from the browser -- what objects are created in memory ... how the user inputs in forms are automatically processed by web2py,... how these objects are available to the user for modification through the controller code,... how the final response object is created and rendered as html back to the browser... ((For example, i was trying to set a break point in the view code layout.html, but this is never reached and i think this is because the view is not directly executed as it is html+python but some other web2py python code is text processing this view code and generating pure python code which then gets executed. This took quite some time and digging iinto the web2py book to figure out... Also , i am new to web development and don't have the correct basic instincts to yet know what to expect and what not :-)) I really want to understand more internal workings I am sure i will make use of the debugger and try to uncover these details one by one... But a documentation from the experts who created web2py would be of immense value to me and reduce my learning time I love web2py not just for its simplicity but more importantly for its wonderful support by people like you -- Thank you very much. Regards, Bhaskar On Wednesday, December 19, 2012 10:18:44 PM UTC-6, rochacbruno wrote: FYK. I just tested the new WingIDE 4.1 with web2py for debugging and it is just awesome! **maybe we can try to include this in the documentation Take a look at breakpoints, Stack data, debug probe and documentation on the right panel! [image: Inline image 1] --
[web2py] Re: The book updates and status
Thanks this is great. One thing that can save you time is diff the current trunk version of the boot with first github commit. The first commit may still have bugs but less likely since it was already the published 4th edition. There is very little that needs to be added (most notably the auth.wiki docs) but I need to shuffle come content to balance the size of chapters. massimo On Thursday, December 20, 2012 9:23:12 PM UTC-6, Julien Courteau wrote: I'm in for proof reading of the 5th edition. --
[web2py] Re: Regarding ldap+kerberos authetication
Look into gluon/contrib/login_methods/ldap_auth.py It contains an example of how to use ldap. I am not sure about kerberos. There is nothing in web2py for kerberos but I understand kerberos can authenticate using both ldap and x509 and for both there is an API. If we need to add something and you can explain us what we may work on it. Massimo On Friday, December 21, 2012 12:26:30 AM UTC-6, saransh wrote: Hello, I have an application that is using ldap+kerberose for authentication. models/db.py has the following code to configure the login method: from gluon.tools import * mail = Mail() # mailer auth = Auth(globals(),db) # authentication/authorization crud = Crud(globals(),db) # for CRUD helpers using auth plugins = PluginManager() from gluon.contrib.login_methods.pam_auth import pam_auth auth.settings.actions_disabled=['register','request_reset_password','profile','forgot_username','retrieve_username'] auth.settings.login_methods=[pam_auth()] auth.settings.allow_basic_login = True #for CLI access crud.settings.auth = None # =auth to enforce authorization on crud I am unable to understand the flow from login to authentication. Need help with that. I want to change the authentication process. I want the application to authenticate users from the db instead ldap+kerberos. Please guide me how to do that? --
[web2py] Re: Regarding running web2py.py on ubuntu
Did you use setup-web2py-ubuntu.sh? In that case web2py is running under apache therefore you will only see the apache processes. Massimo On Friday, December 21, 2012 12:37:19 AM UTC-6, saransh wrote: Hello, I have a web2py application running on Ubuntu and when i search for the processes running i cannot find python web2py.py running. Why is this so? Is there any other way of running web2py on ubuntu other than running web2py.py? --
Re: [web2py] Re: Regarding running web2py.py on ubuntu
I am new to the system. I need to find out how it is running. How can i verify if setup-web2py-ubuntu.sh has been used? Would it be mentioned in apache2 config files? On Fri, Dec 21, 2012 at 12:24 PM, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Did you use setup-web2py-ubuntu.sh? In that case web2py is running under apache therefore you will only see the apache processes. Massimo On Friday, December 21, 2012 12:37:19 AM UTC-6, saransh wrote: Hello, I have a web2py application running on Ubuntu and when i search for the processes running i cannot find python web2py.py running. Why is this so? Is there any other way of running web2py on ubuntu other than running web2py.py? -- --
Re: [web2py] Re: Regarding running web2py.py on ubuntu
when you visit a web page from chrome you can instead the response headers and you check which web server is serving pages. Probably you will see apache. In this case you should find a reference to web2py in one of the apache config file. On Friday, 21 December 2012 00:56:37 UTC-6, saransh wrote: I am new to the system. I need to find out how it is running. How can i verify if setup-web2py-ubuntu.sh has been used? Would it be mentioned in apache2 config files? On Fri, Dec 21, 2012 at 12:24 PM, Massimo Di Pierro massimo@gmail.comjavascript: wrote: Did you use setup-web2py-ubuntu.sh? In that case web2py is running under apache therefore you will only see the apache processes. Massimo On Friday, December 21, 2012 12:37:19 AM UTC-6, saransh wrote: Hello, I have a web2py application running on Ubuntu and when i search for the processes running i cannot find python web2py.py running. Why is this so? Is there any other way of running web2py on ubuntu other than running web2py.py? -- --
[web2py] Re: Div into Markmin
Can you explain the purpose of this? On Sunday, 16 December 2012 03:57:20 UTC-6, David Alvarez wrote: I found a module to include in the syntax Markmin div, but I can not do the installation, the module is called Markdiv and attachment to see if anyone can make it work, or explain how to include html code in Markmin, Thanks --
[web2py] Re: Upload form, onvalidation and postbacks
Which web2py version? I believe this was fixed in 2.2 or 2.3. Massimo On Thursday, 13 December 2012 11:55:34 UTC-6, Andy Salnikov wrote: Hi, I have an issue with the upload form and postbacks. In my application I need to validate file contents before accepting it from user upload form, so naturally I try to use onvalidation method to it. The table used in the forma is defined like this: db.define_table('input_data', Field('input_file', 'upload', autodelete=True, requires=IS_NOT_EMPTY(), label=T('Input file')), Field('output_type', default=xxx, requires=IS_IN_SET(['xxx', 'yyy']), label=T('Output format')), Field('original_name', writable=False, readable=False), Field('created', 'datetime', writable=False, readable=False), ) My simplified action looks like this: def _validateFileForm(form): try: validator.validate(form.vars.input_file.file) # on success set hidden fields form.vars.original_name = request.vars.input_file.filename form.vars.created = datetime.datetime.now() except Exception, ex: # if validation fails then display an error form.errors.input_file = T('file_validation_failed') + ': ' + str(ex) def index(): form = SQLFORM(db.input_data, submit_button=T(Upload)) if form.process(onvalidation=_validateFileForm).accepted: # save file id in a session and go to options page session.input_data_id = form.vars.id redirect(URL(options_odt)) return dict(form=form) Validation seems to work OK, if file is OK then everything is redirected to next page, if file is bad then message is displayed in red under file upload field. What is interesting about it is that when validation fails and form is re-displayed it also looks like that the whole file contents is send back to the client together with the form. For large uploaded file this could be a lot of data. I see long delays and when I check the HTTP response headers I see many-megabytes number there. Is there a way to avoid sending the file contents back with the form during a postback? Thanks, Andy --
Re: [web2py] Re: Regarding running web2py.py on ubuntu
I figured it out. Thank you. This application is using pam-auth() for authentication. I want to used db instead for the authentication process. I am unable figure out the login workflow. Please guide me through it or recommend a tutorial if available for the same. It will be of great help. On Fri, Dec 21, 2012 at 12:48 PM, Massimo Di Pierro massimo.dipie...@gmail.com wrote: when you visit a web page from chrome you can instead the response headers and you check which web server is serving pages. Probably you will see apache. In this case you should find a reference to web2py in one of the apache config file. On Friday, 21 December 2012 00:56:37 UTC-6, saransh wrote: I am new to the system. I need to find out how it is running. How can i verify if setup-web2py-ubuntu.sh has been used? Would it be mentioned in apache2 config files? On Fri, Dec 21, 2012 at 12:24 PM, Massimo Di Pierro massimo@gmail.com wrote: Did you use setup-web2py-ubuntu.sh? In that case web2py is running under apache therefore you will only see the apache processes. Massimo On Friday, December 21, 2012 12:37:19 AM UTC-6, saransh wrote: Hello, I have a web2py application running on Ubuntu and when i search for the processes running i cannot find python web2py.py running. Why is this so? Is there any other way of running web2py on ubuntu other than running web2py.py? -- -- --