[web2py] Re: Linking GRID records with other records in same GRID
Any suggestions ? How can I get to the details page for any grid record without clicking on Details button (knowing the grid-id is not sufficient as the signature value is unique for every record) On Wednesday, March 13, 2019 at 10:02:06 AM UTC-4, Sarbjit wrote: > > I am using SQLFORM.GRID to display the database records. In my > application, certain records may contain the reference to id of other > records. Currently, I have to use "search" option to find the record > matching reference id. > > What I want to do is :- Have a hyperlink in the reference field and then > open the details (View button equivalent) for the other record.Problem is > View button for each row in GRID has a unique _signature . In the absence > of this value, I can't form the hyperlink (view option) for other record. > > How can I get the _signature value associated with GRID records? or is > there any way, I can access the Edit Page for a record from the GRID given > its ID. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/5ac45233-0edc-4d16-9c88-85cf9b3e9632%40googlegroups.com.
[web2py] Linking GRID records with other records in same GRID
I am using SQLFORM.GRID to display the database records. In my application, certain records may contain the reference to id of other records. Currently, I have to use "search" option to find the record matching reference id. What I want to do is :- Have a hyperlink in the reference field and then open the details (View button equivalent) for the other record.Problem is View button for each row in GRID has a unique _signature . In the absence of this value, I can't form the hyperlink (view option) for other record. How can I get the _signature value associated with GRID records? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Update text for GRID buttons - View/Edit etc
Hello, I want to change the default text of the buttons visible in SQLFORM.GRID. I am using the following code, but it is not updating the text grid.element(_title='View')['innerHTML']='Details' Any idea on how this can be done? Thanks ! -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Using REST API for uploading file
In my actual app, I have multiple fields which needs to be populated along with file upload. I have never used CURL before, so I don't know how to handle this case. I can try with --data-binary but I am not sure if other fields will work. On Monday, March 4, 2019 at 5:01:07 PM UTC-5, Dave S wrote: > > > > On Monday, March 4, 2019 at 11:22:19 AM UTC-8, Sarbjit wrote: >> >> Hello, >> >> I am trying to use CURL to upload a file in the 'upload' field using REST >> services. But on using the command, some garbage is getting uploaded, even >> though it shows as type "file" but I could not download the file (invalid >> request) and the URL becomes too lengthy (looks like the file contents are >> uploaded) >> >> Models >> >> db.define_table('test', Field('date', 'datetime'), >> Field('user'), >> Field('upload_data','upload')) >> >> Controllers >> >> @request.restful() >> def api(): >> response.view = 'generic.json' >> >> >> def GET(tablename, id): >> if not tablename == 'test': >> raise HTTP(400) >> return dict(record = db.test(id)) >> >> >> def POST(tablename, **fields): >> if not tablename == 'test': >> raise HTTP(400) >> return db.test.validate_and_insert(**fields) >> >> >> return locals() >> >> CURL syntax >> >> curl POST -i -F upload_data=@somefile.zip http: >> //:8000/testapp/default/api/test.json >> >> >> Has anyone used the CURL to upload a file (zip file) with web2py? >> > > You're using -F which is for Form data ... is that what you want? > > I use --data-binary for a zip file, to an NginX front end, and that works > just fine. (-d does not work; my zip file gets truncated at the first 0, > and I think there's URL_ENCODING applied before that ). Curl isn't the > usual client for my app -- instead, I use libcurl inside my app, which > doesn't seem to mind binary. I do set the content-type header, and I > provide the size via CURLOPT_POSTFIELDSIZE_LARGE. > > /dps > > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Using REST API for uploading file
Hello, I am trying to use CURL to upload a file in the 'upload' field using REST services. But on using the command, some garbage is getting uploaded, even though it shows as type "file" but I could not download the file (invalid request) and the URL becomes too lengthy (looks like the file contents are uploaded) Models db.define_table('test', Field('date', 'datetime'), Field('user'), Field('upload_data','upload')) Controllers @request.restful() def api(): response.view = 'generic.json' def GET(tablename, id): if not tablename == 'test': raise HTTP(400) return dict(record = db.test(id)) def POST(tablename, **fields): if not tablename == 'test': raise HTTP(400) return db.test.validate_and_insert(**fields) return locals() CURL syntax curl POST -i -F upload_data=@somefile.zip http: //:8000/testapp/default/api/test.json Has anyone used the CURL to upload a file (zip file) with web2py? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to reuse the IS_IN_SET validator list in views and controllers?
Thanks On Sunday, November 26, 2017 at 10:59:11 AM UTC-5, Anthony wrote: > > In a model file: > > my_products = ['Type1', 'Type2', 'Type3'] > > Because (non-conditional) models are executed on every request before any > controller or view, any objects defined in a model are available in any > controller or view -- so in a controller or view, just refer to the > my_products variable. > > You could of course also define the list in a module and import it > wherever needed. > > Anthony > > On Sunday, November 26, 2017 at 10:05:21 AM UTC-5, Sarbjit wrote: >> >> Hello, >> >> I have defined a IS_IN_SET validator inside my models. Now, I want to use >> the same list inside controllers and views. What is the best way to re-use >> the same list inside controllers and views without having to duplicate the >> code. Right now, I just copied the entire list inside my controller. So, if >> I have to change anything, I have to change it at two places. >> >> db.define_table('products', >> Field('type'), >> auth.signature) >> >> db.products.type.requires = IS_IN_SET(['Type1', 'Type2', 'Type3']) >> >> An example snippet would be highly appreciated. >> >> Thanks ! >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] How to reuse the IS_IN_SET validator list in views and controllers?
Hello, I have defined a IS_IN_SET validator inside my models. Now, I want to use the same list inside controllers and views. What is the best way to re-use the same list inside controllers and views without having to duplicate the code. Right now, I just copied the entire list inside my controller. So, if I have to change anything, I have to change it at two places. db.define_table('products', Field('type'), auth.signature) db.products.type.requires = IS_IN_SET(['Type1', 'Type2', 'Type3']) An example snippet would be highly appreciated. Thanks ! -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Question regarding building dynamic queries
On Wednesday, October 4, 2017 at 9:02:07 PM UTC-4, Leonel Câmara wrote: > > This is sort of a python question. > > Lets see exactly what this means > > query &= db.orders.status == status. > > This syntax is a python (not web2py or the DAL) shorthand for: > > query = query & (db.orders.status == status) > > > So really what you want is: > > query = db.orders.id_buyer == auth.user_id > query1 = query & (db.orders.status == status) > query2 = query & (db.orders.order_date <= initial_date) > > Thanks for reply, I did try that before but it was not giving the correct results I tried the following query = db.orders.id_buyer == auth.user_id query1 = query & (db.orders.status == status) On printing query1, it will print "False", while I want something like print db(query1).count() -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Question regarding building dynamic queries
I have some basic question regarding forming dynamic queries As an example, lets say my base query is query = db.orders.id_buyer == auth.user_id Now I want to form two different queries like query &= db.orders.status == status. ===> Should form query1 and want to store it for later use AND query &= db.orders.order_date <= initial_date. ===> Should form query2 and want to store it for later use I am not able to figure out how to store it in query1 and query2 without having to write the base query again intially. Right now, I am solving it like below :- query1 = db.orders.id_buyer == auth.user_id query1 &= db.orders.status == status query2 = db.orders.id_buyer == auth.user_id query2 &= db.orders.order_date <= initial_date What I want to do ? query = db.orders.id_buyer == auth.user_id query1 &= db.orders.status == status AND USE query data, but how? query2 &= db.orders.order_date <= initial_date AND USE query data, but how? I hope the problem statement is clear. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: AttributeError: 'SQLite' object has no attribute 'file_open'
Any workaround? I am kind of stuck in populating the test database -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] AttributeError: 'SQLite' object has no attribute 'file_open'
Hello All, I am trying to update the database for my web2py app using the command line script :- Sample Code :- # Assumption : script is placed inside scripts folder in application scriptPath = os.path.dirname(os.path.realpath(__file__)) dbPath = os.path.abspath(os.path.join(scriptPath,"../databases")) libraryPath = os.path.abspath(os.path.join(scriptPath,"../../..")) sys.path.append(libraryPath) from gluon import DAL print dbPath, libraryPath db = DAL('sqlite://storage.sqlite',folder=dbPath,auto_import=True) I get the following error :- Traceback (most recent call last): File "populate_database.py", line 19, in db = DAL('sqlite://storage.sqlite',folder=dbPath,auto_import=True) File "/Users/sarbjit/Data/development/python/web2py/gluon/packages/dal/pydal/base.py", line 170, in __call__ obj = super(MetaDAL, cls).__call__(*args, **kwargs) File "/Users/sarbjit/Data/development/python/web2py/gluon/packages/dal/pydal/base.py", line 500, in __init__ tables=tables) File "/Users/sarbjit/Data/development/python/web2py/gluon/packages/dal/pydal/base.py", line 522, in import_table_definitions tfile = self._adapter.file_open(filename, 'r') AttributeError: 'SQLite' object has no attribute 'file_open' If I remove the "auto_import" statement, then the connection works fine but the following statement fails db.products.insert(**record) AttributeError: 'DAL' object has no attribute 'products' I am using latest web2py version on MAC. Thanks in advance Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to rename the Edit and View button of SQLFORM.GRID
I am able to do it using the below code : grid = SQLFORM.GRID(...) try: for x in grid.elements('span.buttontext'): if x.components[0] == Edit: x.components[0] = New Edit if x.components[0] == View: x.components[0] = New View except Exception : pass Is there any better way to do it? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] How to rename the Edit and View button of SQLFORM.GRID
Hi All, I am looking for a way to rename the buttons - EDIT/VIEW from SQLFORM.GRID. Can someone please help me on this. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Updating multiple targets using AJAX callback
Thanks Anthony !! It worked. On Sunday, April 26, 2015 at 8:33:55 PM UTC+5:30, Anthony wrote: Maybe try triggering the onchange event when dropdown2_a is changed. You could do that by changing the dropdown1 Ajax call from: ajax('{{=URL('default', 'getoptionsfordropdown2'})}}', [''], 'dropdown2') to: ajax('{{=URL('default', 'getoptionsfordropdown2'})}}', [''], ':eval') Then in the getoptionsfordropdown2 function, instead of just returning the select HTML, you can return Javascript code that changes the select HTML and then triggers the onchange event. This is not tested, by something along these lines: def getoptionsfordropdown2(): html = [code to generate the select] return 'jQuery(#dropdown2).html(%s); jQuery(#dropdown2_a).change();' % html Anthony On Sunday, April 26, 2015 at 9:24:13 AM UTC-4, Sarbjit wrote: Hi, I have used AJAX based cascading drop down menu based on slice http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2 I have introduced a third drop down whose value is populated based on the selection of second drop down. I am using the following code : (Not the exact code, but it'll be enough to explain the flow) *VIEWS:* select !-- DROPDOWN1-- onchange=jQuery('#dropdown2_a').empty(); ajax('{{=URL('default','getoptionsfordropdown2'})}}', [''], 'dropdown2'); .. /select span id='dropdown2' select id='dropdown2_a' !-- DROPDOWN2-- onchange=jQuery('#dropdown3_a').empty(); ajax('{{=URL('default','getoptionsfordropdown3'})}}', [''], 'dropdown3'); /select /span span id='dropdown3' select id='dropdown3_a' !-- DROPDOWN3-- /select /span *CONTROLLER:* getoptionsfordropdown2/getoptionsfordropdown3: def ... query the db and build SELECT return SELECT(...) *Problem:* So, at any point of time, if the option in the drop down1 is not changed, then everything works fine i.e. changes in dropdown2 updates the options in dropdown3. However, once the dropdown1 option is changed, dropdown3 contents are not RESET (No code for it, and I need some guidance for it). So, I have to change the option in dropdown2 and come-back in order to change the options in dropdown3. Basically, once an option is changed in drop down1, user has to change the option in dropdown2 once in order to update the dropdown3. Can someone please suggest me on how to handle this situation such that changing the dropdown1 should update dropdown3 as well (based on the value of dropdown2). Is it possible to call multiple forcefully trigger the onchange event for dropdown2 once it is re-populated based on the changes in dropdown1. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Updating multiple targets using AJAX callback
Hi, I have used AJAX based cascading drop down menu based on slice http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2; I have introduced a third drop down whose value is populated based on the selection of second drop down. I am using the following code : (Not the exact code, but it'll be enough to explain the flow) *VIEWS:* select !-- DROPDOWN1-- onchange=jQuery('#dropdown2_a').empty(); ajax('{{=URL('default','getoptionsfordropdown2'})}}', [''], 'dropdown2'); .. /select span id='dropdown2' select id='dropdown2_a' !-- DROPDOWN2-- onchange=jQuery('#dropdown3_a').empty(); ajax('{{=URL('default','getoptionsfordropdown3'})}}', [''], 'dropdown3'); /select /span span id='dropdown3' select id='dropdown3_a' !-- DROPDOWN3-- /select /span *CONTROLLER:* getoptionsfordropdown2/getoptionsfordropdown3: def ... query the db and build SELECT return SELECT(...) *Problem:* So, at any point of time, if the option in the drop down1 is not changed, then everything works fine i.e. changes in dropdown2 updates the options in dropdown3. However, once the dropdown1 option is changed, dropdown3 contents are not RESET (No code for it, and I need some guidance for it). So, I have to change the option in dropdown2 and come-back in order to change the options in dropdown3. Basically, once an option is changed in drop down1, user has to change the option in dropdown2 once in order to update the dropdown3. Can someone please suggest me on how to handle this situation such that changing the dropdown1 should update dropdown3 as well (based on the value of dropdown2). Is it possible to call multiple forcefully trigger the onchange event for dropdown2 once it is re-populated based on the changes in dropdown1. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] How can I modify the login form with Bootstrap
Hi, First of all, I am very sorry for asking this stupid question, but I have been learning Bootstrap and I just wanted to try it with the default scaffolding appliance. I want to modify the default login form as per bootstrap style, so I used the following in my models :- auth.settings.formstyle = 'bootstrap' Now, the login form in the web2py has different appearance compared with default theme. However, I have noticed that the button color is still grey, while it should be blue. What I want is that my login form should be identical to :- http://getbootstrap.com/2.3.2/examples/signin.html Can someone please guide me on how to achieve this? Any example would be appreciated. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Launching modal form from onupdate callback (Grid)
I tried the following such that when the user clicks on Submit button from the Grid edit form, it would open the dialog. - But it just opens the dialog and in actual doesn't updates the db or performs the other checks. grid.element(_type='submit')['_onclick']='%s;return false' %dialog1.show() Derek, for the javascript , could you please provide some pointers, I don't have much experience in js. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Launching modal form from onupdate callback (Grid)
I am using the Dialog plugin from http://dev.s-cubism.com/plugin_dialog to display modal dialog form. My requirement is that whenever the user edits the Grid record, then I should do some validation on the form contents (I'll be using onvalidate callback for my custom form validation). Once the validation is complete, I want to display the form with some pre-populated fields, if the user accepts this modal form, then I'll run one external script in addition to updation of the grid data. If the user donot submit the form, it should just update the grid record. *Example* This is the example usage shown in the plugin doc. def index(): dialog = DIALOG(LOAD(f='inner', ajax=True), title='Test', close_button='close', renderstyle=True) return dict(dialog=A('show dialog', _href='#', _onclick='%s;return false;' %dialog.show())) def inner(): return DIV('OK!') What I'm trying is :- (In onupdate callback) def myonupdate(form): print 'update!' dialog1 = DIALOG(LOAD(f='inner', ajax=True), title='Test', close_button='close', renderstyle=True) dialog1.show() *Problem :-* It doesn't opens the modal form, while in the example on clicking button, a modal form does appears. Is there any way, I can make this modal form to appear on editing the grid record or I can open a conformer dialog when the user is updating the grid such that I can run the additional external process if the answer is yes. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] How to add a check-box element in grid (update mode only) using view?
I am looking for a example on adding a checkbox field for a grid in update mode only. This checkbox will be used for some decision at the time of form submission and hence I don't want to create a new field in database (since this field is useless there). Is there any way, I can add a checkbox element using views? {{if grid.update_form:}} {{=grid.update_form.custom.begin}} {{=grid}} {{=grid.update_form.custom.end}} Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Launching modal form from onupdate callback (Grid)
I tried using the dialog element in the view, but this is also not working. Idea is that when the user submits the gird changes, the dialog will show (modal dialog). But the below code is not working, can some one please point out the problem. {{if grid.update_form:}} {{=grid.update_form.custom.begin}} {{grid.element(_type='submit')['_onclick']='%s;return false' % dialog.show()}} {{=grid}} {{=grid.update_form.custom.end}} -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Document Expired/ Need to reload page on using browser back button
Thanks a lot Anthony for the solution. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Document Expired/ Need to reload page on using browser back button
Hi Anthony, Thanks for response. It would be difficult for me to share the exact code (my company specific data and lot of extra code etc) However, I am providing code snippets of the main portions that I feel are causing this problem and work flow (i have changed the variable names):- Please let me know, if you still require the exact code, then I'll try to reproduce it in a small app that can be shared as such. *INDEX :* index function from controllers returns options to be populated in select html column. It uses ajax callbacks to dynamically populate the select field. {{extend 'layout.html'}} form enctype=multipart/form-data method=post action={{=URL('default','results')}} select name='var1' ... select name='var2' ... input type=submit value='Submit' input type=hidden name=testval value=test / /form Once the options are selected the results function is called :- def results(): if (request.vars.testval and session.var1 and session.var2) or (len(request.vars) == 0): try: del session.var1 del session.var2 except Exception : pass if (request.vars.var1) and (not session.var1): session.var1 = request.vars.var1 if request.vars.var2 and not session.var2: session.var2 = request.vars.var2 Then the session data is checked and a grid is created. Results view just displays the grid data. Now from the grid data, when I select any row and uses browser back button, I get this problem. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Document Expired/ Need to reload page on using browser back button
More Updates : I tried debugging it using Eclipse and I observed that whenever the document expires, breakpoint is not hit. (results function). Also I observed that once I use the Back button from within the grid field, it starts working from the browser also but only for current selection (from index controller). If I change the selection from index and comes back to results - Then i face the same problem again - have to use back button from grid once, then browser button works fine for other grid entries. Now any pointers on where to proceed? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Document Expired/ Need to reload page on using browser back button
Hi Anthony, I am able to reproduce this problem in a small app (tested on windows - 2.9.5). *MODEL:* db.define_table('Category', Field('Name'), Field('SubCategoryName')) # Insert test data if db(db.Category.id0).count() == 0: db.Category.insert(Name='PC',SubCategoryName='Intel') db.Category.insert(Name='PC',SubCategoryName='AMD') db.Category.insert(Name='SmartPhone',SubCategoryName='Apple') db.Category.insert(Name='SmartPhone',SubCategoryName='HTC') db.Category.insert(Name='SmartPhone',SubCategoryName='Google') *CONTROLLER:* def index(): response.flash = T(Welcome to web2py!) return dict(message=T('Hello World')) def results(): if (request.vars.testval and session.var1): try: del session.var1 except Exception : pass if (request.vars.var1) and (not session.var1): session.var1 = request.vars.var1 grid = {} if session.var1: query = (db.Category.Name==session.var1) grid = SQLFORM.grid(query=query) return dict(grid=grid) *VIEWS:* *results.html* {{extend 'layout.html'}} {{=grid}} *index.html* {{extend 'layout.html'}} form enctype=multipart/form-data method=post action={{=URL('default','results')}} select name=var1 option value=PCPC/option option value=SmartPhoneSmart Phone/option /select input type=submit value='Submit' input type=hidden name=testval value=test / /form *Steps to reproduce the problem :-* 1. Select any value from the drop down and hit submit button. 2. Select any GRID row and click on View 3. Use Browser Back button - Document will expire, you have to refresh to get the results back (Tried on Chrome/Firefox) 4. Repeat Step2 5. Now instead of using Browser back button, use GRID embedded back button. 6. Now repeating step 2-3 won't cause any problem (document won't expire) until the new selection is made from the selection drop down. Please suggest something to resolve this problem. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Document Expired/ Need to reload page on using browser back button
I have an application having the layout as :- INDEX controller generates a view which have some drop-down and calls another controller RESULTS : Snippet : form enctype=multipart/form-data method=post action={{=URL('default','results')}} Now the RESULTS controller creates a grid and populates the view corresponding to RESULT controller. PROBLEM :- When I view/edit any entry of GRID, then on using the browser back button, I get the following message :- Document Expired (Firefox) Need to conform form resubmissions (ERR_CACHE_MISS) -- Chrome In the RESULTS controller, I just query request.vars for variables and store them in session and later on clear the session once the GRID is populated. I don't see this problem if I use the BACK button provided by the GRID itself (URL contained a signature - Is it causing it to work?) Can any one please suggest on how to address this problem. This is very annoying problem. Thanks in advance Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] How do I serve static files with caching
Hi, In my application, there are few static images which needs to be visible for all pages. Currently, I am serving these files using the below code img src={{=URL(r=request,c='static/images',f='image1.jpg')}} alt= / Q1 :- Is it the right way to serve the image file? Q2 :- How could I enable caching for these static files? Please note, I am using fast_download technique for database uploaded images, but I am not sure on if this can be used and how can be used? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How do I serve static files with caching
Thanks Anthony for quick response. Are you saying if I use the URL with the mentioned syntax, then browser will cache static files automatically? Because the fast_download technique that I used (picked from web2py application development cookbook) enables browser cache for database uploaded images. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Before update and After update callbacks are giving the same results on updating table
Thanks Anthony :) -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Before update and After update callbacks are giving the same results on updating table
Hi All, I want to detect if there is a change in auth_user table for registeration_key field. I have implemented the following code :- Models : db.auth_user._before_update.append(lambda s,f: before_trigger_auth(s,f)) db.auth_user._after_update.append(lambda s,f: after_trigger_auth(s,f)) Modules : def before_trigger_auth(*args): print args print before f = args[1] rkey = f['registration_key'] current.session.before_rkey = rkey def after_trigger_auth(*args): print args print after f = args[1] rkey = f['registration_key'] if current.session.before_rkey: if current.session.before_rkey == pending and rkey == : del current.session.before_rkey ruseremail = f['email'] print Trigger an email update Now when I am editing the db.auth_user table record (using appadmin) to delete the pending word from registeration_key, I have noticed that the results from both and after callbacks were same i.e. registeration_key was empty. If I add the pending word in registration_key, then also I get the same results from both the after and before callbacks. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Any one intergrated Indian Payment Systems with web2py app?
Hi All, Has any one integrated Indian Payment System with web2py app. In India, ccavenue seems to be more popular (http://www.ccavenue.com/quick.jsp) but they doesn't appears to provide python support. But apparently, I found few Django app's integarted with ccavenue on google, has any one implemented any Indian Payment System with web2py. I am no-voice to Payment Integration. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [web2py] Any one intergrated Indian Payment Systems with web2py app?
Thanks Kiran for the reply and sharing the knowledgeable link. I found zaapakpay.com and payu.in to be promising. zaapakpay has their legal terms to accept an application which includes the application to be submitted on behalf of company and it is a must that the website should be an ecommerce store. I am building my application on own and is not affiliated with any company as such, I need the payment setup just for receiving the registration fees. I do not have any experience with integration of payment gateway with website, Will it be possible for you to share an example code of payu integration, that might be useful for others as well. Thanks in advance, Sarbjit On Tuesday, July 1, 2014 9:41:59 PM UTC+5:30, Kiran Subbaraman wrote: I integrated a web2py app with payu (payu.com). Each of these payment gateways have their own integration API. This blog is a useful read: http://gaganpreet.in/blog/2013/09/18/how-secure-are-indian-payment-gateways/ Kiran Subbaramanhttp://subbaraman.wordpress.com/about/ On Tue, 01-07-2014 8:24 PM, Sarbjit wrote: Hi All, Has any one integrated Indian Payment System with web2py app. In India, ccavenue seems to be more popular (http://www.ccavenue.com/quick.jsp) but they doesn't appears to provide python support. But apparently, I found few Django app's integarted with ccavenue on google, has any one implemented any Indian Payment System with web2py. I am no-voice to Payment Integration. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com javascript:. For more options, visit https://groups.google.com/d/optout. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: auth.registrationkey, auth.password etc not visible in grid created from db.auth_user
Thanks Anthony and Massimo, When I set the ignore_rw field, I could see these additional fields in the grid, however I am not able to set these fields to be visible in the header. @auth.requires_login() def manageusers(): grid = SQLFORM.grid(db.auth_user,ignore_rw=True,fields=(db.auth_user.first_name,db.auth_user.last_name,db.auth_user.email,db.auth_user.registration_key,)) return dict(grid=grid) Is there anything else that I need to set. @Massimo, Actually, I want that the admin of the site should be able to manage users without using the appadmin (admin panel is disabled in production). -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: auth.settings.register_next doesn't works with registration_requires_approval
Thanks Massimo Di Pierro. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] auth.settings.register_next doesn't works with registration_requires_approval
Hi, I want to send an email to the user stating that there account approval is in process. So, I set the following in db.py :- auth.settings.register_next = URL('Welcome') auth.settings.registration_requires_verification = False auth.settings.registration_requires_approval = True auth.settings.reset_password_requires_verification = True But, after registration only flash message appears and welcome function is not called in controller. Can anyone please suggest on how this can be achieved? -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] auth.registrationkey, auth.password etc not visible in grid created from db.auth_user
Hi, I want to create a grid for db.auth_user (just like appadmin) where the admin would be able to approve the user accounts. @auth.requires_login() def manageusers(): grid = SQLFORM.grid(db.auth_user) return dict(grid=grid) In the grid generated by the above code, there are no registration key, passwords field etc which are visible in appadmin db.auth_user table. How can I make this available here in grid especially registerationkey. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Customizing auth.navbar function
Hi All, I want to customize the auth.navbar function (basically I want to add new option when the user is logged-in and also want to modify the text Register). So, I followed the following approach :- - Created a new function (by using the source code from tools.py) in a separate file in modules. - Imported the new function and replaced auth.navbar CODE :- (There is no modification as of now in customnavbar) # from gluon.tools import Auth, Crud, Service, PluginManager, prettydate from apputils import customnavbar auth = Auth(db) auth.navbar = customnavbar When I load the application, I get the following error :- (In layout, I have used auth.navbar()) type 'exceptions.TypeError' customnavbar() takes at least 1 argument (0 given) Can some one please help. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] ajax based cascading drop down menus not working in internet explorer
I am using the web2py slice from http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2. I noticed that the second drop down is getting populated correctly on firefox but on internet explorer, it is not working (Tested on IE9). I verified that on IE, on changing the value, an additional select statement is seen which seems to be causing the issue :- IE Debug Snapshot (Before any change in selection) IE Debug Snapshot (After change in first drop down) Can anyone please help to resolve this on IE *Views* {{extend 'layout.html'}} form enctype=multipart/form-data action={{URL()}} method=post select name='category_name' onchange=jQuery('#maker_name').empty(); ajax('maker', ['category_name'], 'maker_name'); {{for category in categories:}} option value={{=category.id}} {{= selected='selected' if str(category.id)==request.vars.category_name else }} {{=category.Name}} /option {{pass}} /select select id='maker_name' name='maker_name' {{for maker in makers:}} option value={{=maker.id}} {{=XML( selected='selected') if str(maker.id)==request.vars.maker_name else }} {{=maker.Name}}/option {{pass}} /select input type=submit value='Submit' /form *Controller :* def index(): print request.vars grid = {} if request.vars.maker_name: query = (db.Product.Maker_ID==request.vars.maker_name) grid = SQLFORM.grid(query=query,csv=False,create=False,deletable=False,) lists = db(db.Product.Maker_ID==request.vars.maker_name).select(db.Product.ALL) themakers = db(db.Maker.id==request.vars.maker_name).select(db.Maker.ALL) else: lists = db(db.Product.Maker_ID==1).select(db.Product.ALL) themakers = db(db.Maker.id==1).select(db.Maker.ALL) categories = db().select(db.Category.ALL) if request.vars.category_name: makers = db(db.Maker.Category_ID==request.vars.category_name).select(db.Maker.ALL) else: makers = db(db.Maker.Category_ID==1).select(db.Maker.ALL) return dict(lists=lists, categories=categories, makers=makers, themakers=themakers, grid=grid) def maker(): makers = db(db.Maker.Category_ID==request.vars.category_name).select(db.Maker.ALL) result = select name='maker_name' for maker in makers: result += option value=' + str(maker.id) + ' + maker.Name + /option result += /select return XML(result) *Models :* db.define_table('Category', Field('Name')) db.define_table('Maker', Field('Name'), Field('Category_ID', db.Category), Field('Note', 'text')) db.define_table('Product', Field('Part_Number'), Field('Maker_ID', db.Maker), Field('List_Price', 'decimal(13,2)'), Field('Special_Price', 'decimal(13,2)')) db.Category.Name.requires = IS_NOT_EMPTY() db.Maker.Name.requires = IS_NOT_EMPTY() db.Maker.Category_ID.requires = IS_IN_DB(db, db.Category.id, '%(Name)s') db.Product.Part_Number.requires = IS_NOT_EMPTY() db.Product.Maker_ID.requires = IS_IN_DB(db, db.Maker.id, '%(Name)s') if db(db.Category.id0).count() == 0: db.Category.insert(Name='PC') db.Category.insert(Name='Smart Phone') db.Maker.insert(Name='Toshiba', Category_ID=1, Note='Good Maker') db.Maker.insert(Name='HP', Category_ID=1, Note='Good Maker') db.Maker.insert(Name='Dell', Category_ID=1, Note='Good Maker') db.Maker.insert(Name='Apple', Category_ID=2, Note='Good Maker') db.Maker.insert(Name='Samsung', Category_ID=2, Note='Good Maker') db.Product.insert(Part_Number='Toshiba Product A', Maker_ID=1, List_Price=1000, Special_Price=500) db.Product.insert(Part_Number='Toshiba Product B', Maker_ID=1, List_Price=1500, Special_Price=1000) db.Product.insert(Part_Number='Toshiba Product C', Maker_ID=1, List_Price=2000, Special_Price=1500) db.Product.insert(Part_Number='Toshiba Product D', Maker_ID=1, List_Price=2500, Special_Price=2000) db.Product.insert(Part_Number='Toshiba Product E', Maker_ID=1, List_Price=3000, Special_Price=2500) db.Product.insert(Part_Number='Toshiba Product F', Maker_ID=1, List_Price=3500, Special_Price=3500) db.Product.insert(Part_Number='HP Product A', Maker_ID=2, List_Price=1000, Special_Price=500) db.Product.insert(Part_Number='HP Product B', Maker_ID=2, List_Price=1500, Special_Price=1000) db.Product.insert(Part_Number='HP Product C', Maker_ID=2, List_Price=2000, Special_Price=1500) db.Product.insert(Part_Number='HP Product D', Maker_ID=2, List_Price=2500, Special_Price=2000) db.Product.insert(Part_Number='HP Product E', Maker_ID=2, List_Price=3000, Special_Price=2500) db.Product.insert(Part_Number='HP Product F', Maker_ID=2, List_Price=3500, Special_Price=3500) db.Product.insert(Part_Number='Dell Product A', Maker_ID=3, List_Price=1000, Special_Price=500) db.Product.insert(Part_Number='Dell Product B', Maker_ID=3, List_Price=1500, Special_Price=1000)
[web2py] Re: ajax based cascading drop down menus not working in internet explorer
This problem can be reproduced by using this code in a new app created using web2py. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: web2py slices: cascading drop down lists with ajax 2
Hi Omi, I do not see this recipe working on IE-9. I have used this code in a newly created app and I observed that the second drop down is not populated on changing value in first drop down. It appears that the data is returned by ajax callback but is not getting replaced somehow. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: ajax based cascading drop down menus not working in internet explorer
Solved !! I have used second select inside span and assigned id to it, it seems ajax callback was not able to replace select in IE. OLD :- select id='maker_name' name='maker_name' {{for maker in makers:}} option value={{=maker.id}} {{=XML( selected='selected') if str(maker.id)==request.vars. maker_name else }} {{=maker.Name}}/option {{pass}} /select NEW CODE :- span id='maker_name' select name='maker_name' {{for maker in makers:}} option value={{=maker.id}} {{=XML( selected='selected') if str(maker.id)==request.vars. maker_name else }} {{=maker.Name}}/option {{pass}} /select /span -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] How to control style formatting in views
I am trying to adapt a custom css/js template to web2py plugin. I see that in the user login form, submit button is not having class : btn, https://lh6.googleusercontent.com/-lr0dTa-A5UM/U6AZIPTRWfI/AJM/b-x-QYcESmQ/s1600/Capture.PNG So, in user login page, I see Login button in very small format while 'register' and 'Lost Password' are seen in proper format. I checked with firebug that the later two buttons are having class='btn', while Login button is missing it. Is there a way that I could add the class attribute for this button. I tried the following in views : (user.html) =form.element('select[value=Login]')['_style']='class:btn' =form But it gives an error, can some one please help me to add the class attribute on the form submit button -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to control style formatting in views
Solved it using : form.element(_type='submit')['_class']='btn' On Tuesday, June 17, 2014 4:06:24 PM UTC+5:30, Sarbjit wrote: I am trying to adapt a custom css/js template to web2py plugin. I see that in the user login form, submit button is not having class : btn, https://lh6.googleusercontent.com/-lr0dTa-A5UM/U6AZIPTRWfI/AJM/b-x-QYcESmQ/s1600/Capture.PNG So, in user login page, I see Login button in very small format while 'register' and 'Lost Password' are seen in proper format. I checked with firebug that the later two buttons are having class='btn', while Login button is missing it. Is there a way that I could add the class attribute for this button. I tried the following in views : (user.html) =form.element('select[value=Login]')['_style']='class:btn' =form But it gives an error, can some one please help me to add the class attribute on the form submit button -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [web2py] Re: one more web2py e-commerce app :)
Hi Adi, I visited the nammuhats.com, its a fantastic site. I just want to know whether you are using woocommerce plugin (wordpress plugin) in this site or using woocommerce template in it? Can you give some pointers on how to adapt woocommerce plugin to web2py app. Thanks Sarbjit On Thursday, October 10, 2013 4:40:32 AM UTC+5:30, Adi wrote: :) There are only few hats left in this color, so they are just on small special now, but we also send absolutely free hat to anyone who's going through chemotherapy http://nammuhats.com/page_view/6/Chemotherapy-Hats treatment. On Wed, Oct 9, 2013 at 6:26 PM, Derek sp1...@gmail.com javascript: wrote: Why is a light purple hat $2 less than a white one? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Can I include wordpress plugin in web2py (e.g. woocommerce) ?
Is it possible to include wordpress plugins in web2py? I want to use woocommerce (link http://demo2.woothemes.com/?name=superstore) theme (look and feel for web2py app). I saw that http://www.nammuhats.com/ is listed as being developed using web2py but this site seems to be using woocommerce themes etc. Is it possible to integrate the front end side of woocommerce theme in web2py? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Problem using multiple grids in single view
*Thanks Stifan and * *LaDarrius Stewart !!By using the formnames, I don't see the issues of both the grids displaying the same data. However, I am still not able to use custom grid (grid1) i.e. I want to use custom grid in view_form mode.Code (test1.load){{if grid1.view_form:}}test{{else:}}{{=grid1}}{{pass}}Rest code is same as mentioned in my second approach with a difference that each grid is having formname.* Can you please check if my test1.load code is correct? -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Problem using multiple grids in single view
Can some one please conform if it would be possible to use multiple grids in single view using web2py as LOAD doesn't seems to give the expected results. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Grid data is not displayed on using Edit/View in case there are two grids in one view
I am using two grids in my application but I have observed that when I use Edit/View button for GRID1, then the layout of the grid is not proper (Data from Grid1 is not seen) and default layout doesn't seems to be loaded. NOTE :- Since web2py doesn't supports two grids in one view, I am using LOAD for one gird and second grid is loaded directly. Reason, I want to display second grid directly is that I want to customize the edit function for the grid. Below is the sample Code *Views :* {{extend 'layout.html'}} {{if grid.view_form:}} {{=grid}} {{elif grid.update_form:}} {{=grid}} {{else:}} {{=grid}} {{=LOAD('default','loadGrid1',ajax=True)}} {{pass}} *Controller :* @auth.requires_login() def index(): grid = SQLFORM.grid(query=db.person,csv=False,create=False,deletable=False,paginate=20,sortable=True) return dict(grid=grid) def loadGrid1(): grid1 = SQLFORM.grid(query=db.dog,csv=False,create=False,deletable=False,paginate=20,sortable=True) return grid1 *Model :* db.define_table('person', Field('name'), Field('countyry')) db.define_table('dog', Field('name'), Field('ownername'))Models : Can someone please help me to resolve this issue. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Formatting GRID rows data based on the field value in database
Thanks Anthony, I have used the Images in the represent field for my application. On Sunday, June 8, 2014 7:59:52 AM UTC+5:30, Anthony wrote: Note, it would be more appropriate to use lambda status, row:, as the second value passed to the represent function is the Row object (not the Field object). You might be thinking of custom validators, which are passed the value being validated and the Field object. Anthony On Saturday, June 7, 2014 8:52:22 PM UTC-4, 黄祥 wrote: yes, you are right, my fault, my code only produce one color, thank you so much for your detail explaination, anthony. e.g. if 'product' in request.function : table.status.represent = lambda status, field: SPAN(status, _class = 'text-success' if status == 'Sold' else 'text-warning' if status == 'Hold' else 'text-error') best regards, stifan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Formatting GRID rows data based on the field value in database
Thanks Anthony, Can you please provide a small example. On Friday, June 6, 2014 6:03:29 PM UTC+5:30, Anthony wrote: You can set the represent attribute for the fields you would like to format. Anthony On Friday, June 6, 2014 1:31:06 AM UTC-4, Sarbjit wrote: Hi, I am using GRID in my application, my requirement is that I want to display the field value in different color (RED/GREEN) OR I want to display the images (Tick Mark Image/Cross Mark Image) based upon the data in the field. e.g. (Sample example) Product_ID Product_TitleProduct_SignOff 1 XZ Yes 2 AV Yes 3 AD NO I want it to be viewed in gird as : Product_ID Product_TitleProduct_SignOff 1 XZ Yes 2 AV Yes 3 AD NO OR any other additional indicator could be added such that the rows with Signoff value as NO could be easily identified (or highlighted). I was wondering, if I could use some images there (Green color Tick mark or Red color Cross mark) in the grid. Since, I am not having much experience using web2py, can someone please help me to achieve this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Formatting GRID rows data based on the field value in database
Hi, I am using GRID in my application, my requirement is that I want to display the field value in different color (RED/GREEN) OR I want to display the images (Tick Mark Image/Cross Mark Image) based upon the data in the field. e.g. (Sample example) Product_ID Product_TitleProduct_SignOff 1 XZ Yes 2 AV Yes 3 AD NO I want it to be viewed in gird as : Product_ID Product_TitleProduct_SignOff 1 XZ Yes 2 AV Yes 3 AD NO OR any other additional indicator could be added such that the rows with Signoff value as NO could be easily identified (or highlighted). I was wondering, if I could use some images there (Green color Tick mark or Red color Cross mark) in the grid. Since, I am not having much experience using web2py, can someone please help me to achieve this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to improve performance for db queries
Hi Anthony, Problem of drop down's not working can be seen with the code/data posted in the original slice can be seen with the following changes. *Controller :* def index(): grid = {} if request.vars.maker_name: query = (db.Product.Maker_ID==request.vars.maker_name) grid = SQLFORM.grid(query=query,csv=False,create=False,deletable=False,) lists = db(db.Product.Maker_ID==request.vars.maker_name).select(db.Product.ALL) themakers = db(db.Maker.id==request.vars.maker_name).select(db.Maker.ALL) else: lists = db(db.Product.Maker_ID==1).select(db.Product.ALL) themakers = db(db.Maker.id==1).select(db.Maker.ALL) categories = db().select(db.Category.ALL) if request.vars.category_name: makers = db(db.Maker.Category_ID==request.vars.category_name).select(db.Maker.ALL) else: makers = db(db.Maker.Category_ID==1).select(db.Maker.ALL) return dict(lists=lists, categories=categories, makers=makers, themakers=themakers, grid=grid) *Views:* {{extend 'layout.html'}} form enctype=multipart/form-data action={{URL()}} method=post select name='category_name' onchange=jQuery('#maker_name').empty(); ajax('maker', ['category_name'], 'maker_name'); {{for category in categories:}} option value={{=category.id}} {{= selected='selected' if str(category.id)==request.vars.category_name else }} {{=category.Name}} /option {{pass}} /select select id='maker_name' name='maker_name' {{for maker in makers:}} option value={{=maker.id}} {{=XML( selected='selected') if str(maker.id)==request.vars.maker_name else }} {{=maker.Name}}/option {{pass}} /select input type=submit value='Submit' /form {{=grid}} Now when the results are displayed in the grid, on selecting the view option (you may have to click on submit again to view the results). After view grid record option is used, changes made in drop down's are not reflected upon submit i.e if the product name is changed from the drop down, new grid results are not seen. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to improve performance for db queries
HI Anthony, Changes suggested by you in the controller to reduce the complexity of the function actually worked, now the drop down options are changed instantly. However, I am observing one strange problem now. Somehow the getResults() function is not called when the drop down options are changed from within the GRID view/edit pages. So, basically in my form, I am displaying the results as GRID. Once, I get the results from grid based on the options selected in drop-downs, If I open any record from grid using VIEW/EDIT option from GRID, second drop down is never populated. Infact I noticed that this function is not called if I am inside the view/edit option. Do you have any idea on what could be the problem. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to improve performance for db queries
Hi Anthony, Code is almost identical to the code posted in slice with change in field names and number of records. Only additonal difference is that I am using orderby in the query before returing the results. Surprisingly, sometime the result appears fast (within 2-3 seconds) but some time it takes long time to populate it. -Sarbjit On Thursday, May 22, 2014 4:46:55 PM UTC+5:30, Anthony wrote: Would help to see some code. 4-5 seconds sounds much too long. You might also look into http://dev.s-cubism.com/plugin_lazy_options_widget. Anthony On Thursday, May 22, 2014 12:17:42 AM UTC-4, Sarbjit wrote: Hi, I am using cascading drop-down based on the slice posted on http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2;. In my application, the number of sub-records for drop-down are typically in range of 50-60, so every-time I change the first option in drop down, it takes significant time (around 4-5 seconds) to populate my second drop down. I was wondering if there is a way to make this fast by means of caching or by storing the data for all the records the first time when user logs into the system and then using that data. Can some one please comment on how to address this problem and if possible, an example would be helpful. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to improve performance for db queries
Hi Anthony, Code is almost identical to the code posted in slice with change in field names and number of records. Only additonal difference is that I am using orderby in the query before returing the results. Surprisingly, sometime the result appears fast (within 2-3 seconds) but some time it takes long time to populate it. -Sarbjit On Thursday, May 22, 2014 4:46:55 PM UTC+5:30, Anthony wrote: Would help to see some code. 4-5 seconds sounds much too long. You might also look into http://dev.s-cubism.com/plugin_lazy_options_widget. Anthony On Thursday, May 22, 2014 12:17:42 AM UTC-4, Sarbjit wrote: Hi, I am using cascading drop-down based on the slice posted on http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2;. In my application, the number of sub-records for drop-down are typically in range of 50-60, so every-time I change the first option in drop down, it takes significant time (around 4-5 seconds) to populate my second drop down. I was wondering if there is a way to make this fast by means of caching or by storing the data for all the records the first time when user logs into the system and then using that data. Can some one please comment on how to address this problem and if possible, an example would be helpful. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to improve performance for db queries
Below is the snippets from code (I have changed few field names as I can't share the exact field names) -- Data base db.define_table('Table1', Field('Release'), format='%(Release)s') db.define_table('Table2', Field('Release',db.Table1), Field('Year'), format='%(Year)s') db.define_table('Table3', Field('Manfucturer',writable=False), Field('MID'), Field('Year',db.Table2,writable=False), Field('Engineer'), Field('Location',writable=False), Field('Title',writable=False), Field('Description','text'), Field('City',writable=False)) db.Table2.Release.requires = IS_IN_DB(db,db.Table1.id,'%(Release)s') db.Table3.MID.requires = IS_IN_DB(db,db.Table2.id,'%(MID)s') -- This function is called by AJAX on change of first option in drop down def getResults(): tab2results = db(db.Table2.Release==request.vars.release_name).select(orderby=~db.Table2.id) result = select name='table2_name' for tab2 in tab2results: print tab2 result += option value=' + str(tab2.id) + ' + tab2.Year + /option result += /select return XML(result) No, I don't have an index for the table. On Thursday, May 22, 2014 6:50:02 PM UTC+5:30, Anthony wrote: Would still help to see your specific model code. Is the field in question a reference field with a represent attribute? If so, you'll get separate queries for each item in order to lookup the represent value. How many records in the table? Do you have an index on the field being searched? If you execute the same query in a separate DB client, how long does it take? Anthony On Thursday, May 22, 2014 8:37:55 AM UTC-4, Sarbjit wrote: Hi Anthony, Code is almost identical to the code posted in slice with change in field names and number of records. Only additonal difference is that I am using orderby in the query before returing the results. Surprisingly, sometime the result appears fast (within 2-3 seconds) but some time it takes long time to populate it. -Sarbjit On Thursday, May 22, 2014 4:46:55 PM UTC+5:30, Anthony wrote: Would help to see some code. 4-5 seconds sounds much too long. You might also look into http://dev.s-cubism.com/plugin_lazy_options_widget. Anthony On Thursday, May 22, 2014 12:17:42 AM UTC-4, Sarbjit wrote: Hi, I am using cascading drop-down based on the slice posted on http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2;. In my application, the number of sub-records for drop-down are typically in range of 50-60, so every-time I change the first option in drop down, it takes significant time (around 4-5 seconds) to populate my second drop down. I was wondering if there is a way to make this fast by means of caching or by storing the data for all the records the first time when user logs into the system and then using that data. Can some one please comment on how to address this problem and if possible, an example would be helpful. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to improve performance for db queries
Thanks Anthony, I will try and will update. I am new to web2py (web apps in general). Could you please provide me an example on how to create index on table and once created, what changes i have to do in controller, do i need to change the getResults function? -Sarbjit On Thursday, May 22, 2014 7:39:48 PM UTC+5:30, Anthony wrote: First, you can simplify your function as follows: def getResults(): tab2results = db(db.Table2.Release == request.vars.release_name). select( db.Table2.id, db.Table2.Year, orderby=~db.Table2.id) return SELECT([OPTION(r.Year, _value=r.id) for r in tab2results], _name='table2_name') I assume request.vars.release_name is actually the db.Table1 id field value, not a string name, correct (otherwise, the query won't work)? In the above, insert return BEAUTIFY(db._timings) before the final return, and call the function directly in a browser tab, with release_name=[some id] in the query string. See how long the above query is taking in that case. If the query itself is taking several seconds, try creating an index on the Release field. Anthony On Thursday, May 22, 2014 9:38:56 AM UTC-4, Sarbjit wrote: Below is the snippets from code (I have changed few field names as I can't share the exact field names) -- Data base db.define_table('Table1', Field('Release'), format='%(Release)s') db.define_table('Table2', Field('Release',db.Table1), Field('Year'), format='%(Year)s') db.define_table('Table3', Field('Manfucturer',writable=False), Field('MID'), Field('Year',db.Table2,writable=False), Field('Engineer'), Field('Location',writable=False), Field('Title',writable=False), Field('Description','text'), Field('City',writable=False)) db.Table2.Release.requires = IS_IN_DB(db,db.Table1.id,'%(Release)s') db.Table3.Year.requires = IS_IN_DB(db,db.Table2.id,'%(Year)s') -- This function is called by AJAX on change of first option in drop down def getResults(): tab2results = db(db.Table2.Release==request.vars.release_name).select(orderby=~ db.Table2.id) result = select name='table2_name' for tab2 in tab2results: print tab2 result += option value=' + str(tab2.id) + ' + tab2.Year + /option result += /select return XML(result) No, I don't have an index for the table. On Thursday, May 22, 2014 6:50:02 PM UTC+5:30, Anthony wrote: Would still help to see your specific model code. Is the field in question a reference field with a represent attribute? If so, you'll get separate queries for each item in order to lookup the represent value. How many records in the table? Do you have an index on the field being searched? If you execute the same query in a separate DB client, how long does it take? Anthony On Thursday, May 22, 2014 8:37:55 AM UTC-4, Sarbjit wrote: Hi Anthony, Code is almost identical to the code posted in slice with change in field names and number of records. Only additonal difference is that I am using orderby in the query before returing the results. Surprisingly, sometime the result appears fast (within 2-3 seconds) but some time it takes long time to populate it. -Sarbjit On Thursday, May 22, 2014 4:46:55 PM UTC+5:30, Anthony wrote: Would help to see some code. 4-5 seconds sounds much too long. You might also look into http://dev.s-cubism.com/plugin_lazy_options_widget. Anthony On Thursday, May 22, 2014 12:17:42 AM UTC-4, Sarbjit wrote: Hi, I am using cascading drop-down based on the slice posted on http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2;. In my application, the number of sub-records for drop-down are typically in range of 50-60, so every-time I change the first option in drop down, it takes significant time (around 4-5 seconds) to populate my second drop down. I was wondering if there is a way to make this fast by means of caching or by storing the data for all the records the first time when user logs into the system and then using that data. Can some one please comment on how to address this problem and if possible, an example would be helpful. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [web2py] Re: How to improve performance for db queries
Yes, In-fact the data is expected to change once in week. Regarding Index on table, I know DAL doesn't provides a direct way of doing it, my question is once i have created an index on my table, do i need to modify anything in my controller? -Sarbjit On Thursday, May 22, 2014 7:54:54 PM UTC+5:30, Kiran Subbaraman wrote: In addition to this, and assuming that the data doesn't change frequently (days vs minutes), maybe a select-cache, with TTL of 24 hours would help? http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Caching-selects Kiran Subbaramanhttp://subbaraman.wordpress.com/about/ On Thu, 22-05-2014 7:39 PM, Anthony wrote: First, you can simplify your function as follows: def getResults(): tab2results = db(db.Table2.Release == request.vars.release_name). select( db.Table2.id, db.Table2.Year, orderby=~db.Table2.id) return SELECT([OPTION(r.Year, _value=r.id) for r in tab2results], _name='table2_name') I assume request.vars.release_name is actually the db.Table1 id field value, not a string name, correct (otherwise, the query won't work)? In the above, insert return BEAUTIFY(db._timings) before the final return, and call the function directly in a browser tab, with release_name=[some id] in the query string. See how long the above query is taking in that case. If the query itself is taking several seconds, try creating an index on the Release field. Anthony On Thursday, May 22, 2014 9:38:56 AM UTC-4, Sarbjit wrote: Below is the snippets from code (I have changed few field names as I can't share the exact field names) -- Data base db.define_table('Table1', Field('Release'), format='%(Release)s') db.define_table('Table2', Field('Release',db.Table1), Field('Year'), format='%(Year)s') db.define_table('Table3', Field('Manfucturer',writable=False), Field('MID'), Field('Year',db.Table2,writable=False), Field('Engineer'), Field('Location',writable=False), Field('Title',writable=False), Field('Description','text'), Field('City',writable=False)) db.Table2.Release.requires = IS_IN_DB(db,db.Table1.id,'%(Release)s') db.Table3.Year.requires = IS_IN_DB(db,db.Table2.id,'%(Year)s') -- This function is called by AJAX on change of first option in drop down def getResults(): tab2results = db(db.Table2.Release==request.vars.release_name).select(orderby=~ db.Table2.id) result = select name='table2_name' for tab2 in tab2results: print tab2 result += option value=' + str(tab2.id) + ' + tab2.Year + /option result += /select return XML(result) No, I don't have an index for the table. On Thursday, May 22, 2014 6:50:02 PM UTC+5:30, Anthony wrote: Would still help to see your specific model code. Is the field in question a reference field with a represent attribute? If so, you'll get separate queries for each item in order to lookup the represent value. How many records in the table? Do you have an index on the field being searched? If you execute the same query in a separate DB client, how long does it take? Anthony On Thursday, May 22, 2014 8:37:55 AM UTC-4, Sarbjit wrote: Hi Anthony, Code is almost identical to the code posted in slice with change in field names and number of records. Only additonal difference is that I am using orderby in the query before returing the results. Surprisingly, sometime the result appears fast (within 2-3 seconds) but some time it takes long time to populate it. -Sarbjit On Thursday, May 22, 2014 4:46:55 PM UTC+5:30, Anthony wrote: Would help to see some code. 4-5 seconds sounds much too long. You might also look into http://dev.s-cubism.com/plugin_lazy_options_widget. Anthony On Thursday, May 22, 2014 12:17:42 AM UTC-4, Sarbjit wrote: Hi, I am using cascading drop-down based on the slice posted on http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2;. In my application, the number of sub-records for drop-down are typically in range of 50-60, so every-time I change the first option in drop down, it takes significant time (around 4-5 seconds) to populate my second drop down. I was wondering if there is a way to make this fast by means of caching or by storing the data for all the records the first time when user logs into the system and then using that data. Can some one please comment on how to address this problem and if possible, an example would be helpful. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book
[web2py] How to improve performance for db queries
Hi, I am using cascading drop-down based on the slice posted on http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2;. In my application, the number of sub-records for drop-down are typically in range of 50-60, so every-time I change the first option in drop down, it takes significant time (around 4-5 seconds) to populate my second drop down. I was wondering if there is a way to make this fast by means of caching or by storing the data for all the records the first time when user logs into the system and then using that data. Can some one please comment on how to address this problem and if possible, an example would be helpful. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Unable to pass arguments to a LOAD for a modal dialog
Hi, I am using the plugin for modal dialog from http://dev.s-cubism.com/plugin_dialog;. I am somehow not able to pass arguments to modal dialog box. *Controller :-* def index(): dialog1 = DIALOG(LOAD(f='inner',ajax=True), title='Test',vars={'a':'testvar'},close_button='Close', renderstyle=True) dialog = A('Click me !!', _href='#', _onclick='%s;return false' % dialog1.show()) grid = {} query = (db.Product.product_name==request.vars.product_id) grid = SQLFORM.grid(query=query) return dict(grid=grid,dialog=dialog) def inner(): x = request.vars.a return DIV(x) *Views:* {{if grid.view_form:}} {{=grid.view_form.custom.begin}} {{=grid}} {{=dialog}} {{=grid.view_form.custom.submit}} {{=grid.view_form.custom.end}} {{else:}} {{=grid}} {{pass}} *Requirement :-* I want to display specific data for particular row of grid (when opened in view mode) in the modal form. I found the plugin to show the modal dialog box. It works for static data but I am not able to pass any variable to the inner function (tried passing dummy variable). My end goal is to pass the db.Product.Product_type for that particular row to the modal dialog. Can someone please help me on how to achieve this. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Error on moving to next page using grid
I am facing problem using GRID, the results which are displayed in the gird are correct as per query but if the number of records are more, then results are displayed across multiple pages in the grid. Problem is that when, I select second (any other page) to view more results from grid, i get the error that local variable grid is referenced before assignment. Can some one please help me on how to resolve this. (I actually have to build grid on another page) *Controller :* def results(): query = (db.Products.product_version==request.vars.product_name)) if request.vars.product_name and request.vars.makers_name: grid = SQLFORM.grid(query=query,csv=False,create=False,deletable=False,) return dict(grid=grid) *Views:* (results.html) {{extend 'layout.html'}} {{=grid}} *Form:* {{extend 'layout.html'}} form enctype=multipart/form-data action=default/results method=post select name='product_name' ... /select select name='makers_name' ... /select input type=submit value='Submit' /form -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Can I use/access Java Database (Derby) using web2py?
Hello All, Is it possible to access/use Java database (derby) with web2py application. So, the context is that I am having a Java application which uses Java DB as a database, I want to integrate the web2py application with the java db such that the user's can either use web2py application (accessed online) or use Java Application (standalone exe) together and both can access the same db. Can some one please provide me some pointers on how to address this problem - Direct access available or a way to migrate javadb to web2py based db (exclusive for web2py app) ? -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Suggestions required for Sorting GRID
As per suggestions from this post.https://groups.google.com/forum/#!searchin/web2py/passing$20query$20controller/web2py/meeqqMTozrQ/o_kIUeKDkZ4JI have solved the problem to view the grid results in a different controller by storing the grid results in a session and in the second controller, I am retrieving the results from session and displaying them. *PROBLEM :-* With this implantation, I am having problem using sort method on grid results header. On using sort, I get the following URL : /test/default/search?keywords=order=testdb.testname_signature=. So my controller, starts showing all the records and search query results are lost. Is there a way I can sort the grid results stored in the session. So, I am planning to parse the URL and based on the order specified in the URL, I can sort the results. Other solution could be to use orderby while retrieving the results from GRID. But I feel that if I recompute the results from GRID, my selection in the dynamic form (used to build query) would be lost and it will again end up showing all the results. Please let me know what is the efficient way to handle this? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] How can I view the uploaded file name in grid instead of file?
With the below models and controllers, In the view corresponding to Mytable2, I am getting the uploaded file name as file. How can I show the actual file name that was being uploaded instead of file *Model:* db.define_table('Mytable1', Field('Mytable1_field1'), Field('Mytable1_field2','text') ) db.define_table('Mytable2', Field('Mytable2_files', 'upload'), Field('Mytable2_ref' , 'reference Mytable1')) db.Mytable2.Mytable2_ref.requires = IS_IN_DB(db, db.Mytable1.id, '%(Mytable1_field1)s') *Controller:* def viewdata(): grid = SQLFORM.smartgrid(db.Mytable1,csv=False,linked_tables=['Mytable2'],) return dict(grid=grid) -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [web2py] How can I view the uploaded file name in grid instead of file?
Its not so clear from Niphold answer's on how this can be achieved. On Tuesday, November 19, 2013 9:52:56 PM UTC+5:30, Richard wrote: See Niphold answer here : https://groups.google.com/d/msg/web2py/-ErAU2GkTUQ/ddAV4WEYNyQJ On Tue, Nov 19, 2013 at 5:50 AM, Sarbjit sarbj...@gmail.com javascript: wrote: With the below models and controllers, In the view corresponding to Mytable2, I am getting the uploaded file name as file. How can I show the actual file name that was being uploaded instead of file *Model:* db.define_table('Mytable1', Field('Mytable1_field1'), Field('Mytable1_field2','text') ) db.define_table('Mytable2', Field('Mytable2_files', 'upload'), Field('Mytable2_ref' , 'reference Mytable1')) db.Mytable2.Mytable2_ref.requires = IS_IN_DB(db, db.Mytable1.id, '%(Mytable1_field1)s') *Controller:* def viewdata(): grid = SQLFORM.smartgrid(db.Mytable1,csv=False,linked_tables=['Mytable2'],) return dict(grid=grid) -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Storing and retrieving lists in web2py database for Google Charts
I am using the slice from http://www.web2pyslices.com/slice/show/1721/google-charts-plugin. To store the data to be used for plotting in google charts, I am using the following : To Create :- (Example) data = [['Year','Sales','Expenses'],[2004,1000,400],[2005,1100,440]] How I am doing :- list1 = [] # For Row2 (how to store and retrieve from db) list1.append(2004) list1.append(1000) list1.append(400) import json list1b = json.dumps(list1) db.sampletable.insert(list1a=list1b) db.commit() x = db(db.sampletable.id==1).select()[0].list1a json.load(x) AttributeError: 'str' object has no attribute 'read' Similarly, If I don't use the json.dumps method first, I get the same error. I want to know how can I store the sublists in db and then can retrieve them to make them as data list (pointed in the beginning). -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: Storing and retrieving lists in web2py database for Google Charts
Solved it using Pickle. -Sarbjit On Saturday, November 16, 2013 2:24:24 PM UTC+5:30, Sarbjit wrote: I am using the slice from http://www.web2pyslices.com/slice/show/1721/google-charts-plugin. To store the data to be used for plotting in google charts, I am using the following : To Create :- (Example) data = [['Year','Sales','Expenses'],[2004,1000,400],[2005,1100,440]] How I am doing :- list1 = [] # For Row2 (how to store and retrieve from db) list1.append(2004) list1.append(1000) list1.append(400) import json list1b = json.dumps(list1) db.sampletable.insert(list1a=list1b) db.commit() x = db(db.sampletable.id==1).select()[0].list1a json.load(x) AttributeError: 'str' object has no attribute 'read' Similarly, If I don't use the json.dumps method first, I get the same error. I want to know how can I store the sublists in db and then can retrieve them to make them as data list (pointed in the beginning). -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Value is not updated in db on submitting form from grid
My requirement was to show drop down list for a field generated using GRID by using the values defined in another table. Below is the code used: *Models:* # coding: utf8 db = DAL('sqlite://storage.sqlite') from gluon.tools import Crud, Auth auth=Auth(globals(),db) auth.define_tables(username=False) db._common_fields.append(auth.signature) ## adds signature fields to all tables db.define_table('ItemRecords', Field('ItemName')) db.define_table('ItemOwners', Field('ItemName')) *Controllers:* def testpage(): table_name = 'ItemRecords' field_name = 'ItemName' rows1 = db(db.ItemRecords.ItemName!=None).select() opts_dropdown = [] for row1 in rows1: opts_dropdown.append(row1.ItemName) opts_dropdown = list(set(opts_dropdown)) # Make it unique element_id = 'ItemOwners_ItemName' custom_select = SELECT(opts_dropdown, _id=element_id) grid = SQLFORM.smartgrid(db.ItemOwners,csv=False,user_signature=False) grid.element('input',_id=element_id, replace=custom_select) return dict(grid=grid) def testpage1(): grid = SQLFORM.grid(db.ItemRecords,csv=False,user_signature=False) return dict(grid=grid) *Views :* {{=grid}} # For both testpage and testpage1 Now Insert few records to Itemrecords table using testpage1. Try to insert new record in ItemOwners table using testpage view, you'll see the drop down with the values from ItemRecords table. Add a record and reload testpage view, you;ll see that the ItemName record will be seen empty in grid. If I don't use replace in testpage view (To show drop down), then it works fine. Can some one please help me to resolve this issue, by using replace, I am getting drop down values, then why are those not getting saved. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: add new button in GRID with same look and feel
Hi Mirko, I am not able to figure out a way so far :( But I feel the best way is to create a new header and add existing buttons (Add/Delete/View) in them along with other buttons. But I still need to figure out how this can be done i.e. passing the correct arguments (signature) etc. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: add new button in GRID with same look and feel
Thanks !! On Friday, November 15, 2013 2:20:44 PM UTC+5:30, Mirko wrote: Just figured out how to do that : links=[ {'header':'...','body':lambda row: ...}, lambda row: TAG.button(T('Accept'),_type=button,_onclick= 'alert(%s)'%row.id) ] the second item of links list goes with the delete/view/edit buttons... Hope it helps, Mirko On Friday, November 15, 2013 9:37:20 AM UTC+1, Sarbjit wrote: Hi Mirko, I am not able to figure out a way so far :( But I feel the best way is to create a new header and add existing buttons (Add/Delete/View) in them along with other buttons. But I still need to figure out how this can be done i.e. passing the correct arguments (signature) etc. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: Value is not updated in db on submitting form from grid
Thanks Anthony for feedback. I am facing problem with this approach, since my ItemRecords could have multiple records with same name (In my actual application, there are different fields and it is logical to have same name in multiple records with different other values). Can I make them unique, that's what I was trying to do with my code. Thanks Sarbjit On Friday, November 15, 2013 7:04:38 PM UTC+5:30, Anthony wrote: Instead, why don't you try: db.define_table('ItemOwners', Field('ItemName', requires=IS_IN_DB(db, 'ItemRecords.ItemName'))) Anthony On Friday, November 15, 2013 3:35:17 AM UTC-5, Sarbjit wrote: My requirement was to show drop down list for a field generated using GRID by using the values defined in another table. Below is the code used: *Models:* # coding: utf8 db = DAL('sqlite://storage.sqlite') from gluon.tools import Crud, Auth auth=Auth(globals(),db) auth.define_tables(username=False) db._common_fields.append(auth.signature) ## adds signature fields to all tables db.define_table('ItemRecords', Field('ItemName')) db.define_table('ItemOwners', Field('ItemName')) *Controllers:* def testpage(): table_name = 'ItemRecords' field_name = 'ItemName' rows1 = db(db.ItemRecords.ItemName!=None).select() opts_dropdown = [] for row1 in rows1: opts_dropdown.append(row1.ItemName) opts_dropdown = list(set(opts_dropdown)) # Make it unique element_id = 'ItemOwners_ItemName' custom_select = SELECT(opts_dropdown, _id=element_id) grid = SQLFORM.smartgrid(db.ItemOwners,csv=False,user_signature=False) grid.element('input',_id=element_id, replace=custom_select) return dict(grid=grid) def testpage1(): grid = SQLFORM.grid(db.ItemRecords,csv=False,user_signature=False) return dict(grid=grid) *Views :* {{=grid}} # For both testpage and testpage1 Now Insert few records to Itemrecords table using testpage1. Try to insert new record in ItemOwners table using testpage view, you'll see the drop down with the values from ItemRecords table. Add a record and reload testpage view, you;ll see that the ItemName record will be seen empty in grid. If I don't use replace in testpage view (To show drop down), then it works fine. Can some one please help me to resolve this issue, by using replace, I am getting drop down values, then why are those not getting saved. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] How to view the referenced table field name and not their id
Below example can show the behavior, please do not mind over the table logic/names (this is just to show the behavior) *Model:* db.define_table('person', Field('name'), Field('country')) db.define_table('dog', Field('name'), Field('ownername', 'reference person')) db.dog.ownername.requires = IS_IN_DB(db,db.person.id, '%(name)s') *Controller:* def testpage(): grid = SQLFORM.smartgrid(db.dog,csv=False,linked_tables=['person'],) return dict(grid=grid) *View:* {{=grid}} *Problem1 :- Referenced field id is seen in grid, I want to have the referenced field 'name' value* Please insert few records using appadmin/grid and view the records, it will show the NAME field (DOG table) having the value as ID for the PERSON table. How can I view the name of the person name here and not the ID from PERSON table. *Problem2: In my case, Person field can have duplicate names, i.e. multiple records with the same name can be present. But I want that in DOG table, unique name to be seen in drop down list (seen in edit/add record).* Please advise on how this can be accomplished. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: How to view the referenced table field name and not their id
Thanks stifan for reply, As stated earlier, this is an sample example. For the second problem, in my actual problem I am having different records present for same owner (Consider same NAME for person field). Now when I say, my PERSON table can have multiple records with the same name, it means the person is same but have records associated with him. Since in my Person table, my person NAME field is referring to same person, it doesn't makes sense to show all the records from PERSON NAME field in DOG table as they are anyway referencing to same person. So I just want to show Person name once in case it finds duplicate records in PERSON. (Duplicate NAME but will have different other records) -Sarbjit On Friday, November 15, 2013 11:17:53 AM UTC+5:30, 黄祥 wrote: *Problem1 :- Referenced field id is seen in grid, I want to have the referenced field 'name' value* Please insert few records using appadmin/grid and view the records, it will show the NAME field (DOG table) having the value as ID for the PERSON table. How can I view the name of the person name here and not the ID from PERSON table. please do with record representation. e.g. db.define_table('person', Field('name'), Field('country'), *format = '%(name)s'* ) ref: http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Record-representation *Problem2: In my case, Person field can have duplicate names, i.e. multiple records with the same name can be present. But I want that in DOG table, unique name to be seen in drop down list (seen in edit/add record).* hm, not sure in here, i think, it can be boomerang to you. because you want person field name can have duplicate name, but you want to eliminate it (make it unique) in dog table owner field. e.g. person : id : 1 name : kiba country : sunagakure id : 2 name : kiba country : konohagakure now, when i select the owner field in dog table, which kiba i refer to? it will make the user confuse. you want to distinct it, then which kiba will be eliminate then? if you want duplicate name, i think you can add a field for describe it. e.g. last_name, nick_name, etc. then if the name field can have duplicate, that fine, but not the combination name and the other field (last_name, nick_name, etc). or for your current condition i think you can have the combination for name and country field as record representation. e.g. db.define_table('person', Field('name'), Field('country'), *format = '%(name)s **%(country)s**'* ) best regards, stifan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: Google charts plugin added
Thanks Tim, I have a question: In your example, data is present in controller itself, how can I store the data effectively in database and then use that data for plotting graphs? Can you please provide an example of how this can be stored/retrieved from db? I searched the net and found people suggesting pickle/json for storing/retrieving from db, but I'm not having any experience with both. Can you please help. def plugin_return_data(): data = [['Year','Sales','Expenses'],[2004,1000,400],[2005,1100,440],[2006,1200,600], [2007,1500,800],[2008,1600,850],[2009,1800,900]] return dict(data=data) -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: add new button in GRID with same look and feel
-- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: Downloading files from the disk using the path specfied in the db
Actually I wanted to provide a download option for a file which was not uploaded using web2py, rather a database field was populated with the path of the file. I was not aware of response.stream, it solved my purpose. Thanks -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: add new button in GRID with same look and feel
I was wondering if I could add the grid default buttons ('View','Edit','Delete') inside the links and turn off the default buttons visibility. This way the new button and other buttons would be of same style. Only problem is that the default buttons used to pass signature and other arguments, but I am not sure what arguments needs to be passed. Please comment if this is the right approach or I could just append the new button to the existing buttons (row), also please let me know if this is feasible or not. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Import csv outside the web2py causes multiple entries in db corresponding to each column.
I am using import csv option to insert records in the database. When I use the csv file from the web application, then a single record is inserted in the database with all the records being updated properly as per the headers. But If I try to use import_from_csv_file outside the web2py, it inserts multiple records in the database. This seems to be an bug to me. Code for updating db outside web2py libraryPath = r'D:\web2py' dbPath = r'D:\web2py\applications\testapp\databases' import sys sys.path.append(libraryPath) from gluon import DAL db = DAL('sqlite://storage.sqlite',folder=dbPath,auto_import=True) table = db['person'] file = r'D:\file.csv' table.import_from_csv_file(file) db.commit() On using the same file (csv file) using the web2py, it works as expected, code :- file = request.vars.csvfile.file table.import_from_csv_file(file) Can some one please comment on this behavior, what am I missing here? -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Downloading files from the disk using the path specfied in the db
I have a model which is having a field having the path of the file (could be of big size) and is present outside the web2py folder. In the web2py book, examples given for downloading files are specific to files uploaded or in the static folder. Can some one please provide me an example of how to serve this? example of download controller : def download(): dbid = request.args(0,cast=int) designPath = str(db(db.person.id==dbid).select()[0].DataPath) print DataPath -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] add new button in GRID with same look and feel
I have added a new button in grid using links as below :- links = [dict(header='', body=lambda row: A('CustomButton',_class=w2p_trap button btn, _href=URL('customhandler',args=[row.id])))] Is it possible that I can have the placement of this button under the same header where the default grid buttons are placed and this should have the same look and feel. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] SQLFORM factory field width is less than the text on IE8, works fine on FF
Hi, You can use the car appliance available in web2py appliances (github) to show this issue (https://github.com/mdipierro/web2py-appliances/tree/master/CarSales). *In Controller, add a function as :-* def testform(): form = SQLFORM.factory( Field('TestField', requires=IS_IN_SET(['Test Subfield1 to be selected','Test Subfield1 to be selected'],zero=T('Select Subfield'),error_message='Select Subfield'))) if form.process().accepted: response.flash = 'Thanks for the feedback' elif form.errors: response.flash = 'Error submitting feedback' return dict(form=form) * Views (testform.html)* {{extend 'layout.html'}} {{=form}} *Results:* Firefox : Internet Explorer : Can some one please explain, why is this behavior and how can this be fixed. I tried adding the below statement to controller, but it didn't fixed the problem. Also, I have tried playing with the css without any success :( form.element('select[name=TestField]')['_style']='width400px' -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: SQLFORM factory field width is less than the text on IE8, works fine on FF
Internet Explorer (8.0) https://lh3.googleusercontent.com/-2xueDRUJGj4/UnEdyNlBgBI/AHI/z6U6gHVZDM8/s1600/ie.PNG Firefox https://lh5.googleusercontent.com/-4lS5kbjD6wg/UnEeHghReQI/AHQ/ug-GwYzbm8E/s1600/ff.PNG -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: SQLFORM factory field width is less than the text on IE8, works fine on FF
Sorry, I didn;t noticed that the pictures were not visible, I have uploaded them again. I have tried cleaning the cache of IE and reloaded the page, but I am getting the same results. Do I need to try something else? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: SQLFORM factory field width is less than the text on IE8, works fine on FF
Thanks for reply. Well, this issue that I am observing is not specific to my system only, I tried it on two other systems in IE8 and all of them were having the same issue. Anyways, I was able to get the exact width in IE, if I added a width of 400px to TD element containing the SELECT. So, I modified the web2py.css and added width for TD.w2p_fw and it resolved the issue. One question is : What If I had to modify the style using my controller i.e I want to modify the style for the element using controller only and not modifying the css file. What should be the code for the same. -Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: drop down for grid or smart grid search fields
On Wednesday, October 23, 2013 9:01:23 AM UTC+5:30, Sarbjit wrote: Can someone please help. On Tuesday, October 22, 2013 4:39:00 PM UTC+5:30, Sarbjit wrote: I am using GRID for displaying my database results. I want to use search feature provided by GRID/SMARTGRID where users can build queries and get the results. I want to have a drop down field populated with the values defined in the database for the fields which are defined as strings in database. In my case, some fields needs to have exact match and are used very frequent for searching the records. Since it is very difficult to fill in the exact name every time you are searching the records using that field, I want that for few fields, it should present a drop down. Can some one please suggest me on how on to do this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: drop down for grid or smart grid search fields
I was looking at the code in gucon.sqlform elif (field.type.startswith('reference ') or field.type.startswith('list:reference ')) and \ hasattr(field.requires,'options'): value_input = SELECT( *[OPTION(v, _value=k) for k,v in field.requires.options()], **dict(_id=_id)) elif field.type == 'integer' or \ field.type.startswith('reference ') or \ field.type.startswith('list:integer') or \ field.type.startswith('list:reference '): value_input = SQLFORM.widgets.integer.widget(field,field.default,_id=_id) else: value_input = INPUT( _type='text', _id=_id, _class=field.type) Can this be enhanced to view Selection Dropdown with the values for all the fields. I have not much experience in web2py, so can some one please suggest a change here. On Wednesday, October 23, 2013 9:01:23 AM UTC+5:30, Sarbjit wrote: Can someone please help. On Tuesday, October 22, 2013 4:39:00 PM UTC+5:30, Sarbjit wrote: I am using GRID for displaying my database results. I want to use search feature provided by GRID/SMARTGRID where users can build queries and get the results. I want to have a drop down field populated with the values defined in the database for the fields which are defined as strings in database. In my case, some fields needs to have exact match and are used very frequent for searching the records. Since it is very difficult to fill in the exact name every time you are searching the records using that field, I want that for few fields, it should present a drop down. Can some one please suggest me on how on to do this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: drop down for grid or smart grid search fields
Thanks a lot Paolo Caruccio!! On Friday, October 25, 2013 6:39:46 PM UTC+5:30, Paolo Caruccio wrote: It's not necessary modify the code in gluon. You could replace the text input in the query panel. For example: 1) in db.py we define our table db.define_table('contact', Field('name'), Field('phone')) 2) in default.py we define our controller to create the grid def contacts(): grid=SQLFORM.grid(db.contact, user_signature=False) table_name = 'contact' field_name = 'phone' element_id = 'w2p_value_%s-%s' % (table_name, field_name) custom_select = SELECT('', 'value1', 'value2', 'value3', _id= element_id) grid.element('input',_id=element_id, replace=custom_select) return locals() 3) we create our view default/contacts.html {{extend 'layout.html'}} h1Manage My Contacts/h1 {{=grid}} The code in step2 should put you on the right way. Il giorno venerdì 25 ottobre 2013 13:57:21 UTC+2, Sarbjit ha scritto: I was looking at the code in gucon.sqlform elif (field.type.startswith('reference ') or field.type.startswith('list:reference ')) and \ hasattr(field.requires,'options'): value_input = SELECT( *[OPTION(v, _value=k) for k,v in field.requires.options()], **dict(_id=_id)) elif field.type == 'integer' or \ field.type.startswith('reference ') or \ field.type.startswith('list:integer') or \ field.type.startswith('list:reference '): value_input = SQLFORM.widgets.integer.widget(field,field.default,_id=_id) else: value_input = INPUT( _type='text', _id=_id, _class=field.type) Can this be enhanced to view Selection Dropdown with the values for all the fields. I have not much experience in web2py, so can some one please suggest a change here. On Wednesday, October 23, 2013 9:01:23 AM UTC+5:30, Sarbjit wrote: Can someone please help. On Tuesday, October 22, 2013 4:39:00 PM UTC+5:30, Sarbjit wrote: I am using GRID for displaying my database results. I want to use search feature provided by GRID/SMARTGRID where users can build queries and get the results. I want to have a drop down field populated with the values defined in the database for the fields which are defined as strings in database. In my case, some fields needs to have exact match and are used very frequent for searching the records. Since it is very difficult to fill in the exact name every time you are searching the records using that field, I want that for few fields, it should present a drop down. Can some one please suggest me on how on to do this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] drop down for grid or smart grid search fields
I am using GRID for displaying my database results. I want to use search feature provided by GRID/SMARTGRID where users can build queries and get the results. I want to have a drop down field populated with the values defined in the database for the fields which are defined as strings in database. In my case, some fields needs to have exact match and are used very frequent for searching the records. Since it is very difficult to fill in the exact name every time you are searching the records using that field, I want that for few fields, it should present a drop down. Can some one please suggest me on how on to do this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: drop down for grid or smart grid search fields
Can someone please help. On Tuesday, October 22, 2013 4:39:00 PM UTC+5:30, Sarbjit wrote: I am using GRID for displaying my database results. I want to use search feature provided by GRID/SMARTGRID where users can build queries and get the results. I want to have a drop down field populated with the values defined in the database for the fields which are defined as strings in database. In my case, some fields needs to have exact match and are used very frequent for searching the records. Since it is very difficult to fill in the exact name every time you are searching the records using that field, I want that for few fields, it should present a drop down. Can some one please suggest me on how on to do this. Thanks Sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Question on SQLFORM.grid layout update
I am using SQLFORM.grid and smartgrid for viewing the records, I noticed that when I use view record button, the text seems to be on right side making the left side of the screen empty. It looks like Name : John Date of Birth : 21/10/1980 I want it to look like: Name: John Date of Birth : 21/10/1980 How can I modify the layout of grid and smartgrid, I tried locating the default settings in web2py.css but I was not able to figure out the proper section. Can some one please guide me on how this can be achieved. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: Question on SQLFORM.grid layout update
Thanks Cliff, Firebug was really powerful. It solved my problem in seconds. -Sarbjit On Monday, October 21, 2013 11:48:41 PM UTC+5:30, Cliff Kachinske wrote: You can use Firebug to look at the css classes and their attributes. You can also change them on the fly to see the results. On Monday, October 21, 2013 9:49:09 AM UTC-4, Sarbjit wrote: I am using SQLFORM.grid and smartgrid for viewing the records, I noticed that when I use view record button, the text seems to be on right side making the left side of the screen empty. It looks like Name : John Date of Birth : 21/10/1980 I want it to look like: Name: John Date of Birth : 21/10/1980 How can I modify the layout of grid and smartgrid, I tried locating the default settings in web2py.css but I was not able to figure out the proper section. Can some one please guide me on how this can be achieved. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Insert table fields dynamically using Import CSV
Hi, I am using table.import_from_csv_file(file) option for adding entries in the database. But in my application, table fields are dynamic and I want that on import csv, if a new column (header) is specified in csv file, a new field should be created in database. Is it feasible to do so, any pointers? Thanks sarbjit -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Use import csv option to populate the SQLFORM
Hi, I am having controller as : @auth.requires_login() def add(): form = SQLFORM(db.table) if form.process(formname='test').accepted: response.flash = 'Database Updated' elif form.errors: response.flash = 'Please fill all the required details' else: response.flash = 'Enter the required details' return dict(form=form) In views, I am using custom widgets for the view of the add form. My requirement is that, I want to give an option like populate from csv (just like import csv option in appadmin, which should just populate this form only and do not update the table). Since I am new to web2py and have no experience using export/import csv options, will it be possible that I can use the existing import csv code and meet my requirement. Any other pointers/options are welcome. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [web2py] How can I check if a IS_IN_SET validator is set for a field and get the validtor values?
Actually I am not using the SQLFORM. I am using the code for dynamic search form from (http://www.web2pyslices.com/slice/show/1403/dynamic-search). I want to modify the code such that for the fields with validators, it should show the selection menu. So I want to add a check in the code below to detect if a field is having validator set, then use the SELECT command with the validator set values as argument. So far, I am not able to achieve it. Can you please recommend something in context here? Here is the code from the slice : def dynamic_search(table): tbl = TABLE() selected = [] ops = ['equals','not equal','greater than','less than', 'starts with','ends with','contains'] query = table.id 0 for field in table.fields: chkval = request.vars.get('chk'+field,None) txtval = request.vars.get('txt'+field,None) opval = request.vars.get('op'+field,None) row = TR(TD(INPUT(_type=checkbox,_name=chk+field, value=chkval=='on')), TD(field),TD(SELECT(ops,_name=op+field, value=opval)), TD(INPUT(_type=text,_name=txt+field, _value=txtval))) tbl.append(row) if chkval: if txtval: query = build_query(table[field], opval,txtval) selected.append(table[field]) form = FORM(tbl,INPUT(_type=submit)) results = db(query).select(*selected) return form, results Thanks, Sarbjit On Friday, July 26, 2013 1:37:26 PM UTC+5:30, Massimo Di Pierro wrote: Exactly. Complete code in case you have errors: #model db.define_table('persons',Field('gender')) db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) #controller default.py def index(): form = SQLFORM(db.persons).process() return locals() #views default/index.html {{extend 'layout.html'}} {{=form}} Mind we tend to call table names with singular not plural (person, not persons). This will make your code more readable. On Friday, 26 July 2013 02:57:21 UTC-5, viniciusban wrote: It's done automaticaly by web2py. On Fri, Jul 26, 2013 at 2:29 AM, Sarbjit singh sarbj...@gmail.com wrote: I have a db where I have set validator IS_IN_SET on a particular field. I am generating table rows (to be used as form), so I need to check if a particular field is having IS_IN_SET validator set and I want to retrieve the set values. Reason I want to do this is that I am generating a dynamic form based on the table fields and for the fields having IS_IN_SET validtor, I want to show the Drop Down menu rather than Text Field and wants to populate it with the Validator values. db.define_table('persons',Field('gender') db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) -Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [web2py] How can I check if a IS_IN_SET validator is set for a field and get the validtor values?
Thanks a lot Anthony for your help. I am facing problem while using the variable name with the isinstance method. i.e. isinstance(db.person.gender.requires, IS_IN_SET) returns TRUE But If I use it like : field = db.person.gender isinstance(field.requires, IS_IN_SET) == Exception that string has no attribute requires. Since my code is iterating over all the fields and doing some other operations, I have to store field in variable. Is there any way I can convert string back to gluon object ? Thanks Sarbjit On Friday, July 26, 2013 5:30:52 PM UTC+5:30, Anthony wrote: You can do: if hasattr(field.requires, 'options'): which will identify IS_IN_SET and IS_IN_DB validators. If you only want to identify IS_IN_SET, you can do: if isinstance(field.requires, IS_IN_SET): To get the list of options, you can do field.requires.theset (for the values), field.requires.labels (for the labels), or field.requires.options() for a list of tuples of values and labels. You can also create a SELECT object via SQLFORM.widgets.options.widget(field, value=field.default). Anthony On Friday, July 26, 2013 4:55:41 AM UTC-4, Sarbjit singh wrote: Actually I am not using the SQLFORM. I am using the code for dynamic search form from ( http://www.web2pyslices.com/slice/show/1403/dynamic-search). I want to modify the code such that for the fields with validators, it should show the selection menu. So I want to add a check in the code below to detect if a field is having validator set, then use the SELECT command with the validator set values as argument. So far, I am not able to achieve it. Can you please recommend something in context here? Here is the code from the slice : def dynamic_search(table): tbl = TABLE() selected = [] ops = ['equals','not equal','greater than','less than', 'starts with','ends with','contains'] query = table.id 0 for field in table.fields: chkval = request.vars.get('chk'+field,None) txtval = request.vars.get('txt'+field,None) opval = request.vars.get('op'+field,None) row = TR(TD(INPUT(_type=checkbox,_name=chk+field, value=chkval=='on')), TD(field),TD(SELECT(ops,_name=op+field, value=opval)), TD(INPUT(_type=text,_name=txt+field, _value=txtval))) tbl.append(row) if chkval: if txtval: query = build_query(table[field], opval,txtval) selected.append(table[field]) form = FORM(tbl,INPUT(_type=submit)) results = db(query).select(*selected) return form, results Thanks, Sarbjit On Friday, July 26, 2013 1:37:26 PM UTC+5:30, Massimo Di Pierro wrote: Exactly. Complete code in case you have errors: #model db.define_table('persons',Field('gender')) db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) #controller default.py def index(): form = SQLFORM(db.persons).process() return locals() #views default/index.html {{extend 'layout.html'}} {{=form}} Mind we tend to call table names with singular not plural (person, not persons). This will make your code more readable. On Friday, 26 July 2013 02:57:21 UTC-5, viniciusban wrote: It's done automaticaly by web2py. On Fri, Jul 26, 2013 at 2:29 AM, Sarbjit singh sarbj...@gmail.com wrote: I have a db where I have set validator IS_IN_SET on a particular field. I am generating table rows (to be used as form), so I need to check if a particular field is having IS_IN_SET validator set and I want to retrieve the set values. Reason I want to do this is that I am generating a dynamic form based on the table fields and for the fields having IS_IN_SET validtor, I want to show the Drop Down menu rather than Text Field and wants to populate it with the Validator values. db.define_table('persons',Field('gender') db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) -Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [web2py] How can I check if a IS_IN_SET validator is set for a field and get the validtor values?
Thanks a lot !! That's what I was looking for. -Sarbjit On Friday, July 26, 2013 7:53:28 PM UTC+5:30, Anthony wrote: isinstance(table[field].requires, IS_IN_SET) Anthony On Friday, July 26, 2013 8:56:13 AM UTC-4, Sarbjit singh wrote: Thanks a lot Anthony for your help. I am facing problem while using the variable name with the isinstance method. i.e. isinstance(db.person.gender.requires, IS_IN_SET) returns TRUE But If I use it like : field = db.person.gender isinstance(field.requires, IS_IN_SET) == Exception that string has no attribute requires. Since my code is iterating over all the fields and doing some other operations, I have to store field in variable. Is there any way I can convert string back to gluon object ? Thanks Sarbjit On Friday, July 26, 2013 5:30:52 PM UTC+5:30, Anthony wrote: You can do: if hasattr(field.requires, 'options'): which will identify IS_IN_SET and IS_IN_DB validators. If you only want to identify IS_IN_SET, you can do: if isinstance(field.requires, IS_IN_SET): To get the list of options, you can do field.requires.theset (for the values), field.requires.labels (for the labels), or field.requires.options() for a list of tuples of values and labels. You can also create a SELECT object via SQLFORM.widgets.options.widget(field, value=field.default). Anthony On Friday, July 26, 2013 4:55:41 AM UTC-4, Sarbjit singh wrote: Actually I am not using the SQLFORM. I am using the code for dynamic search form from ( http://www.web2pyslices.com/slice/show/1403/dynamic-search). I want to modify the code such that for the fields with validators, it should show the selection menu. So I want to add a check in the code below to detect if a field is having validator set, then use the SELECT command with the validator set values as argument. So far, I am not able to achieve it. Can you please recommend something in context here? Here is the code from the slice : def dynamic_search(table): tbl = TABLE() selected = [] ops = ['equals','not equal','greater than','less than', 'starts with','ends with','contains'] query = table.id 0 for field in table.fields: chkval = request.vars.get('chk'+field,None) txtval = request.vars.get('txt'+field,None) opval = request.vars.get('op'+field,None) row = TR(TD(INPUT(_type=checkbox,_name=chk+field, value=chkval=='on')), TD(field),TD(SELECT(ops,_name=op+field, value=opval)), TD(INPUT(_type=text,_name=txt+field, _value=txtval))) tbl.append(row) if chkval: if txtval: query = build_query(table[field], opval,txtval) selected.append(table[field]) form = FORM(tbl,INPUT(_type=submit)) results = db(query).select(*selected) return form, results Thanks, Sarbjit On Friday, July 26, 2013 1:37:26 PM UTC+5:30, Massimo Di Pierro wrote: Exactly. Complete code in case you have errors: #model db.define_table('persons',Field('gender')) db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) #controller default.py def index(): form = SQLFORM(db.persons).process() return locals() #views default/index.html {{extend 'layout.html'}} {{=form}} Mind we tend to call table names with singular not plural (person, not persons). This will make your code more readable. On Friday, 26 July 2013 02:57:21 UTC-5, viniciusban wrote: It's done automaticaly by web2py. On Fri, Jul 26, 2013 at 2:29 AM, Sarbjit singh sarbj...@gmail.com wrote: I have a db where I have set validator IS_IN_SET on a particular field. I am generating table rows (to be used as form), so I need to check if a particular field is having IS_IN_SET validator set and I want to retrieve the set values. Reason I want to do this is that I am generating a dynamic form based on the table fields and for the fields having IS_IN_SET validtor, I want to show the Drop Down menu rather than Text Field and wants to populate it with the Validator values. db.define_table('persons',Field('gender') db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) -Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups
[web2py] How can I check if a IS_IN_SET validator is set for a field and get the validtor values?
I have a db where I have set validator IS_IN_SET on a particular field. I am generating table rows (to be used as form), so I need to check if a particular field is having IS_IN_SET validator set and I want to retrieve the set values. Reason I want to do this is that I am generating a dynamic form based on the table fields and for the fields having IS_IN_SET validtor, I want to show the Drop Down menu rather than Text Field and wants to populate it with the Validator values. db.define_table('persons',Field('gender') db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) -Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: How do I pass a query object to a different controller?
Just to be clear on exception (crash) : On clicking search, pickle error is seen if the url is like : http://127.0.0.1:8000/sampleapp/default/search2/edit/customer/2?_signature=... If it is simple : (first time search which works) : http://127.0.0.1:8000/sampleapp/default/search2 But no edit/view forms are seen on redirection from results view back to search2. -Sarbjit On Thursday, July 18, 2013 9:18:18 AM UTC+5:30, Sarbjit singh wrote: Thanks guys for the help. I followed the approach as suggested by Massimo, so I did the following : @auth.requires_login() def search2(): form,results = dynamic_search(db.customer) if form.process().accepted: session.results = results redirect(URL('results')) return dict(form=form) @auth.requires_login() def results(): results = session.results return dict(results=results) Please note that the dynamic_search is returning grid and form, so I am storing grid in the session. But I am still facing problems, not sure what wrong steps I am doing. For the first time, when I click on search, desired results are opened in controller results (in a new page). But when I click on edit/view of grid operation, some how the page gets redirected to search page and on subsequent search it crashes with the same problem (can't pickle ..). My question is when i click on edit operations on a grid, why it is redirecting to search. Isn't it is supposed to open edit form there itself? To me it looks like, since the grid was generated when the control was in the search2, so the links of the grid operations are pointing to search2 view though the results are now seen in different view results. So when I click on any operation, it is redirected to search2 view - BUT strangely contents of edit form are not seen (Not sure of the reason?). Can some one please help me to resolve this issue ? Is there a way I can recompute the grid links in results controller such that they do not redirect to search2 view. Also what could be the check added to avoid crash on subsequent search. Thanks Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: How do I pass a query object to a different controller?
Now all the problems are solved, with problem remaining. Here is what I did to solve the problem : In the view for search2, I added the code as : {{extend 'layout.html'}} h1This is the default/search2.html template/h1 {{if results.update_form:}} {{=results}} {{elif results.view_form:}} {{=results}} {{else:}} {{=form}} {{pass}} Problem that is remaining is, when I click on Back button from the Edit/View operation of grid, it took me back to search form, but I want to see the search results. Can some one please help me on how to handle it? -Sarbjit On Thursday, July 18, 2013 12:36:25 PM UTC+5:30, Sarbjit singh wrote: Just to be clear on exception (crash) : On clicking search, pickle error is seen if the url is like : http://127.0.0.1:8000/sampleapp/default/search2/edit/customer/2?_signature=. .. If it is simple : (first time search which works) : http://127.0.0.1:8000/sampleapp/default/search2 But no edit/view forms are seen on redirection from results view back to search2. -Sarbjit On Thursday, July 18, 2013 9:18:18 AM UTC+5:30, Sarbjit singh wrote: Thanks guys for the help. I followed the approach as suggested by Massimo, so I did the following : @auth.requires_login() def search2(): form,results = dynamic_search(db.customer) if form.process().accepted: session.results = results redirect(URL('results')) return dict(form=form) @auth.requires_login() def results(): results = session.results return dict(results=results) Please note that the dynamic_search is returning grid and form, so I am storing grid in the session. But I am still facing problems, not sure what wrong steps I am doing. For the first time, when I click on search, desired results are opened in controller results (in a new page). But when I click on edit/view of grid operation, some how the page gets redirected to search page and on subsequent search it crashes with the same problem (can't pickle ..). My question is when i click on edit operations on a grid, why it is redirecting to search. Isn't it is supposed to open edit form there itself? To me it looks like, since the grid was generated when the control was in the search2, so the links of the grid operations are pointing to search2 view though the results are now seen in different view results. So when I click on any operation, it is redirected to search2 view - BUT strangely contents of edit form are not seen (Not sure of the reason?). Can some one please help me to resolve this issue ? Is there a way I can recompute the grid links in results controller such that they do not redirect to search2 view. Also what could be the check added to avoid crash on subsequent search. Thanks Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] How do I pass a query object to a different controller?
Hi, I am trying to use dynamic search form from http://www.web2pyslices.com/slice/show/1403/dynamic-search. Current implementation shows both the form and results on the same page. I want to display the search results (using GRID) in a new page and wants to use customized forms for edit/view operations associated with GRID. As of now, I tried handling it in the view to not to show form contents once the form is accessed but some how it is not working on subsequent operations. So, I am thinking to pass query to a new controller and can hence handle the custom forms there. But I am not able to do so. So here is what I tried : @auth.requires_login() def search2(): form,query = dynamic_search(db.customer) if form.process().accepted: session.sqlquery = query redirect(URL('results')) return dict(form=form) @auth.requires_login() def results(): query = session.sqlquery print query results = SQLFORM.grid(query,searchable=False,create=False,csv=False) results = None return dict(results=results) With this code, first error that is encountered is in session.sqlquery = query - Can't pickle objects So I modified it as session.sqlquery = str(query) With this error appeared in query = session.sqlquery - str object has no attribute _db Can some one please suggest what is the right way to achieve this? -Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[web2py] Re: How do I pass a query object to a different controller?
I am not aware of the word serialize, Is there any possibility to achieve it? On Wednesday, July 17, 2013 5:36:33 PM UTC+5:30, Massimo Di Pierro wrote: A query object cannot be put into a session unless you somehow serialize (but not with automated pickle/marshall/etc). On Wednesday, 17 July 2013 05:37:24 UTC-5, Sarbjit singh wrote: Hi, I am trying to use dynamic search form from http://www.web2pyslices.com/slice/show/1403/dynamic-search. Current implementation shows both the form and results on the same page. I want to display the search results (using GRID) in a new page and wants to use customized forms for edit/view operations associated with GRID. As of now, I tried handling it in the view to not to show form contents once the form is accessed but some how it is not working on subsequent operations. So, I am thinking to pass query to a new controller and can hence handle the custom forms there. But I am not able to do so. So here is what I tried : @auth.requires_login() def search2(): form,query = dynamic_search(db.customer) if form.process().accepted: session.sqlquery = query redirect(URL('results')) return dict(form=form) @auth.requires_login() def results(): query = session.sqlquery print query results = SQLFORM.grid(query,searchable=False,create=False,csv=False) results = None return dict(results=results) With this code, first error that is encountered is in session.sqlquery = query - Can't pickle objects So I modified it as session.sqlquery = str(query) With this error appeared in query = session.sqlquery - str object has no attribute _db Can some one please suggest what is the right way to achieve this? -Sarbjit -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.