Re: [web2py] powerTable.extrajs question
Thanks. It helped a bit. I see I had to use table.extra and not table.extrajs as in the example I followed. But my problems are not over :( My controller: def pwrtable(): Generiese definisie vir plugin: powertable. powerTable = plugins.powerTable powerTable.dtfeatures['sScrollY'] = '338' powerTable.dtfeatures['sScrollX'] = '120%' powerTable.headers = 'fieldname:capitalize' powerTable.showkeycolumn = False powerTable.uitheme = request.vars.get('theme','redmond')#'smoothness' / 'redmond' /'cupertino' powerTable.dtfeatures['sPaginationType'] = request.vars.get('pager','scrolling') powerTable.dtfeatures['bScrollCollapse'] = True powerTable.dtfeatures['bScrollInfinite'] = True powerTable.dtfeatures['iScrollLoadGap'] = 10 powerTable.dtfeatures['bAutoWidth'] = True powerTable.dtfeatures['bLengthChange'] = True powerTable.dtfeatures['bProcessing'] = True powerTable.dtfeatures['iDisplayLength'] = 18 powerTable.dtfeatures['iDisplayStart'] = 0 powerTable.dtfeatures['asStripClasses'] = ['odd','even'] powerTable.columnsearch = False return (powerTable) def skrywerdetails(): Receives: 'outeur' in tablename 'id' in fieldname' the id value in value column names in cols #Key Processing art_id = None art_id = request.vars['dt_1'].split('.')[-1] print request.vars print art_id #create a DIV to wrap the return obj = DIV() obj.append(SQLTABLE(db((db.outeur_art_ekw.artikel == art_id) (db.outeur.id == db.outeur_art_ekw.skrywer)).select(db.outeur.ALL))) # return locals(), which has only one object 'obj' return obj @auth.requires_login() def artikels(): # some pagination stuff removed query = db.artikel.id 0 powerTable = pwrtable() powerTable.datasource = db(query).select(db.artikel.id, db.artikel.outeur_id, db.artikel.instansie_id, db.artikel.joernaal_id, db.artikel.titel, limitby=limitby) powerTable.keycolumn = 'artikel.id' powerTable.showkeycolumn = True powerTable.extra = dict(autoresize={}, tooltip={}, details={'detailscallback':URL('default','skrywerdetails') }) records = powerTable.create() return dict(data = records, query=query, opskrif = opskrif, total_found=total_found,page=page, items_per_page=items_per_page, pages=pages, add = add) -- May grace and peace be yours in abundance through the full knowledge of God and of Jesus our Lord! His divine power has given us everything we need for life and godliness through the full knowledge of the one who called us by his own glory and excellence. 2 Pet. 1:2b,3a
Re: [web2py] powerTable.extrajs question
Apologies, I sent the email before it was completed. It seems that only on artikel.id == 1 the function (skrywerdetails) is called. The print lines in that function print only the following content: Storage {'dt_1': 'artikel.id.1', 'dtcols_1': ''} (request.vars) 1 (art_id) For all other rows in the table clickng on the + results in an empty table opening up. Regards Johann -- May grace and peace be yours in abundance through the full knowledge of God and of Jesus our Lord! His divine power has given us everything we need for life and godliness through the full knowledge of the one who called us by his own glory and excellence. 2 Pet. 1:2b,3a
Re: [web2py] Pydiction - python autocomplete on VIM - web2py?
I use Python Omni Completation. It's good: http://www.vim.org/scripts/script.php?script_id=1542 _ *Gilson Filho* *Web Developer http://gilsondev.com* 2011/2/1 Bruno Rocha rochacbr...@gmail.com Hi, I user Pydiction http://www.vim.org/scripts/script.php?script_id=850 to autocomplete Python code on VIM. I am playing with its complete-dict file, but I can' t find a way to include web2py keywords in there to have it autocompleted on VIM. I just want to add few web2py keywords as request.TAB give me request.args( request.vars. db.TAB db.define_table( Fie.TAB Field( ret.TAB return dict( return locals() Is there somebody who have this kind of stuff working for VIM ? -- Bruno Rocha http://about.me/rochacbruno/bio
Re: [web2py] powerTable.extrajs question
The problem is in art_id = request.vars['dt_1'].split('.')[-1] For the first row it will be called dt_1 but for the second it will be dt_2 and so on. Another possibility is that when you call the second. It mess up the JavaScript. Can you pastebin your whole code or attach your w2p app?
Re: [web2py] Pydiction - python autocomplete on VIM - web2py?
2011/2/1 contatogilson...@gmail.com contatogilson...@gmail.com I use Python Omni Completation. It's good: http://www.vim.org/scripts/script.php?script_id=1542 It permits you to customize the keywords dictionary to include web2py keywords? or it auto-detects web2py keywords?
[web2py] Re: host file
Anybody know how to do this? On Jan 26, 7:22 am, stargate kyoukh...@gmail.com wrote: Lets say in web2py you create a new application called myapp. What i want to do is when i type www.myapp.com:8000it will go to that web2py installation how would you do this. I know in windows you need to edit C:\WINDOWS\system32\drivers\etc\hosts
Re: [web2py] Pydiction - python autocomplete on VIM - web2py?
I do no know _ *Gilson Filho* *Web Developer http://gilsondev.com* 2011/2/1 Bruno Rocha rochacbr...@gmail.com 2011/2/1 contatogilson...@gmail.com contatogilson...@gmail.com I use Python Omni Completation. It's good: http://www.vim.org/scripts/script.php?script_id=1542 It permits you to customize the keywords dictionary to include web2py keywords? or it auto-detects web2py keywords?
Re: [web2py] Re: host file
rename your app as init or configure routes.py (search the book for this) 2011/2/1 stargate kyoukh...@gmail.com: Anybody know how to do this? On Jan 26, 7:22 am, stargate kyoukh...@gmail.com wrote: Lets say in web2py you create a new application called myapp. What i want to do is when i type www.myapp.com:8000it will go to that web2py installation how would you do this. I know in windows you need to edit C:\WINDOWS\system32\drivers\etc\hosts
Re: [web2py] powerTable.extrajs question
On 1 February 2011 13:17, rochacbruno rochacbr...@gmail.com wrote: The problem is in art_id = request.vars['dt_1'].split('.')[-1] For the first row it will be called dt_1 but for the second it will be dt_2 and so on. Thanks. Now I am beginning to understand your logic. The following is working now (adapting code from one of your examples): #Key Processing key = None cols = None for k in request.vars.keys(): if k[:3] == 'dt_': key = request.vars[k] art_id = None art_id = key.split('.')[-1] Thanks for a fine product. I am at the moment implementing pagination before I call PowerTable because it takes too long to show a large number of records. I hope some time in future people with proper knowledge of javascript like you will be able to combine pagination the way jqgrid from the plugin_wiki does (using limitby in sql-queries) with the other powerfull features to get the best of both sides. Regards Johann -- May grace and peace be yours in abundance through the full knowledge of God and of Jesus our Lord! His divine power has given us everything we need for life and godliness through the full knowledge of the one who called us by his own glory and excellence. 2 Pet. 1:2b,3a
Re: [web2py] powerTable.extrajs question
2011/2/1 Johann Spies johann.sp...@gmail.com I hope some time in future people with proper knowledge of javascript like you will be able to combine pagination the way jqgrid from the plugin_wiki does (using limitby in sql-queries) with the other powerfull features to get the best of both sides. datatables.net has a full support to JSON and Xml datasources, with that we can do server side processing in the same way jqgrid does, I am planning to rewrite some parts of powerTable to implement it. And I am counting the help of people who knows javascript and web2py, any help, suggestion and report is very appreciated. Thanks Bruno.
Re: [web2py] cascading drop down list not working
I don't have any require in the model I posted. do you know how can I get it work with the model I posted above? 2011/1/31 w2padawan web2py.n...@gmail.com: 2011/1/31 Alexandre Andrade alexandrema...@gmail.com: It works fine to me, but it relies on default keys on db subcategory table: Field('category_id', db.category) if it is like Field('category_id', requires(db, db.category.id)) it will not work. Hi Alexandre, I don't fully understand your point. By default keys on db you mean using: Field('reference', db.othertable) in contrast of: Field('reference' type='reference othertable') ? It doesn't work in that way, neither. But as I said before, if I remove 'db.t_categoria' from line 110 in [2] (links posted in first post) the widget do work, and go wrong if I put db.t_categoria there again, but the keys seems to be in place as the code shows, so I still can't figure what i'm doing wrong.
[web2py] Case-insensitive autocomplete?
How is it possible to get a case-insensitive autocomplete? Having a database where there are inconsistencies in a field it will help a lot if autocomplete can be told to work case-insensitive. Regards Johann -- May grace and peace be yours in abundance through the full knowledge of God and of Jesus our Lord! His divine power has given us everything we need for life and godliness through the full knowledge of the one who called us by his own glory and excellence. 2 Pet. 1:2b,3a
[web2py] Doubt, using the date field
Hi everybody, I have a little problem. I have a table containing a date field in the format % m-% d% Yas shown below: db.define_table('parcelas', Field('numero', 'integer'), Field('valor', 'double'), Field('data_vencimento', 'date'), Field('pago', 'boolean'), Field('pagamento_id', db.pagamento) ) db.parcelas.data_vencimento.requires=IS_DATE(format=T(%d-%m-%Y), error_message=T(use dd-mm-)) In my form the corresponding inputs are using the class date see below for example: input class=date type=text id=data_parcela name=data_parcela/ After saving the field is something strange in the management section of thedatabase object is not recovered, returning the following error: File gluon / dal.py, line 1008, in select File gluon / dal.py, line 1207, in parse ValueError: day is out of range for month I changed the web2py_ajax.html to use the format % d-% m-% Y, but it seems not enough. Should I convert the string to a form sent by type date before saving? Can anyone help me? Sorry my english... :)
Re: [web2py] Re: Uncaught RangeError: Maximum call stack size exceeded
On Tuesday, February 1, 2011 1:57:35 AM UTC-5, spyker wrote: On 31 January 2011 21:52, Anthony abas...@gmail.com wrote: Is that a Python error code? When I Google that error, all the references I see are to Javascript errors in particular browsers. Could the problem be on the client side? I think you are on the right track. The error message appeared when I used Chrome. When I try Firefox I get a popup: A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete. Yes, the references I found for that exact error message all mentioned Chrome or Safari (both use the WebKit engine) -- I think other browsers have slightly different error messages when the call stack size is exceeded. See http://www.javascriptrules.com/2009/06/30/limitation-on-call-stacks/. Anthony
[web2py] Re: Can't deal with MemcachedKeyLengthError in caching selects
I think have a solution in trunk. You will not need to specify length and should work. On Jan 31, 8:40 pm, kenji4569 hos...@s-cubism.jp wrote: When I run the following code: db(db.xxx.id==1).select(cache=(cache.memcache, 5)) I got MemcachedKeyLengthError: Key length is 250. Since xxx table has many fields, the sql used for the key readily reached the limit. I just want to specify the cache key, but I couldn't, given the dal.py: (cache_model, time_expire) = attributes['cache'] del attributes['cache'] key = self.uri + '/' + sql rows = cache_model(key, lambda: response(sql), time_expire) Please help. Thanks in advance, Kenji
[web2py] Re: has anyone managed to pickle the 'db' DAL reference?
Yes, the data is there. On Jan 31, 9:26 pm, mart msenecal...@gmail.com wrote: i see... so, if I understand, only the table definitions are missing (and I should know this), but I am hoping that this means just the tables,not the data? If something Commet could make that the tabel data available (maybe as a string), would it be possible to to : tables please? client - web2py Server (commet listener?) return Models as a string (I don't know the tornado size limitations) Now that I have the the model, i should be able to have that explicite define (with no data in the tables), then do dbRemote = DAL(... ? Or maybe, this is silly... Maybe export/import is the best known solution? Thanks, mart :) On Jan 31, 9:09 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: I see what you mean now. No you cannot do that. If you do python web2py.py -A app -M -N -R script.py the script will be executed in an environment similar to a controller and will see the stuff defined in the models. There is no way (currently) for you to do db=DAL(...) and have db.yourtable without an explicit db.define_table(..). On Jan 31, 7:20 pm, mart msenecal...@gmail.com wrote: yes... that's what I meant... models ;) the models are invisible Thanks for that, I'll try that :) so with that, I can do something like: dbRemote = DAL( ? Mart :) On Jan 31, 3:47 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Not sure what you mean by invisible. web2py does not learn about tables from the db. It learns about them from the models. If you run a script with python web2py.py -A app -M -N -R script.py the script will see the models. On Jan 31, 10:27 am, mart msenecal...@gmail.com wrote: right... ok, I get that. So, is there a way to connect a new network connection to an existing sqlite db? I tried some suggestion from a posting of a few weeks ago, and it seems to connect, but tables are 'invisible'. ** Note ** some dbs are created from script (no web), still web2py (just no web, like __2py ;)) and others are created/maintained in a deployed web2py environment. Possible? can I for example have a script (DAL stand- alone), connect to a fully deployed web2py's DB? Actually, the scenario can be web2py app connects to another web2py app (on the same or different server), can also be stand alone DAL to stand-alone DAL, or stand-alone-DAL to web2py server, or web2py server to stand-alone DALs db Thanks, Mart:) On Jan 31, 9:24 am, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Impossible. You cannot picke a network connection. It more than just data. On Jan 31, 5:30 am, mart msenecal...@gmail.com wrote: Hi, I'm looking to try something (again) that has not yet been too successful (but I still want to try)... Currently (with stand-alone Dal) I am managing by passing 'db' around (or rather self.db) to avoid having to create more instances than I have to. Now, to pick up some processes where they left off, I would like to try pickling 'self.db' to a file, let sys.exit() happen, load the pickle, then debug exceptions, but without having to start from scratch ad rely on breakpoints to wake me up when I get to troublesome areas (the wait can be as long as an hour sometimes). So, has anyone successfully pickled 'db'? Anything fancy that need to be done the the attributes (even if only temporary). Thanks, Mart :)
[web2py] Re: background task error
two things are wrong: 1) that line import gluon.import_all should be commented (has been commented for at list six web2py versions) it is only used to build py2exe 2) even if you uncomment, gluon/import_all.py should be there. You may have a very old version of web2py and some missing files. On Jan 31, 11:36 pm, pbreit pbreitenb...@gmail.com wrote: Trying to run a background task from MacOS command line and getting error: pbreit$ python web2py.py -S myapp -M -N -R applications/myapp/private/expire_items.py Traceback (most recent call last): File web2py.py, line 3, in module import gluon.import_all ImportError: No module named gluon.import_all
[web2py] Re: Doubt, using the date field
You should not change web2py_ajax. You should translate the string %Y- %m-%d using the internationalization interface. On Feb 1, 4:33 am, Jan Palach pal...@gmail.com wrote: Hi everybody, I have a little problem. I have a table containing a date field in the format % m-% d% Yas shown below: db.define_table('parcelas', Field('numero', 'integer'), Field('valor', 'double'), Field('data_vencimento', 'date'), Field('pago', 'boolean'), Field('pagamento_id', db.pagamento) ) db.parcelas.data_vencimento.requires=IS_DATE(format=T(%d-%m-%Y), error_message=T(use dd-mm-)) In my form the corresponding inputs are using the class date see below for example: input class=date type=text id=data_parcela name=data_parcela/ After saving the field is something strange in the management section of thedatabase object is not recovered, returning the following error: File gluon / dal.py, line 1008, in select File gluon / dal.py, line 1207, in parse ValueError: day is out of range for month I changed the web2py_ajax.html to use the format % d-% m-% Y, but it seems not enough. Should I convert the string to a form sent by type date before saving? Can anyone help me? Sorry my english... :)
[web2py] Re: Uncaught RangeError: Maximum call stack size exceeded
The problem is that your app is trying to build a dropdown (select multiple../select) with 102589 options. This causes both the slowness and crashes the browser. On Jan 31, 8:48 am, Johann Spies johann.sp...@gmail.com wrote: Hallo Massimo, On 31 January 2011 16:23, Massimo Di Pierro massimo.dipie...@gmail.comwrote: Never seen it before. What code/condition causes it? I have experimented and have determined that the following model definition is related: Field(outeur_id, 'list:reference outeur'), # (see my other thread about the speeding up IS_IN_DB) The full model is in the other thread. If I remove that line from the model the update/insert forms appear immediately when called - otherwise it takes about 70 seconds resulting in the error message in the subject line. The table referenced in this field contains 102589 records. I suspect list:reference should not be used here - which is a pity. Regards Johann -- May grace and peace be yours in abundance through the full knowledge of God and of Jesus our Lord! His divine power has given us everything we need for life and godliness through the full knowledge of the one who called us by his own glory and excellence. 2 Pet. 1:2b,3a
[web2py] Re: dynamic session variables
I want something like this: if not session.id[page_id]: session.id[page_id]=str(request.now) but i get this error: KeyError: '74' I want to validate if a dynamic variable exists.. if not I want to create it and to get the time On Feb 1, 4:17 am, Jason Brower encomp...@gmail.com wrote: You can do that. At the top of the default.py or what ever you are using, place something like... session.pages[request.page] = True or how ever you want to do it. Just make sure because it is a dictionary that you blank it or initialize it befor asigning anything to it. - Original message - Hello, I want to have dinamic session variables like this: session.id where id is different from page to page.. I've tried id = variable session.id and session.id['variable'] without any results. I would like to be able to open different pages at the same time and the browser could get all the session variables.
[web2py] Re: Is there a way to remove application name from URL()?
Your routes do not work for internal links because the last rewriting rule from routes_in have to be also applied to routes_out. routes_in = ( ('/static/$anything', '/myapp/static/$anything'), ('/appadmin/$anything', '/myapp/appadmin/$anything'), ('/favicon.ico', '/myapp/static/favicon.ico'), ('/robots.txt', '/myapp/static/robots.txt'), ('/(.*))', r'/myapp/\1'), ) routes_out = [(x, y) for (y, x) in routes_in[:-2]]+[('/myapp/(.*))', r'/\1')]
[web2py] adding tables instead of merging?
Hi, Say a process generates a DB and a set of tables, and say this process is repeated multple times: Is it possible to add tables (as opposed to merging) to an existing DB? Since once set of tables have the same names as another, ideally the tables could live in a separate folder (uniquely named)... I'm not too hopeful, but is something like this possible? thanks, Mart :)
[web2py] Re: dynamic session variables
session.id = session.id or {} session.id[page_id]=session.id.get(page_id,str(request.now)) On Feb 1, 9:59 am, Francisco Costa m...@franciscocosta.com wrote: I want something like this: if not session.id[page_id]: session.id[page_id]=str(request.now) but i get this error: KeyError: '74' I want to validate if a dynamic variable exists.. if not I want to create it and to get the time On Feb 1, 4:17 am, Jason Brower encomp...@gmail.com wrote: You can do that. At the top of the default.py or what ever you are using, place something like... session.pages[request.page] = True or how ever you want to do it. Just make sure because it is a dictionary that you blank it or initialize it befor asigning anything to it. - Original message - Hello, I want to have dinamic session variables like this: session.id where id is different from page to page.. I've tried id = variable session.id and session.id['variable'] without any results. I would like to be able to open different pages at the same time and the browser could get all the session variables.- Hide quoted text - - Show quoted text -
[web2py] Log tickets
On my development server, I log errors to syslog so they are accessible from a single location. Web2py tickets present a problem since they are not logged. I could configure syslog to access errors from the ticket error file, but it contains more information than I need and the text isn't in a suitable format. I added three lines to the RestrictedError class log() method in gluon/ restricted.py. The traceback message of a ticket is then logged quite nicely. def log(self, request): ... ticket_storage = TicketStorage(db=request.tickets_db) ticket_storage.store(request, f, d) = for line in str(self.traceback).split(\n): = if len(line.strip()) 1: = logger.error(line.strip()) return '%s/%s' % (a, f) except: logger.error(self.traceback) return None Is there any interest in adding that to the source code? Also, when I first tested this, I copied the logger.error(self.traceback) line from the except clause to log the ticket message. It only logged the first line. The message logged is: Traceback (most recent call last): which isn't much use. Possibly a for loop similar to what I used above would improve that. Regards, Jim Karsten
[web2py] insert into table where fields and values are in a dict
If I call db.tablename.insert(...) it expects individual column-value pairs. I already have these in a dict (which has been pre-screened for valid columns and types). Is there a way to call insert with this dict, or to properly explode the values into something I can pass to insert? Thanks.
Re: [web2py] insert into table where fields and values are in a dict
d = {k1=v1, k2=v2} db.tablename.insert(**d)
Re: [web2py] insert into table where fields and values are in a dict
d = dict(k1=v1, k2=v2) db.tablename.insert(**d)
Re: [web2py] Re: Need help in standardizing my coding and naming schemes before I start my main project
General request for comments corrections from the more experienced (than me) programmers in this group please. I really don't want to be giving bad advice. Anyway, on to the advice... Rupesh, In the end, it doesn't matter what scheme you use, as long as you find it easy your practices are consistent. If you are working on shared code (i.e. working with somebody else), then you should both agree on a set of coding practices. If you are working on multiple applications within the same database, then it makes sense to prefix application-specific tables with something which easily describes it (in case you have to examine the back-end database, or have to make cross-application queries). That being said, I suggest that at the very least, you take a look at Python PEP http://www.python.org/dev/peps/pep-0008/ guidelines, in order to standardise your coding practice. As far as database naming goes, if you are building applications from scratch, try to ensure that you have memorable names (or ones which are logical easy to recreate). If there is the possibility of more than one app being stored in your database backend, and the possibility exists for table name collisions (tables called 'name' or 'address' are very common). It is, in my opinion, good practice to prefix your application-specific tables with something to separate them from the other applications tables. Let's call your app *Contacts List.* We now have a nice, 2-prefix addition to our table names: CL # Storing our address types in a list as opposed to # devoting a full table to them: address_types=['permanent', 'temporary', 'postal', 'additional'] db.define_table('cl_contact', Field('name'), ) db.define_table('cl_address', Field('contact', db.cl_contact), Field('address_type', 'string', requires=IS_IN_LIST(address_types)) Field(' ) For small values of the list (i.e. less than a dozen items, which are unlikely to change), you may as well store them in a list (as above) and let web2py deal with the lookup. If you need a lookup table, then prefix it with whatever is easy enough to remember. The important part (*and trust me on this* :) is consistency. At the end of the day, as long as your methodology is consistent, logical and easy to follow, then just go with whatever's easiest for you. Martin. On 31 January 2011 21:58, Rupesh Pradhan rupeshkrprad...@gmail.com wrote: I am trying to standardize my naming schemes for my database, table and fields. I am trying to follow the one given below. Please share with me your scheme. Standard Database Table Naming Scheme = Table name: --- small caps with underscore look-up table prefixed with 'lu_' link table prefixed with 'lk_' (should i do this?) eg. contact lu_address_type Field names: small caps with under score primary key suffixed with '_id' eg. name address_text contact_id Table Field access notation: --- table name DOT field name eg. contact.name contact.contact_id lu_address_type.name lu_address_type.address_type
[web2py] Re: background task error
Here is web2py.py on a fresh MacOS install: #!/usr/bin/env python2.5 import gluon.import_all from gluon.widget import start start()
Re: [web2py] Re: background task error
update web2py, import_all is commented since many versions ago... 2011/2/1 pbreit pbreitenb...@gmail.com Here is web2py.py on a fresh MacOS install: #!/usr/bin/env python2.5 import gluon.import_all from gluon.widget import start start() -- Pablo Martín Mulone (mar...@tecnodoc.com.ar) http://www.tecnodoc.com.ar/ Paraná, Entre Ríos, Argentina (CP 3100). My blog: http://martin.tecnodoc.com.ar Expert4Solution Profile: http://www.experts4solutions.com/e4s/default/expert/6
[web2py] migration from 1.88.2 to 1.91.6 problem
Hello, I am not sure where it comes from the problem I face, but for sure it comes from 1.91.6 because I dont have the probleme with the exact same app under 1.88.2. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Traceback (most recent call last): File /home/www-data/web2py/gluon/restricted.py, line 188, in restricted exec ccode in environment File /home/www-data/web2py/applications/init/controllers/test.py, line 855, in module File /home/www-data/web2py/gluon/globals.py, line 95, in lambda self._caller = lambda f: f() File /home/www-data/web2py/gluon/tools.py, line 2297, in f return action(*a, **b) File /home/www-data/web2py/applications/init/controllers/test.py, line 410, in update if form.accepts(request.vars, session): File /home/www-data/web2py/gluon/sqlhtml.py, line 1091, in accepts if self.table[fieldname].type == 'boolean' and self.vars[fieldname]==None: KeyError: 'valid' I have a field name valid in my models... May be it conflict with the new DAL?? Thanks Richard
[web2py] Re: background task error
I noticed the source code version is quite a bit different: http://code.google.com/p/web2py/source/browse/web2py.py #!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys if '__file__' in globals(): path = os.path.dirname(os.path.abspath(__file__)) os.chdir(path) else: path = os.getcwd() # Seems necessary for py2exe sys.path = [path]+[p for p in sys.path if not p==path] # import gluon.import_all # This should be uncommented for py2exe.py import gluon.widget # Start Web2py and Web2py cron service! gluon.widget.start(cron=True)
[web2py] Re: has anyone managed to pickle the 'db' DAL reference?
right, so I assume the answer was for do the export/import... k, got it. Thanks Mart :) On Feb 1, 9:38 am, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Yes, the data is there. On Jan 31, 9:26 pm, mart msenecal...@gmail.com wrote: i see... so, if I understand, only the table definitions are missing (and I should know this), but I am hoping that this means just the tables,not the data? If something Commet could make that the tabel data available (maybe as a string), would it be possible to to : tables please? client - web2py Server (commet listener?) return Models as a string (I don't know the tornado size limitations) Now that I have the the model, i should be able to have that explicite define (with no data in the tables), then do dbRemote = DAL(... ? Or maybe, this is silly... Maybe export/import is the best known solution? Thanks, mart :) On Jan 31, 9:09 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: I see what you mean now. No you cannot do that. If you do python web2py.py -A app -M -N -R script.py the script will be executed in an environment similar to a controller and will see the stuff defined in the models. There is no way (currently) for you to do db=DAL(...) and have db.yourtable without an explicit db.define_table(..). On Jan 31, 7:20 pm, mart msenecal...@gmail.com wrote: yes... that's what I meant... models ;) the models are invisible Thanks for that, I'll try that :) so with that, I can do something like: dbRemote = DAL( ? Mart :) On Jan 31, 3:47 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Not sure what you mean by invisible. web2py does not learn about tables from the db. It learns about them from the models. If you run a script with python web2py.py -A app -M -N -R script.py the script will see the models. On Jan 31, 10:27 am, mart msenecal...@gmail.com wrote: right... ok, I get that. So, is there a way to connect a new network connection to an existing sqlite db? I tried some suggestion from a posting of a few weeks ago, and it seems to connect, but tables are 'invisible'. ** Note ** some dbs are created from script (no web), still web2py (just no web, like __2py ;)) and others are created/maintained in a deployed web2py environment. Possible? can I for example have a script (DAL stand- alone), connect to a fully deployed web2py's DB? Actually, the scenario can be web2py app connects to another web2py app (on the same or different server), can also be stand alone DAL to stand-alone DAL, or stand-alone-DAL to web2py server, or web2py server to stand-alone DALs db Thanks, Mart:) On Jan 31, 9:24 am, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Impossible. You cannot picke a network connection. It more than just data. On Jan 31, 5:30 am, mart msenecal...@gmail.com wrote: Hi, I'm looking to try something (again) that has not yet been too successful (but I still want to try)... Currently (with stand-alone Dal) I am managing by passing 'db' around (or rather self.db) to avoid having to create more instances than I have to. Now, to pick up some processes where they left off, I would like to try pickling 'self.db' to a file, let sys.exit() happen, load the pickle, then debug exceptions, but without having to start from scratch ad rely on breakpoints to wake me up when I get to troublesome areas (the wait can be as long as an hour sometimes). So, has anyone successfully pickled 'db'? Anything fancy that need to be done the the attributes (even if only temporary). Thanks, Mart :)
[web2py] Search form in CRUD
Hi All, If I call search from a controller like: - def client_search(): return dict(form=crud.search(db.client)) ...and get the expected form, but using: - def data(): return dict(form=crud()) ...at: - [app]/crm/data/search/client ...I get a 404. Am I missing something? -- Cheers, Clam
[web2py] GAE only issue extra status info as text on top of page
I am complete newbie to web based application design, and new to web2py, so apologies if the answer is obvious. I am doing a simple to do list application as a learning exercise, and so far has been the right balance between enough complexity to force learning a few things without being overwhelming. However, I have hit a small item and don't know how to address. When I run the app using the web2py server, all pages render fine. When I run the GAE development environment locally, all pages render fine. When I upload to GAE, some of the pages include the following text at the start of the page (rest of page renders fine) and some pages render the same as they do in the other two environments. The rendered page code (when a problem) looks like this: Status: 200 OK Set-Cookie: session_id_todo=2001:ceba2b23-a490-44f2-86d0- aa1c1c93b8e4; Path=/ Expires: Tue, 01 Feb 2011 16:05:32 GMT Content-Type: text/html; charset=utf-8 Pragma: no-cache Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre- check=0 !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//EN http://www.w3.org/TR/html4/frameset.dtd; .. Could someone kindly point me in the right direction?
[web2py] Re: background task error
I have had trouble with browser caching by just left clicking on the button on the downloads page on the web2py.com website. I now make a point of using a right click Save As or whatever your browser provides as the item in the pop up menu to save the file. The first clue the left click didn't actually download a file is the download went too fast but in todays multi-megabit link speeds that may be hard to detect. Also check the VERSION file in the top level web2py directory. Ron
[web2py] Re: migration from 1.88.2 to 1.91.6 problem
Hello, If I change erase those line (in red) in /gluon/sqlhtml.py if not self.ignore_rw and not self.table[fieldname].writable: ### this happens because FROM has no knowledge of writable ### and thinks that a missing boolean field is a None if self.table[fieldname].type == 'boolean' and self.vars[fieldname]==None: del self.vars[fieldname] continue It solves the problem... But I don't have clue of what the impacts are on web2py. I use Postgres as backend... I will try to write a demo app to reproduce de problem... Richard On Tue, Feb 1, 2011 at 12:49 PM, Richard Vézina ml.richard.vez...@gmail.com wrote: Hello, I am not sure where it comes from the problem I face, but for sure it comes from 1.91.6 because I dont have the probleme with the exact same app under 1.88.2. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Traceback (most recent call last): File /home/www-data/web2py/gluon/restricted.py, line 188, in restricted exec ccode in environment File /home/www-data/web2py/applications/init/controllers/test.py, line 855, in module File /home/www-data/web2py/gluon/globals.py, line 95, in lambda self._caller = lambda f: f() File /home/www-data/web2py/gluon/tools.py, line 2297, in f return action(*a, **b) File /home/www-data/web2py/applications/init/controllers/test.py, line 410, in update if form.accepts(request.vars, session): File /home/www-data/web2py/gluon/sqlhtml.py, line 1091, in accepts if self.table[fieldname].type == 'boolean' and self.vars[fieldname]==None: KeyError: 'valid' I have a field name valid in my models... May be it conflict with the new DAL?? Thanks Richard
[web2py] Re: Log tickets
I'd like to hear more pros and cons about this from other users. massimo On Feb 1, 11:19 am, Jim Karsten iiijjj...@gmail.com wrote: On my development server, I log errors to syslog so they are accessible from a single location. Web2py tickets present a problem since they are not logged. I could configure syslog to access errors from the ticket error file, but it contains more information than I need and the text isn't in a suitable format. I added three lines to the RestrictedError class log() method in gluon/ restricted.py. The traceback message of a ticket is then logged quite nicely. def log(self, request): ... ticket_storage = TicketStorage(db=request.tickets_db) ticket_storage.store(request, f, d) = for line in str(self.traceback).split(\n): = if len(line.strip()) 1: = logger.error(line.strip()) return '%s/%s' % (a, f) except: logger.error(self.traceback) return None Is there any interest in adding that to the source code? Also, when I first tested this, I copied the logger.error(self.traceback) line from the except clause to log the ticket message. It only logged the first line. The message logged is: Traceback (most recent call last): which isn't much use. Possibly a for loop similar to what I used above would improve that. Regards, Jim Karsten
[web2py] Re: background task error
hmmm. I think I know the problem now. Try comment that line. It should work. On Feb 1, 1:38 pm, pbreit pbreitenb...@gmail.com wrote: I just downloaded web2py_osx.zip again and here is what I see: VERSION Version 1.91.6 (2011-01-03 17:55:14) -- web2py/Contents/Resource/web2py.py -- #!/usr/bin/env python2.5 import gluon.import_all from gluon.widget import start start()
Re: [web2py] Re: Log tickets
On Feb 1, 2011, at 11:38 AM, Massimo Di Pierro wrote: I'd like to hear more pros and cons about this from other users. Good idea. I'd make one change, though: define a separate ticket logger: logger_ticket = logging.getLogger(web2py.ticket) ...and use it for this purpose. Perhaps add an explicit entry for it in logging.example.conf. That way ticket logging can be controlled independently of real web2py errors. Is there a reason perhaps to log a little more information? The application, at least? That won't always be obvious from the traceback. Also the request URL is living somewhere in request.env (request.env.request_uri IIRC); might be useful. massimo On Feb 1, 11:19 am, Jim Karsten iiijjj...@gmail.com wrote: On my development server, I log errors to syslog so they are accessible from a single location. Web2py tickets present a problem since they are not logged. I could configure syslog to access errors from the ticket error file, but it contains more information than I need and the text isn't in a suitable format. I added three lines to the RestrictedError class log() method in gluon/ restricted.py. The traceback message of a ticket is then logged quite nicely. def log(self, request): ... ticket_storage = TicketStorage(db=request.tickets_db) ticket_storage.store(request, f, d) = for line in str(self.traceback).split(\n): = if len(line.strip()) 1: = logger.error(line.strip()) return '%s/%s' % (a, f) except: logger.error(self.traceback) return None Is there any interest in adding that to the source code? Also, when I first tested this, I copied the logger.error(self.traceback) line from the except clause to log the ticket message. It only logged the first line. The message logged is: Traceback (most recent call last): which isn't much use. Possibly a for loop similar to what I used above would improve that. Regards, Jim Karsten
[web2py] Re: dynamic session variables
the problem is when i open a second tab, it copies the session.id and doesn't recognize the new page_id basically what i want is a diferrent session.id[page_id] for each tab i open On Feb 1, 5:19 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: session.id = session.id or {} session.id[page_id]=session.id.get(page_id,str(request.now)) On Feb 1, 9:59 am, Francisco Costa m...@franciscocosta.com wrote: I want something like this: if not session.id[page_id]: session.id[page_id]=str(request.now) but i get this error: KeyError: '74' I want to validate if a dynamic variable exists.. if not I want to create it and to get the time On Feb 1, 4:17 am, Jason Brower encomp...@gmail.com wrote: You can do that. At the top of the default.py or what ever you are using, place something like... session.pages[request.page] = True or how ever you want to do it. Just make sure because it is a dictionary that you blank it or initialize it befor asigning anything to it. - Original message - Hello, I want to have dinamic session variables like this: session.id where id is different from page to page.. I've tried id = variable session.id and session.id['variable'] without any results. I would like to be able to open different pages at the same time and the browser could get all the session variables.- Hide quoted text - - Show quoted text -
[web2py] Re: GAE only issue extra status info as text on top of page
I had left a print statement in the code that I was using to debug an issue. When I removed the print statement, the application ran fine on GAE. I do not know if this was the root cause, or if there was something about the deployment (used GAE SDK tool in both cases) Can anyone share why (as I do not fully trust that I have found the issue versus merely seeing coincidence) On Feb 1, 11:26 am, Terry t.l.perkin...@gmail.com wrote: I am complete newbie to web based application design, and new to web2py, so apologies if the answer is obvious. I am doing a simple to do list application as a learning exercise, and so far has been the right balance between enough complexity to force learning a few things without being overwhelming. However, I have hit a small item and don't know how to address. When I run the app using the web2py server, all pages render fine. When I run the GAE development environment locally, all pages render fine. When I upload to GAE, some of the pages include the following text at the start of the page (rest of page renders fine) and some pages render the same as they do in the other two environments. The rendered page code (when a problem) looks like this: Status: 200 OK Set-Cookie: session_id_todo=2001:ceba2b23-a490-44f2-86d0- aa1c1c93b8e4; Path=/ Expires: Tue, 01 Feb 2011 16:05:32 GMT Content-Type: text/html; charset=utf-8 Pragma: no-cache Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre- check=0 !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//EN http://www.w3.org/TR/html4/frameset.dtd; .. Could someone kindly point me in the right direction?
[web2py] Re: tip of the day with a challenge
I have been thinking about this. How can one tell if the resulting records are going to have fields from multiple tables?. On Jan 30, 12:01 am, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Immagine you have the following (suggested by user Nik): db.define_table('person',Field('name'),format='%(name)s') db.define_table('company', Field('name'),format='%(name)s') db.define_table('member',Field('person',db.Person), Field('company',db.company)) and a new table db.define_table('manager', Field('member',db.member)) Now you may want to a validator for managers with names of possible people who are members of the company. You can do it in this way (allowed): db.manager.member.requires=IS_IN_DB(db,'member.id',lambda row: '% (name)s' % db.person[row.person]) It would be nice to be able to also use this alternative syntax (not yet allowed): db.manager.member.requires=IS_IN_DB(db(db.member.person==db.person.id),'member.id','% (person.name)s') This is not yet possible but would be better because it would use a join instead of one select per option. Want to larn web2py? Try understand the IS_IN_DB validator in gluon/validators.py and implement the proposed syntax above.
Re: [web2py] Re: dynamic session variables
On Feb 1, 2011, at 11:54 AM, Francisco Costa wrote: the problem is when i open a second tab, it copies the session.id and doesn't recognize the new page_id basically what i want is a diferrent session.id[page_id] for each tab i open where is page_id coming from? Perhaps the intended code is: session.id = session.id or {} session.id['page_id'] = session.id.get('page_id', str(request.now)) But yes, the problem with this is that you'll always get the same page id within a session. I see a couple more problems as well. You don't actually see pages or tabs; you just see requests. So a reload of a page is indistinguishable from opening the same page in a new tab. Also, you have no way of knowing when a page is closed. So if you keep a dict of open pages in your session, it'll grow indefinitely, which could result in a rather large session file. What are you really trying to do? On Feb 1, 5:19 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: session.id = session.id or {} session.id[page_id]=session.id.get(page_id,str(request.now)) On Feb 1, 9:59 am, Francisco Costa m...@franciscocosta.com wrote: I want something like this: if not session.id[page_id]: session.id[page_id]=str(request.now) but i get this error: KeyError: '74' I want to validate if a dynamic variable exists.. if not I want to create it and to get the time On Feb 1, 4:17 am, Jason Brower encomp...@gmail.com wrote: You can do that. At the top of the default.py or what ever you are using, place something like... session.pages[request.page] = True or how ever you want to do it. Just make sure because it is a dictionary that you blank it or initialize it befor asigning anything to it. - Original message - Hello, I want to have dinamic session variables like this: session.id where id is different from page to page.. I've tried id = variable session.id and session.id['variable'] without any results. I would like to be able to open different pages at the same time and the browser could get all the session variables.- Hide quoted text - - Show quoted text -
[web2py] web2py exec in the new again
From the usual source: http://lucumr.pocoo.org/2011/2/1/exec-in-python/ My answer: Armin suggests exec'ing in an environment and not in the outer environment. That is what web2py does and in fact we already follow much of the advice he gives us about about how to use exec. We just do not follow the advice not to use exec. ;-) Performance is not an issue because 1) the time to bytecompile is often small compared to the database IO time and because 2) web2py allows you to bytecode compile apps anyway. In web2py you cannot store instances of objects into session. While Armin makes it tool like this is a web2py problem this is more complex and general than that. In Python if you pickle and object that is instance of a class defined in /path1/mymodule.py and then you unpickle on a different installation where the class is defined in / path2/mymodule.py you may run into problems. Because web2py does not require installation (it is a feature) and has hot plug and play of apps (another feature) we cannot pickle instances (the price we pay for those features). To me it is worth it. Once again Armin raises the issue of memory leaks. Unfortunately CPython does not use a proper garbage collection but uses reference counting. It suffers from memory leaks when circular references are created. This is not a web2py specific problem. This is a problem with any Python program. For example the following code class A: pass a=A() a.b=a causes a memory leak in ANY python program. I agree with Armin that in the case of exec (and web2py uses exec), the self references are created whether you want them or not. That means one should not define classes in Models and Controllers. I have issued that warning already to our users and, I have never seen this being a problem in practice. Nothing in life is perfect and every design decision has a tradeoff. What would really be useful to us is an example of how to overcome that problem by showing how to break those implicit self references. Massimo
[web2py] Re: tip of the day with a challenge
You cannot tell easily from just looking at it. On Feb 1, 2:05 pm, DenesL denes1...@yahoo.ca wrote: I have been thinking about this. How can one tell if the resulting records are going to have fields from multiple tables?. On Jan 30, 12:01 am, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Immagine you have the following (suggested by user Nik): db.define_table('person',Field('name'),format='%(name)s') db.define_table('company', Field('name'),format='%(name)s') db.define_table('member',Field('person',db.Person), Field('company',db.company)) and a new table db.define_table('manager', Field('member',db.member)) Now you may want to a validator for managers with names of possible people who are members of the company. You can do it in this way (allowed): db.manager.member.requires=IS_IN_DB(db,'member.id',lambda row: '% (name)s' % db.person[row.person]) It would be nice to be able to also use this alternative syntax (not yet allowed): db.manager.member.requires=IS_IN_DB(db(db.member.person==db.person.id),'mem ber.id','% (person.name)s') This is not yet possible but would be better because it would use a join instead of one select per option. Want to larn web2py? Try understand the IS_IN_DB validator in gluon/validators.py and implement the proposed syntax above.
[web2py] Re: Can any help me with new dal in trunk?
I too have just been bitten by this. From r2950 to current trunk, all fieldnames in queries have been .lower()d This breaks my code which uses the real fieldnames - things like maxExtent maxResolution. This code all worked fine before on MySQL, PotsgreSQL sqlite. In the spirit of not breaking backward compatibility, the not lower()ing should be the default. If some cases want this lower()ing then they should be the ones who add an extra flag to get that behaviour, surely? F
[web2py] Re: dynamic session variables
I'm trying to do a realtime commenting system. I have this place for comments in posts, and I want the new comments to display automatically in the comments area, with reloading the page. I have this that check if there are new posts after the page is loaded every ten seconds: setInterval(ajax('{{=URL(r=request, f='last_comments', args=post_id)}}/{{=time()}}', ['comment'], ':eval');, 1); I then use request.args(1) to query the db if there are post created after the load. But if it finds a new post, i have to save in the session the new time for cheking.. It works well, but i need to have the post_id in the session variable, because if the user as 2 posts loaded, I want the correct comments to be displayed in the correct posts. I don't know if this is the best way, if you any other option please let me know. On Feb 1, 8:15 pm, Jonathan Lundell jlund...@pobox.com wrote: On Feb 1, 2011, at 11:54 AM, Francisco Costa wrote: the problem is when i open a second tab, it copies the session.id and doesn't recognize the new page_id basically what i want is a diferrent session.id[page_id] for each tab i open where is page_id coming from? Perhaps the intended code is: session.id = session.id or {} session.id['page_id'] = session.id.get('page_id', str(request.now)) But yes, the problem with this is that you'll always get the same page id within a session. I see a couple more problems as well. You don't actually see pages or tabs; you just see requests. So a reload of a page is indistinguishable from opening the same page in a new tab. Also, you have no way of knowing when a page is closed. So if you keep a dict of open pages in your session, it'll grow indefinitely, which could result in a rather large session file. What are you really trying to do? On Feb 1, 5:19 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: session.id = session.id or {} session.id[page_id]=session.id.get(page_id,str(request.now)) On Feb 1, 9:59 am, Francisco Costa m...@franciscocosta.com wrote: I want something like this: if not session.id[page_id]: session.id[page_id]=str(request.now) but i get this error: KeyError: '74' I want to validate if a dynamic variable exists.. if not I want to create it and to get the time On Feb 1, 4:17 am, Jason Brower encomp...@gmail.com wrote: You can do that. At the top of the default.py or what ever you are using, place something like... session.pages[request.page] = True or how ever you want to do it. Just make sure because it is a dictionary that you blank it or initialize it befor asigning anything to it. - Original message - Hello, I want to have dinamic session variables like this: session.id where id is different from page to page.. I've tried id = variable session.id and session.id['variable'] without any results. I would like to be able to open different pages at the same time and the browser could get all the session variables.- Hide quoted text - - Show quoted text -
[web2py] SQLCustomType
Has this been deprecated? If not, a refresher on how to make a simplejson type and perhaps a section of the book devoted to custom types? -- Thadeus
[web2py] pymysql gives Broken Pipe
I have been getting Broken Pipe issues with pymysql: Traceback (most recent call last): File /home/web2py/gluon/main.py, line 470, in wsgibase BaseAdapter.close_all_instances('commit') File /home/web2py/gluon/dal.py, line 272, in close_all_instances getattr(instance,action)() File /home/web2py/gluon/dal.py, line 1036, in commit return self.connection.commit() File /home/web2py/gluon/contrib/pymysql/connections.py, line 562, in commit self.errorhandler(None, exc, value) File /home/web2py/gluon/contrib/pymysql/connections.py, line 182, in defaulterrorhandler raise Error(errorclass, errorvalue) Error: (class 'socket.error', error(32, 'Broken pipe')) Everything is fine if I refresh the page, which I guess means that we establish a fresh MySQL connection rather than trying to reuse an old one (This is a quiet site)however tracebacks are horrible for users to face, so this really needs fixing. I guess this has been happening ever since the move to pymysql, but I've not had production sites using it generally my development is done on sqlite, so I hadn't noticed. This is with pool_size = 30 a default MySQL Debian Squeeze install. I see someone else has experienced it occasionally: https://groups.google.com/forum/?pli=1#!searchin/web2py/Broken$20pipe$20pymysql/web2py/W8xs1Vx38jo/Hz-BeQyMhfgJ I suspect that this would best be fixed in pymysql, but we should at least be catching in web2py anyway. I'm tempted by the same request as this user: https://groups.google.com/d/msg/web2py/GXyyuBdrtyg/up0eZ1nkpQYJ Portability of pymysql is kinda nice, but it's really no big deal to install the proven MySQLdb. Many thanks, Fran.
[web2py] Re: tip of the day with a challenge
The processing of the records depends on that. A short lived idea was to use dbset.query to get the info but since the query can look like a tree full of ANDs and ORs its complicated. So, no easy way out?. On Feb 1, 3:17 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: You cannot tell easily from just looking at it. On Feb 1, 2:05 pm, DenesL denes1...@yahoo.ca wrote: I have been thinking about this. How can one tell if the resulting records are going to have fields from multiple tables?. On Jan 30, 12:01 am, Massimo Di Pierro massimo.dipie...@gmail.com wrote: Immagine you have the following (suggested by user Nik): db.define_table('person',Field('name'),format='%(name)s') db.define_table('company', Field('name'),format='%(name)s') db.define_table('member',Field('person',db.Person), Field('company',db.company)) and a new table db.define_table('manager', Field('member',db.member)) Now you may want to a validator for managers with names of possible people who are members of the company. You can do it in this way (allowed): db.manager.member.requires=IS_IN_DB(db,'member.id',lambda row: '% (name)s' % db.person[row.person]) It would be nice to be able to also use this alternative syntax (not yet allowed): db.manager.member.requires=IS_IN_DB(db(db.member.person==db.person.id),'mem ber.id','% (person.name)s') This is not yet possible but would be better because it would use a join instead of one select per option. Want to larn web2py? Try understand the IS_IN_DB validator in gluon/validators.py and implement the proposed syntax above.
Re: [web2py] SQLCustomType
On 02/01/2011 02:31 PM, Thadeus Burgess wrote: Has this been deprecated? If not, a refresher on how to make a simplejson type and perhaps a section of the book devoted to custom types? I'd like to see this, too. I need to create an upload Field that stores the files in Rackspace Cloud Files. I had initially thought that I could do it with custom_store and custom_delete but realized that I would need custom_retrieve, too. So it is probably best to subclass Field or use SQLCustomType or something. -- Art Z -- Art Zemon, President Hen's Teeth Network http://www.hens-teeth.net/ The source of reliable, secure e-commerce web hosting http://www.hens-teeth.net/html/hosting/ecommerce_hosting.php Phone: (866)HENS-NET or (636)447-3030 ext. 200
[web2py] Re: dynamic session variables
I've manage to use this solution: firstcheck=datetime.fromtimestamp(float(request.args(1))) session.id=session.id or {} if not post_id in session.id: session.id[post_id]=firstcheck lastcheck=str(session.id[post_id]) if str(firstcheck)lastcheck: firstcheck=lastcheck and then query the db for posts created after firstcheck if returns any results: session.id[post_id]=str(request.now) On Feb 1, 8:27 pm, Francisco Costa m...@franciscocosta.com wrote: I'm trying to do a realtime commenting system. I have this place for comments in posts, and I want the new comments to display automatically in the comments area, with reloading the page. I have this that check if there are new posts after the page is loaded every ten seconds: setInterval(ajax('{{=URL(r=request, f='last_comments', args=post_id)}}/{{=time()}}', ['comment'], ':eval');, 1); I then use request.args(1) to query the db if there are post created after the load. But if it finds a new post, i have to save in the session the new time for cheking.. It works well, but i need to have the post_id in the session variable, because if the user as 2 posts loaded, I want the correct comments to be displayed in the correct posts. I don't know if this is the best way, if you any other option please let me know. On Feb 1, 8:15 pm, Jonathan Lundell jlund...@pobox.com wrote: On Feb 1, 2011, at 11:54 AM, Francisco Costa wrote: the problem is when i open a second tab, it copies the session.id and doesn't recognize the new page_id basically what i want is a diferrent session.id[page_id] for each tab i open where is page_id coming from? Perhaps the intended code is: session.id = session.id or {} session.id['page_id'] = session.id.get('page_id', str(request.now)) But yes, the problem with this is that you'll always get the same page id within a session. I see a couple more problems as well. You don't actually see pages or tabs; you just see requests. So a reload of a page is indistinguishable from opening the same page in a new tab. Also, you have no way of knowing when a page is closed. So if you keep a dict of open pages in your session, it'll grow indefinitely, which could result in a rather large session file. What are you really trying to do? On Feb 1, 5:19 pm, Massimo Di Pierro massimo.dipie...@gmail.com wrote: session.id = session.id or {} session.id[page_id]=session.id.get(page_id,str(request.now)) On Feb 1, 9:59 am, Francisco Costa m...@franciscocosta.com wrote: I want something like this: if not session.id[page_id]: session.id[page_id]=str(request.now) but i get this error: KeyError: '74' I want to validate if a dynamic variable exists.. if not I want to create it and to get the time On Feb 1, 4:17 am, Jason Brower encomp...@gmail.com wrote: You can do that. At the top of the default.py or what ever you are using, place something like... session.pages[request.page] = True or how ever you want to do it. Just make sure because it is a dictionary that you blank it or initialize it befor asigning anything to it. - Original message - Hello, I want to have dinamic session variables like this: session.id where id is different from page to page.. I've tried id = variable session.id and session.id['variable'] without any results. I would like to be able to open different pages at the same time and the browser could get all the session variables.- Hide quoted text - - Show quoted text -
[web2py] Re: GAE only issue extra status info as text on top of page
sounds like you got it right. i have seen similar behavior on GAE with print statements. they seem to show in the console on dev, but in the browser on production. try using the logging package instead of print statements to avoid that problem. cfh
[web2py] Re: adding tables instead of merging?
this sounds pretty database specific. GAE uses namespaces for this, MySQL calls them 'databases', and postgres calls them schemas. in all GAE and Postgres tables from one area cannot see tables in another area. MySQL does permit querying data across 'databases'.
[web2py] Re: web2py exec in the new again
One question: If I define a class externally, and use local_import to import it into controller or model, will it have these potential problems or not?
[web2py] Re: Need help in standardizing my coding and naming schemes before I start my main project
i try to use pythonic naming conventions in my database. i prefer: db.define_table('address_type', Field('name')) db.define_table('contact', Field('name')) db.define_table('address', Field('contact', db.contact), Field('type', db.address_type), Field('text')) but perhaps mainly because i don't like to type all those extra characters. :)
[web2py] Re: web2py and uploadify
bump On Jan 26, 9:42 pm, Niphlod niph...@gmail.com wrote: Hello, I'm working on integrating uploadify with web2py Unfortunately uploadify doesn't use cookies at all when posting the files so if I want to assign an user to an uploaded file I need to secure the receiving function somehow. Uploadify can definitely add a parameter on every POST it does on the receiving page I'm not sure how to secure the access to that page. When uploadify is initalized the user is known in advance, so specifyng the parameter(s) is not a problem. I don't see any method to retrieve current active sessions (I did a quick look into gluon folder) ... but at least it comes to my mind that I can put the user password as it is stored on the database (hashed with the random key) as a parameter and then retrieve the user querying the auth_user table In this way I think the user is uniquely identified (or do I need to put also the username in the mix?) ... If he/she can upload a file forging a POST instead of accessing the site is a minor problem if that can be fixed is a plus. Does anyone have a better idea ? Is that implementation secure ? a snippet is better than a thousand words def receiver_page(): session.forget() #user detection fill the blanks ... ... detected_user = x #end user detection db.uploaded_files.insert(content=db.uploaded_files.store(stream, filename), user_id=detected_user) I know a session.forget() and wanting to know which user is accessing the page is kind of nonsense but nevertheless I'd like to do it :P
Re: [web2py] pymysql gives Broken Pipe
I see no reason for you to use pool_size, I think you will avoid this error by not using it, and if you say that you have little traffic than I see almost no reason to use pool_size
[web2py] Default Web2Py Application on GAE
I have created an application for my business homepage. When I run web2py locally by default it opens a link to the welcome application. I have to edit the url to the application of my homepage. This works fine for development purposes, I can also access the site via the admin interface. I have successfully uploaded this to GAE, but by default when I try to access the application it sends me to welcome/default/index. However in the yaml file I told GAE to ignore this app so I get an error: http://www.rtplanb.com/welcome/default/index My question is... how do I edit the default application that opens when I run web2py/GAE?
[web2py] Favicon on GAE
I have used a favicon (.png) to get a nice little icon for my website in the browser. This works on my local web2py installation but now I have uploaded it to GAE the favicon does not appear? Any ideas?
Re: [web2py] Favicon on GAE
Insert with link tag in the meta: - link rel=icon href=http://www.quotes.co.uk/favicon.ico; type=image/x-icon - link rel=shortcut icon href=http://www.quotes.co.uk/favicon.ico; type=image/x-icon _ *Gilson Filho* *Web Developer http://gilsondev.com* 2011/2/1 Gary Bee g...@rtplanb.com I have used a favicon (.png) to get a nice little icon for my website in the browser. This works on my local web2py installation but now I have uploaded it to GAE the favicon does not appear? Any ideas?
[web2py] Re: Can any help me with new dal in trunk?
The change in trunk is supposed to only affect internals. If it breaks you code than is is a bug. Please provide an example of code that breaks and I will fix trunk. Massimo On Feb 1, 2:22 pm, Fran francisb...@gmail.com wrote: I too have just been bitten by this. From r2950 to current trunk, all fieldnames in queries have been .lower()d This breaks my code which uses the real fieldnames - things like maxExtent maxResolution. This code all worked fine before on MySQL, PotsgreSQL sqlite. In the spirit of not breaking backward compatibility, the not lower()ing should be the default. If some cases want this lower()ing then they should be the ones who add an extra flag to get that behaviour, surely? F
[web2py] Re: SQLCustomType
It is not deprecated. It is just that I am not ready to promise backward compatibility. Nevertheless use it. If something better comes along, there will be instructions for the transition. On Feb 1, 2:46 pm, Art Zemon a...@hens-teeth.net wrote: On 02/01/2011 02:31 PM, Thadeus Burgess wrote: Has this been deprecated? If not, a refresher on how to make a simplejson type and perhaps a section of the book devoted to custom types? I'd like to see this, too. I need to create an upload Field that stores the files in Rackspace Cloud Files. I had initially thought that I could do it with custom_store and custom_delete but realized that I would need custom_retrieve, too. So it is probably best to subclass Field or use SQLCustomType or something. -- Art Z -- Art Zemon, President Hen's Teeth Network http://www.hens-teeth.net/ The source of reliable, secure e-commerce web hosting http://www.hens-teeth.net/html/hosting/ecommerce_hosting.php Phone: (866)HENS-NET or (636)447-3030 ext. 200
[web2py] Re: web2py exec in the new again
I run this test (following Armin's example): # in file a.py class Foo(object): def __del__(self): print 'Deleted' #in file b.py from a import A foo=Foo() #in file c.py execfile('b.py', {}) execfile('b.py', {}) execfile('b.py', {}) import gc gc.collect() running c.py printes Deleted Deleted Deleted therefore there is NO memory leak. On Feb 1, 3:08 pm, VP vtp2...@gmail.com wrote: One question: If I define a class externally, and use local_import to import it into controller or model, will it have these potential problems or not?
[web2py] Re: Default Web2Py Application on GAE
call it init. On Feb 1, 3:08 pm, Gary Bee g...@rtplanb.com wrote: I have created an application for my business homepage. When I run web2py locally by default it opens a link to the welcome application. I have to edit the url to the application of my homepage. This works fine for development purposes, I can also access the site via the admin interface. I have successfully uploaded this to GAE, but by default when I try to access the application it sends me to welcome/default/index. However in the yaml file I told GAE to ignore this app so I get an error:http://www.rtplanb.com/welcome/default/index My question is... how do I edit the default application that opens when I run web2py/GAE?
[web2py] [SOLVED] Re: Default Web2Py Application on GAE
I do apologize. I have found init.py and have edited it to my satisfaction On Feb 1, 9:08 pm, Gary Bee g...@rtplanb.com wrote: I have created an application for my business homepage. When I run web2py locally by default it opens a link to the welcome application. I have to edit the url to the application of my homepage. This works fine for development purposes, I can also access the site via the admin interface. I have successfully uploaded this to GAE, but by default when I try to access the application it sends me to welcome/default/index. However in the yaml file I told GAE to ignore this app so I get an error:http://www.rtplanb.com/welcome/default/index My question is... how do I edit the default application that opens when I run web2py/GAE?
[web2py] External Access to web2py (uWSGI + Cherokee)
Ok, I was able to deploy web2py using uWSGI Cherokee. I can access it locally but not from the outside of the network. The connection basically times out when I try to access it. Any setting on cherokee that I am not aware of? I open the firewall to see if that was it but did not solved the problem. Ideas? leads? Thanks Dan
[web2py] Re: web2py exec in the new again
But what if 'local_import' is used (instead of 'from a import Foo') -- does local_import work the same as regular Python imports? On Tuesday, February 1, 2011 5:09:25 PM UTC-5, Massimo Di Pierro wrote: I run this test (following Armin's example): # in file a.py class Foo(object): def __del__(self): print 'Deleted' #in file b.py from a import A foo=Foo() #in file c.py execfile('b.py', {}) execfile('b.py', {}) execfile('b.py', {}) import gc gc.collect() running c.py printes Deleted Deleted Deleted therefore there is NO memory leak. On Feb 1, 3:08 pm, VP vtp...@gmail.com wrote: One question: If I define a class externally, and use local_import to import it into controller or model, will it have these potential problems or not?
[web2py] Re: Can any help me with new dal in trunk?
Cool, thanks :) This function: http://bazaar.launchpad.net/~flavour/sahana-eden/trunk/view/head:/modules/s3/s3gis.py#L381 maxResolution maxExtent don't get copied into output as maxresolution maxextent are in the Rows... The relevant model: http://bazaar.launchpad.net/~flavour/sahana-eden/trunk/view/head:/models/03_gis.py#L88 F
Re: [web2py] pymysql gives Broken Pipe
Thanks - fine for this currently low-volume site now but we definitely want to take advantage of this feature for scalability (the site may suddenly start getting a lot of traffic): http://www.web2py.com/book/default/chapter/06#Connection-Pooling Also see: http://www.web2py.com/book/default/chapter/06#Connection-Failures The problem is known, but it seems web2py's retry mechanism isn't working any more... F
[web2py] Re: web2py exec in the new again
Maybe unnecessary, but here's another test: + In foo.py: class Foo(object): def __del__(self): print 'Deleted' def bar(self): print bar:: b = Foo() def f(): print local_func:: c = Foo() + In test.py: from foo import * a = Foo() a.bar() f() + Then, in interpreter: execfile('test.py',{}) bar:: Deleted local_func:: Deleted Deleted == It looks like all variables a, b, and c are properly destroyed. Is this the pattern of usage in web2py? (1) No class in controller. (2) External classes are imported using local_import (does local_import work exactly like import?). If so, I think webp2y is okay with respect to memory leak.
[web2py] Re: web2py exec in the new again
On Tuesday, February 1, 2011 3:16:12 PM UTC-5, Massimo Di Pierro wrote: In web2py you cannot store instances of objects into session. While Armin makes it tool like this is a web2py problem this is more complex and general than that. In Python if you pickle and object that is instance of a class defined in /path1/mymodule.py and then you unpickle on a different installation where the class is defined in / path2/mymodule.py you may run into problems. Because web2py does not require installation (it is a feature) and has hot plug and play of apps (another feature) we cannot pickle instances (the price we pay for those features). To me it is worth it. Is this limitation documented anywhere? I agree with Armin that in the case of exec (and web2py uses exec), the self references are created whether you want them or not. That means one should not define classes in Models and Controllers. I have issued that warning already to our users and, I have never seen this being a problem in practice. My understanding is that with the recent fix (using gc), we can include classes in models and controllers, as long as they don't have a __del__ method ( https://groups.google.com/forum/#!msg/web2py/zE1cGK2x288/R6fTdEQjNOoJ). Is that right? That should be documented as well. Nothing in life is perfect and every design decision has a tradeoff. A quote from Armin's post: Because one of the things we all have to keep in mind: if a Python developer starts his journeys in the twisted world of wrongly executed Python modules they will be very confused when they continue their travels in another Python environment. And having different semantics in different frameworks/modules/libraries is very hurtful for Python as a runtime and language. He (and Jacob, and others) seems to be very concerned about following conventions. Of course, that's reasonable, as conventions can be very helpful, but there's always going to be some tension be convention and innovation. The above quote implies dire consequences if a few libraries and frameworks happen to buck this particular convention, but is there actual evidence of significant developer confusion or other supposed harm to Python? If we extend this logic, Python itself probably shouldn't exist because it violates conventions established by C and other earlier languages and might confuse developers as they move between environments. Anyway, it's interesting that Armin didn't find arguments about the importance of convention so compelling when it came to creating an alternative to the Standard Library logging module: http://plumberjack.blogspot.com/2010/09/python-logging-functionality-facts-vs.html Anthony
[web2py] Re: web2py exec in the new again
It's interesting to note that even the variable c in my example above is properly destroyed with execfile('test.py', {}). What does this mean? I think this means that YES you can define classes inside a web2py controller without memory leaks, as long as there are no global (within the controller, i.e. foo.py) instances of Foo.
[web2py] Re: web2py exec in the new again
If what I thought above is true, a warning like this sufficient: Global objects/variables in controllers might (will?) cause memory leaks. If this is what the criticism of web2py amounts to, I think it's a storm in a tea cup.
[web2py] Re: migration from 1.88.2 to 1.91.6 problem
Which ones are in red? On Feb 1, 1:13 pm, Richard Vézina ml.richard.vez...@gmail.com wrote: Hello, If I change erase those line (in red) in /gluon/sqlhtml.py if not self.ignore_rw and not self.table[fieldname].writable: ### this happens because FROM has no knowledge of writable ### and thinks that a missing boolean field is a None if self.table[fieldname].type == 'boolean' and self.vars[fieldname]==None: del self.vars[fieldname] continue It solves the problem... But I don't have clue of what the impacts are on web2py. I use Postgres as backend... I will try to write a demo app to reproduce de problem... Richard On Tue, Feb 1, 2011 at 12:49 PM, Richard Vézina ml.richard.vez...@gmail.com wrote: Hello, I am not sure where it comes from the problem I face, but for sure it comes from 1.91.6 because I dont have the probleme with the exact same app under 1.88.2. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Traceback (most recent call last): File /home/www-data/web2py/gluon/restricted.py, line 188, in restricted exec ccode in environment File /home/www-data/web2py/applications/init/controllers/test.py, line 855, in module File /home/www-data/web2py/gluon/globals.py, line 95, in lambda self._caller = lambda f: f() File /home/www-data/web2py/gluon/tools.py, line 2297, in f return action(*a, **b) File /home/www-data/web2py/applications/init/controllers/test.py, line 410, in update if form.accepts(request.vars, session): File /home/www-data/web2py/gluon/sqlhtml.py, line 1091, in accepts if self.table[fieldname].type == 'boolean' and self.vars[fieldname]==None: KeyError: 'valid' I have a field name valid in my models... May be it conflict with the new DAL?? Thanks Richard
[web2py] Implement Share this Button of Facebook
How would you go about implemeting the Share This button of Facebook by pulling out a query from a database table. for example: meta property=ogescription content={{=blog.post}} / Thanks in Advance
Re: [web2py] web2py exec in the new again
On Feb 1, 2011, at 12:16 PM, Massimo Di Pierro wrote: I agree with Armin that in the case of exec (and web2py uses exec), the self references are created whether you want them or not. That means one should not define classes in Models and Controllers. I have issued that warning already to our users and, I have never seen this being a problem in practice. Nothing in life is perfect and every design decision has a tradeoff. What would really be useful to us is an example of how to overcome that problem by showing how to break those implicit self references. I agree. This is a subtle problem that isn't all that obvious to most of us, including me. I've got classes defined in models (it's sort of the obvious place to define custom validators, for example), and I'd like to understand the implications better than I do.
[web2py] Re: External Access to web2py (uWSGI + Cherokee)
Ok..it was my ISP blocking port 80...apparently it is a common practice by ISPs. Worked fine after I changed the port..thanks d On Feb 1, 2:15 pm, greenpoise danel.sega...@gmail.com wrote: Ok, I was able to deploy web2py using uWSGI Cherokee. I can access it locally but not from the outside of the network. The connection basically times out when I try to access it. Any setting on cherokee that I am not aware of? I open the firewall to see if that was it but did not solved the problem. Ideas? leads? Thanks Dan
[web2py] Re: Can't deal with MemcachedKeyLengthError in caching selects
Thanks! That's the right way. It worked. On 2月1日, 午後11:37, Massimo Di Pierro massimo.dipie...@gmail.com wrote: I think have a solution in trunk. You will not need to specify length and should work. On Jan 31, 8:40 pm, kenji4569 hos...@s-cubism.jp wrote: When I run the following code: db(db.xxx.id==1).select(cache=(cache.memcache, 5)) I got MemcachedKeyLengthError: Key length is 250. Since xxx table has many fields, the sql used for the key readily reached the limit. I just want to specify the cache key, but I couldn't, given the dal.py: (cache_model, time_expire) = attributes['cache'] del attributes['cache'] key = self.uri + '/' + sql rows = cache_model(key, lambda: response(sql), time_expire) Please help. Thanks in advance, Kenji
[web2py] Re: adding tables instead of merging?
interesting.. so may turn being a lack of planning on my part... I can assue the SQLite fall in the group of those no being able to see tables outside its own area... So, given this problem (the need to collect the generated tables who share the same names), would you have any suggestion? BTW, I am using SQLite. I figure the fact that SQLite is light weight would prove beneficial, but perhaps I was wrong? Just seems that this not being able to get remote scripts to connect to the db is appearing problematic... ANyways, any suggestion around this would be greatly appreciated :) Thanks, Mart :) On Feb 1, 4:07 pm, howesc how...@umich.edu wrote: this sounds pretty database specific. GAE uses namespaces for this, MySQL calls them 'databases', and postgres calls them schemas. in all GAE and Postgres tables from one area cannot see tables in another area. MySQL does permit querying data across 'databases'.
[web2py] Kudos for web2py!
This was unexpected! I was reading thru a blog post on how wonderful Seaside - a Smalltalk web framework was, and lo and behold the author says about half way down: = Now it’s time for a confession: the fastest-to-develop in, most prototype-friendly framework that I’ve had the pleasure to work with so far is not Seaside, nor is it Ruby on Rails (which has other reasons to recommend it). It’s a relatively unknown (dare I say underdog?) Python framework called web2py, written by Massimo Di Pierro. Enjoy!
[web2py] Re: Kudos for web2py!
Ok a link would be useful: http://smalltalkzen.wordpress.com/2011/02/01/a-secret-passion-and-your-choice-of-web-framework/
[web2py] Re: adding tables instead of merging?
Hi Mart, I thought you'd already solved that one in a previous thread named 'tables created dynamically'? I am just reminding you of the thread in case you'd overlooked that interesting answer by Massimo. Sorry if that hasn't helped, I do not know of any better answer. Best regards, David On Feb 1, 5:14 pm, mart msenecal...@gmail.com wrote: Hi, Say a process generates a DB and a set of tables, and say this process is repeated multple times: Is it possible to add tables (as opposed to merging) to an existing DB? Since once set of tables have the same names as another, ideally the tables could live in a separate folder (uniquely named)... I'm not too hopeful, but is something like this possible? thanks, Mart :)
[web2py] Re: web2py exec in the new again
You are correct. There ar no problems using trunk (and future web2py versions) if classes have no __del__ method. On Feb 1, 5:00 pm, Anthony abasta...@gmail.com wrote: On Tuesday, February 1, 2011 3:16:12 PM UTC-5, Massimo Di Pierro wrote: In web2py you cannot store instances of objects into session. While Armin makes it tool like this is a web2py problem this is more complex and general than that. In Python if you pickle and object that is instance of a class defined in /path1/mymodule.py and then you unpickle on a different installation where the class is defined in / path2/mymodule.py you may run into problems. Because web2py does not require installation (it is a feature) and has hot plug and play of apps (another feature) we cannot pickle instances (the price we pay for those features). To me it is worth it. Is this limitation documented anywhere? I agree with Armin that in the case of exec (and web2py uses exec), the self references are created whether you want them or not. That means one should not define classes in Models and Controllers. I have issued that warning already to our users and, I have never seen this being a problem in practice. My understanding is that with the recent fix (using gc), we can include classes in models and controllers, as long as they don't have a __del__ method (https://groups.google.com/forum/#!msg/web2py/zE1cGK2x288/R6fTdEQjNOoJ). Is that right? That should be documented as well. Nothing in life is perfect and every design decision has a tradeoff. A quote from Armin's post: Because one of the things we all have to keep in mind: if a Python developer starts his journeys in the twisted world of wrongly executed Python modules they will be very confused when they continue their travels in another Python environment. And having different semantics in different frameworks/modules/libraries is very hurtful for Python as a runtime and language. He (and Jacob, and others) seems to be very concerned about following conventions. Of course, that's reasonable, as conventions can be very helpful, but there's always going to be some tension be convention and innovation. The above quote implies dire consequences if a few libraries and frameworks happen to buck this particular convention, but is there actual evidence of significant developer confusion or other supposed harm to Python? If we extend this logic, Python itself probably shouldn't exist because it violates conventions established by C and other earlier languages and might confuse developers as they move between environments. Anyway, it's interesting that Armin didn't find arguments about the importance of convention so compelling when it came to creating an alternative to the Standard Library logging module:http://plumberjack.blogspot.com/2010/09/python-logging-functionality-... Anthony
[web2py] Re: web2py exec in the new again
Not quite like that. It is more like (web2py specific): Do not declare classes with a __del__ method in web2py models or controllers or instances of those classes will cause memory leaks AND (for any python program) Do not declare classes with a __del__ method in any Python program unless you are sure there are no circular references Circular references are very easy to create accidentally in Python. Massimo On Feb 1, 5:08 pm, VP vtp2...@gmail.com wrote: If what I thought above is true, a warning like this sufficient: Global objects/variables in controllers might (will?) cause memory leaks. If this is what the criticism of web2py amounts to, I think it's a storm in a tea cup.
[web2py] Re: web2py exec in the new again
There is no problem if they have no __del__ method. On Feb 1, 5:24 pm, Jonathan Lundell jlund...@pobox.com wrote: On Feb 1, 2011, at 12:16 PM, Massimo Di Pierro wrote: I agree with Armin that in the case of exec (and web2py uses exec), the self references are created whether you want them or not. That means one should not define classes in Models and Controllers. I have issued that warning already to our users and, I have never seen this being a problem in practice. Nothing in life is perfect and every design decision has a tradeoff. What would really be useful to us is an example of how to overcome that problem by showing how to break those implicit self references. I agree. This is a subtle problem that isn't all that obvious to most of us, including me. I've got classes defined in models (it's sort of the obvious place to define custom validators, for example), and I'd like to understand the implications better than I do.
[web2py] Re: Kudos for web2py!
Thanks Mikech. I think we removed written by ... from the web site because so many people have contributed that my job is more that of fixing bugs and rejecting backward incompatible patches. ;-) Massimo On Feb 1, 6:41 pm, mikech mp.ch...@gmail.com wrote: This was unexpected! I was reading thru a blog post on how wonderful Seaside - a Smalltalk web framework was, and lo and behold the author says about half way down: = Now it’s time for a confession: the fastest-to-develop in, most prototype-friendly framework that I’ve had the pleasure to work with so far is not Seaside, nor is it Ruby on Rails (which has other reasons to recommend it). It’s a relatively unknown (dare I say underdog?) Python framework called web2py, written by Massimo Di Pierro. Enjoy!
[web2py] Re: Returning the Row after insert;
Actualy do the same action, but select allow to choose columns On 1 фев, 05:36, Vasile Ermicioi elff...@gmail.com wrote: db(db.auth_user.id=id).select() will give you a list of rows (of one element :) ) easier is row = db.auth_user[form.vars.id]
[web2py] jQuery 1.5 released
I was poking around and found jQuery 1.5 is released. They substantially improved the ajax portion of the library as well as big performance improvements when finding sibling DOM objects .prev(), .next(). Just thought I would mention it since web2py embeds jQuery.
Re: [web2py] jQuery 1.5 released
Nice! Lets test it with web2py welcome app. 2011/2/2 ron_m ron.mco...@gmail.com I was poking around and found jQuery 1.5 is released. They substantially improved the ajax portion of the library as well as big performance improvements when finding sibling DOM objects .prev(), .next(). Just thought I would mention it since web2py embeds jQuery.
[web2py] web2py is running on dotCloud
Take it a look: http://www.web2py.dotcloud.com/welcome/default/index definitely the 'heroku' for web2py So easy $dotcloud deploy -t python myweb2pyapp.www $ln -s wsgihandler.py wsgi.py $cd path/to/my/web2py $dotcloud push myweb2pyapp.www $... rsync http://www.web2py.dotcloud.com/welcome/default/index and http://www.web2py.dotcloud.comhttp://www.web2py.dotcloud.com/welcome/default/index I am a little busy now, but I will try it with PostGreSQL tomorrow -- Bruno Rocha http://about.me/rochacbruno/bio
Re: [web2py] jQuery 1.5 released
I took the min version and renamed it the same name as the 1.4.4 file in 1.91.6 and tested both the welcome app and the video system controller I am writing. No noticeable differences that I could see. I also use jQueryUI but am back at 1.8.6, current is 1.8.9 and did not see anything broken. I use a small amount of ajax to allow for user positioning of symbols on a map of the facility and when I drop a symbol the event makes an ajax call to a web2py controller to update the position of the symbol on the map into the database so it is drawn in the correct position next time. From my limited perspective the jQuery 1.5 release is perfect.
Re: [web2py] Re: Kudos for web2py!
Agree on that, i used to work with django and turbogears (both versions 1.5 and 2), last year a knew about web2py, and met Massimo on October, since then i have improved my work a lot!, hopefully in a short time i would be able to contribute with some apps and plugins. Thanks Massimo! Ok a link would be useful: http://smalltalkzen.wordpress.com/2011/02/01/a-secret-passion-and-your-choice-of-web-framework/ -- /* Marco Antonio Mansilla Gutierrez, alias Big Medios de contacto adicionales: Weblog: http://www.marcomansilla.com.ar Jabber: conta...@marcomansilla.com.ar Gtalk: conta...@marcomansilla.com.ar MSN: conta...@marcomansilla.com.ar http://www.saltalug.org.ar */
[web2py] Re: jQuery 1.5 released
Usually there is a 1.X.1 a few days after...;-) On Feb 1, 10:04 pm, ron_m ron.mco...@gmail.com wrote: I took the min version and renamed it the same name as the 1.4.4 file in 1.91.6 and tested both the welcome app and the video system controller I am writing. No noticeable differences that I could see. I also use jQueryUI but am back at 1.8.6, current is 1.8.9 and did not see anything broken. I use a small amount of ajax to allow for user positioning of symbols on a map of the facility and when I drop a symbol the event makes an ajax call to a web2py controller to update the position of the symbol on the map into the database so it is drawn in the correct position next time. From my limited perspective the jQuery 1.5 release is perfect.
[web2py] Re: adding tables instead of merging?
Hi Villas - you know it is quite possible i overlooked the obvious ;) Ok, yeah had to check what I had asked back then. Yup, that was great! and it still works great, no doubt about that. the thing is in this case, we can create tables alright (even recreate them if need be, or import them). The problem is, every identical process will have the same tables and same names and I need to centralize them somehow (especially, if we can't establish remote connections throuh script). I am almost almost certain that if I say yeah, it used to be in table 'changes', now its in table 'changesX'... it will cause mass confusion, like a meltdown ;) so the hope would be to do something like this: /databases/...product/branch/build_version/ TABLES_FOR_THAT_SPECIFIC_BUILD the path would match the path to the same build on the file server where the builds get stored. Thanks for the reply :) On Feb 1, 8:23 pm, villas villa...@gmail.com wrote: Hi Mart, I thought you'd already solved that one in a previous thread named 'tables created dynamically'? I am just reminding you of the thread in case you'd overlooked that interesting answer by Massimo. Sorry if that hasn't helped, I do not know of any better answer. Best regards, David On Feb 1, 5:14 pm, mart msenecal...@gmail.com wrote: Hi, Say a process generates a DB and a set of tables, and say this process is repeated multple times: Is it possible to add tables (as opposed to merging) to an existing DB? Since once set of tables have the same names as another, ideally the tables could live in a separate folder (uniquely named)... I'm not too hopeful, but is something like this possible? thanks, Mart :)
Re: [web2py] Re: Need help in standardizing my coding and naming schemes before I start my main project
I'd be cautious about some of those field names. I'm not about to look them up, but they look suspiciously like they may collide with reserved words. I'm looking particularly hard at 'type' and 'text'. You may want to check that. Martin. I don't mind typing the extra characters now that work bought me one of these http://www.kinesis-ergo.com/advantage_pro.htm :) On 1 February 2011 23:08, howesc how...@umich.edu wrote: i try to use pythonic naming conventions in my database. i prefer: db.define_table('address_type', Field('name')) db.define_table('contact', Field('name')) db.define_table('address', Field('contact', db.contact), Field('type', db.address_type), Field('text')) but perhaps mainly because i don't like to type all those extra characters. :)
[web2py] Re: web2py is running on dotCloud
Cool. Thanks for putting up that demo. Everyone, the DotCloud CEO recently offered folks on this list beta invites: https://groups.google.com/d/msg/web2py/eRARkDuYGn4/VJ9twwOA3-cJ They also recently added a web2py setup tutorial to their documentation: http://docs.dotcloud.com/static/tutorials/web2py/. I emailed them to request they add the tutorial link to their main documentation page (which they did), and they said they were interested in feedback on the tutorial so they can improve it -- so try it out, and send them any feedback. Right now, Django is the only other Python framework with a tutorial there. Anthony On Tuesday, February 1, 2011 11:02:11 PM UTC-5, rochacbruno wrote: Take it a look: http://www.web2py.dotcloud.com/welcome/default/index definitely the 'heroku' for web2py So easy $dotcloud deploy -t python myweb2pyapp.www $ln -s wsgihandler.py wsgi.py $cd path/to/my/web2py $dotcloud push myweb2pyapp.www $... rsync http://www.web2py.dotcloud.com/welcome/default/index and http://www.web2py.dotcloud.comhttp://www.web2py.dotcloud.com/welcome/default/index I am a little busy now, but I will try it with PostGreSQL tomorrow -- Bruno Rocha http://about.me/rochacbruno/bio
[web2py] Creating subdomain on user registration
Im new to web2py .. I'm building an application which requires to create subdomain which will be the username.. (like wordpress.com) . So for example.. user1.mydomain.com will be user1's area in my website. I have set the cname records for *.mydomain.com to point mydomain.com Now my question is how can I make user1 part of the domain globally available for all my controllers ( maybe in request.vars .. not sure) . Also user1 must be able to point user1.mydomain.com to his own domain ( custom domain feature) for the application interface. How can I achieve this?
[web2py] Re: Need help in standardizing my coding and naming schemes before I start my main project
The wizard convention is the following: - table and field names are lower case - table names have a t_ prefix - field names have a f_ prefix - reference fields have the same name as the table being referenced (but with f_, not t_) you can then use shortcuts: Person = db.define_table('t_person',Field('f_name')) It can be ugly but causes no ambiguities and it is easy to read. You can also compute labels from fields names automatically label = ' '.join(x.capitalize() for x in field_name[2:].split('_')) On Feb 1, 10:12 pm, Martin Barnard barnard.mar...@gmail.com wrote: I'd be cautious about some of those field names. I'm not about to look them up, but they look suspiciously like they may collide with reserved words. I'm looking particularly hard at 'type' and 'text'. You may want to check that. Martin. I don't mind typing the extra characters now that work bought me one of these http://www.kinesis-ergo.com/advantage_pro.htm :) On 1 February 2011 23:08, howesc how...@umich.edu wrote: i try to use pythonic naming conventions in my database. i prefer: db.define_table('address_type', Field('name')) db.define_table('contact', Field('name')) db.define_table('address', Field('contact', db.contact), Field('type', db.address_type), Field('text')) but perhaps mainly because i don't like to type all those extra characters. :)