[web2py] Datatables Object ID

2019-04-12 Thread Cristina Sig
Hello everybody,

I have two tables and I am working with Datatables and what I would like to 
do is use the child row to show more information about a particular row. 
For example, on the table I will display first name, last name, username, 
and email and on the child or expandable row, I will show the nationality 
of that user.
The problem I am having is that when I expand the row, it shows only the id 
from the 'User' table  and not the description associated to that id.
this is my first time dealing with Datatables so I don't have my experience 
with it.

Any suggestions to solve this issue?

Thanks :)

DB
db.define_table('User',
Field('first_name', 'string'),
Field('last_name', 'string'),
Field('email','string'),
Field('username','string'),
Field('nationality','reference Nationality', requires = 
IS_IN_DB(db,db.Nationality.id,'%(description)s')
   )


db.define_table('Nationality',
Field('description','string'),
format = '%(descripcion)s'
   )



My controler
def user():
import json
usuario = json.dumps(db(db.auth_user.id>0).select().as_list())
return dict(formListar=XML(usuario))




My view

var tabla;
$(document).ready(function(){
   tabla=  $('#tablaGenerica').DataTable({
 "data":  {{=formListar}},
"scrollX": false,
 "dom": 'lrtip',
 "searching": true,
 "sRowSelect": "single",
  "columns": [
  {
 "class":"details-control",
 "orderable":false,
 "data":null,
 "defaultContent": ""
  },
  { data: 'first_name' },
  { data: 'last_name' },
  { data: 'email' },
  { data: 'username' },
  ]
});

 $('#tablaGenerica tbody').on('click', 'td.details-control', function () {
var tr = $(this).closest('tr');
var row = tabla.row( tr );
if ( row.child.isShown() ) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child( format(row.data()) ).show();
tr.addClass('shown');
}
} );

function format ( d ) {
// `d` is the original data object for the row
return ''+
''+
''+
''+
''+
'
Nationality:'+d.nationality+'
'; } First name Last name Email Username -- 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: Is it possible to send all args & vars from a view/controller to another using POST instead of GET?

2019-04-12 Thread Dave S


On Friday, April 12, 2019 at 4:41:43 PM UTC-7, João Matos wrote:
>
> So no option for redirect with POST. That is a shame.
>
>
It's up to the client how an HTTP 303 is handled.  It's usually the case 
that a GET is used to retrieve a response that is ultimately from a POST 
request.

If 2 controller functions need to share data, use the session or a database 
entry.
 

> The book mentions request.post_vars. In what situation would one use it?
>
>
To retrieve the data the client sent in a POST request.

Logging in with AUTH often involves the following sequence:

client: GET resourceX
server: 303 pointing to user/login and setting an arg for _next [points to 
resourceX or a relevant object]
client: GET user/login
server 200 + page contents (login form)
client: POST login data (generally credentials in some form), arg _next in 
URL  [server sees this in request.post_vars]
server: 200 + page contents of resourceX

This description is like those arrow diagrams with client on the left, 
server on the right, and time flowing downwards; I've simplified the 
description, but 
I'm cribbing from my NginX logs; I think you've said you're stuck with 
Apache, which should show similar interactions in the form it's logs use.

The above exchange was with a browser for a client, but I have clients that 
use libcurl, and libcurl offers a choice of how to deal with 303's:  follow 
automatically,  or just report the new URL (or URI these days).  With the 
latter option, the URL can be examined (for validation, perhaps), and the 
client decides to request the new page based on its processing.

/dps


sábado, 13 de Abril de 2019 às 00:33:56 UTC+1, Dave S escreveu:
>
>
>
> On Friday, April 12, 2019 at 4:25:48 PM UTC-7, João Matos wrote:
>>
>> redirect
>>
>
>
> Then it is actually the client (browser?) that accesses the  other 
> function, you're just telling it where to make the new request (you can put 
> vars and args in the URL, but you don't control the method).  Can you put 
> something in the session (with pickle restrictions)?  Other thought:  a db 
> table just for the handing over of request data, and the redirect URL has a 
> single arg that specifies the row being handed over.  The number of rows 
> can be small because the consumer can delete a row when complete.
>
> /dps
>
>
>
>> sexta-feira, 12 de Abril de 2019 às 23:59:46 UTC+1, Dave S escreveu:
>>>
>>>
>>>
>>> On Friday, April 12, 2019 at 3:12:55 PM UTC-7, João Matos wrote:

 Is it possible to send all args and vars from a view/controller to 
 another view/controller using POST instead of GET?

>>>
>>> Is this as a redirect or a fetch?  fetch's 2nd argument, data, selects 
>>> for POST if not null, and urlencodes data's value.
>>>
>>> The redirect code doesn't seem to have a way change method, but then it 
>>> is primarily just for returning an HTTP 303 status.
>>>
>>> (See gluon/tools.py and gluon/http.py respectively)
>>>
>>> /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] How can I get the value from the hidden input field (outside the grid) while in the view?

2019-04-12 Thread João Matos
I wrote this

{{extend 'layout.html'}}





{{=db.notification._plural}}

{{=grid}}

and it works (it fills the hidden input value with a random number).

But now I need to use save the random number generated in javascript and 
stored in the hidden input valur (which is outside the grid)
{{session[str(random_number)] = random_number}}

How can I do that?

-- 
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: Is it possible to send all args & vars from a view/controller to another using POST instead of GET?

2019-04-12 Thread João Matos
So no option for redirect with POST. That is a shame.

The book mentions request.post_vars. In what situation would one use it?


sábado, 13 de Abril de 2019 às 00:33:56 UTC+1, Dave S escreveu:
>
>
>
> On Friday, April 12, 2019 at 4:25:48 PM UTC-7, João Matos wrote:
>>
>> redirect
>>
>
>
> Then it is actually the client (browser?) that accesses the  other 
> function, you're just telling it where to make the new request (you can put 
> vars and args in the URL, but you don't control the method).  Can you put 
> something in the session (with pickle restrictions)?  Other thought:  a db 
> table just for the handing over of request data, and the redirect URL has a 
> single arg that specifies the row being handed over.  The number of rows 
> can be small because the consumer can delete a row when complete.
>
> /dps
>
>
>
>> sexta-feira, 12 de Abril de 2019 às 23:59:46 UTC+1, Dave S escreveu:
>>>
>>>
>>>
>>> On Friday, April 12, 2019 at 3:12:55 PM UTC-7, João Matos wrote:

 Is it possible to send all args and vars from a view/controller to 
 another view/controller using POST instead of GET?

>>>
>>> Is this as a redirect or a fetch?  fetch's 2nd argument, data, selects 
>>> for POST if not null, and urlencodes data's value.
>>>
>>> The redirect code doesn't seem to have a way change method, but then it 
>>> is primarily just for returning an HTTP 303 status.
>>>
>>> (See gluon/tools.py and gluon/http.py respectively)
>>>
>>> /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] Re: Is it possible to send all args & vars from a view/controller to another using POST instead of GET?

2019-04-12 Thread Dave S


On Friday, April 12, 2019 at 4:25:48 PM UTC-7, João Matos wrote:
>
> redirect
>


Then it is actually the client (browser?) that accesses the  other 
function, you're just telling it where to make the new request (you can put 
vars and args in the URL, but you don't control the method).  Can you put 
something in the session (with pickle restrictions)?  Other thought:  a db 
table just for the handing over of request data, and the redirect URL has a 
single arg that specifies the row being handed over.  The number of rows 
can be small because the consumer can delete a row when complete.

/dps



> sexta-feira, 12 de Abril de 2019 às 23:59:46 UTC+1, Dave S escreveu:
>>
>>
>>
>> On Friday, April 12, 2019 at 3:12:55 PM UTC-7, João Matos wrote:
>>>
>>> Is it possible to send all args and vars from a view/controller to 
>>> another view/controller using POST instead of GET?
>>>
>>
>> Is this as a redirect or a fetch?  fetch's 2nd argument, data, selects 
>> for POST if not null, and urlencodes data's value.
>>
>> The redirect code doesn't seem to have a way change method, but then it 
>> is primarily just for returning an HTTP 303 status.
>>
>> (See gluon/tools.py and gluon/http.py respectively)
>>
>> /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] Re: Is it possible to send all args & vars from a view/controller to another using POST instead of GET?

2019-04-12 Thread João Matos
redirect

sexta-feira, 12 de Abril de 2019 às 23:59:46 UTC+1, Dave S escreveu:
>
>
>
> On Friday, April 12, 2019 at 3:12:55 PM UTC-7, João Matos wrote:
>>
>> Is it possible to send all args and vars from a view/controller to 
>> another view/controller using POST instead of GET?
>>
>
> Is this as a redirect or a fetch?  fetch's 2nd argument, data, selects for 
> POST if not null, and urlencodes data's value.
>
> The redirect code doesn't seem to have a way change method, but then it is 
> primarily just for returning an HTTP 303 status.
>
> (See gluon/tools.py and gluon/http.py respectively)
>
> /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] Re: Is it possible to send all args & vars from a view/controller to another using POST instead of GET?

2019-04-12 Thread Dave S


On Friday, April 12, 2019 at 3:12:55 PM UTC-7, João Matos wrote:
>
> Is it possible to send all args and vars from a view/controller to another 
> view/controller using POST instead of GET?
>

Is this as a redirect or a fetch?  fetch's 2nd argument, data, selects for 
POST if not null, and urlencodes data's value.

/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] Re: Sorting a Rows object by a particular field

2019-04-12 Thread João Matos
In my case the first seems to be working.
Check this

rows = db(db.auth_user.id < 3).select()
print('***')
print(rows)
print('---')
print(rows.sort(lambda r: r["id"], reverse=True))

-- 
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: Sorting a Rows object by a particular field

2019-04-12 Thread Dave S
On Friday, April 12, 2019 at 3:16:31 PM UTC-7, João Matos wrote:
>
> The orderby of the DAL or the ORDER BY of the SQL engine you use wouldn't 
> do the job?
>
>
No, because of my custom aggregation (funkystr is an artifact of that).  
However, your question suggested an experiment that I may remember to try 
when I get home.  Of wider interest is what is passed to the lambda, which 
knowledge may also be needed for other  transformations and digestions.

(I may need to use 2 queries, since funkystr is still needed.)

/dps



> sexta-feira, 12 de Abril de 2019 às 11:03:10 UTC+1, Dave S escreveu:
>>
>> Pro tip:  do not call your controller function "sorted".
>>
>> Getting past that, I have a Rows object (call it "rowed") that I've 
>> created from munching through the results of a select().  (Why?  because 
>> for presentation reasons, I do an aggregation with custom logic.)  In the 
>> past, ordering was done by the select and "inherited" by rowed.  Now I want 
>> the option of sorting rowed by a different field (the aggregated count).  
>> If I do 
>>   rowed.records = sorted(rowed.records,key=lambda r: r.NumAdded)
>> everything is fine.  But if I do
>> rowed.sort(lambda r: r["NumAdded"])
>> or
>> rowed.records.sort(lambda r: ["NumAdded"])
>> I don't get what I want.  The first doesn't seem to change the ordering, 
>> and the second raises heck^W an exception
>> (() takes exactly 1 argument (2 
>> given))
>>
>> In the ticket, rowed.records looks like 
>> [> '...xx', 'id': 26L, 'NumAdded': 31L}>, > datetime.date(2017, 1, 2), 'funkystr': 'xxx', 'id': 131L, 
>> 'NumAdded': 15L}>, ]
>>
>> and r like
>> 
>>
>> These suggest that my lambda is getting passed something other than 
>> what's in the curly braces above.  What would be the correct way to write 
>> the lambda (which would right the ship)?
>>
>> [OT:  I think Opera mucks up the GG formatting controls; I may edit this 
>> in FF or Chrome tomorrow]
>>
>> PS:  thanks again to Anthony for previous help with cmp/key issues.
>>
>> Dave S
>> /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] Does web2py support SSE (server sent events) from HTML5?

2019-04-12 Thread João Matos
Does web2py support SSE (server sent events) from HTML5?
https://www.w3schools.com/html/html5_serversentevents.asp

-- 
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: Sorting a Rows object by a particular field

2019-04-12 Thread João Matos
The orderby of the DAL or the ORDER BY of the SQL engine you use wouldn't 
do the job?


sexta-feira, 12 de Abril de 2019 às 11:03:10 UTC+1, Dave S escreveu:
>
> Pro tip:  do not call your controller function "sorted".
>
> Getting past that, I have a Rows object (call it "rowed") that I've 
> created from munching through the results of a select().  (Why?  because 
> for presentation reasons, I do an aggregation with custom logic.)  In the 
> past, ordering was done by the select and "inherited" by rowed.  Now I want 
> the option of sorting rowed by a different field (the aggregated count).  
> If I do 
>   rowed.records = sorted(rowed.records,key=lambda r: r.NumAdded)
> everything is fine.  But if I do
> rowed.sort(lambda r: r["NumAdded"])
> or
> rowed.records.sort(lambda r: ["NumAdded"])
> I don't get what I want.  The first doesn't seem to change the ordering, 
> and the second raises heck^W an exception
> (() takes exactly 1 argument (2 
> given))
>
> In the ticket, rowed.records looks like 
> [ '...xx', 'id': 26L, 'NumAdded': 31L}>,  datetime.date(2017, 1, 2), 'funkystr': 'xxx', 'id': 131L, 
> 'NumAdded': 15L}>, ]
>
> and r like
> 
>
> These suggest that my lambda is getting passed something other than what's 
> in the curly braces above.  What would be the correct way to write the 
> lambda (which would right the ship)?
>
> [OT:  I think Opera mucks up the GG formatting controls; I may edit this 
> in FF or Chrome tomorrow]
>
> PS:  thanks again to Anthony for previous help with cmp/key issues.
>
> Dave S
> /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] Is it possible to send all args & vars from a view/controller to another using POST instead of GET?

2019-04-12 Thread João Matos
Is it possible to send all args and vars from a view/controller to another 
view/controller using POST instead of GET?

-- 
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] Does anyone know if it's possible & how I can distinguish, from web2py perspective, 2 browser tabs?

2019-04-12 Thread João Matos
Does anyone know if it is possible and how I can distinguish, from web2py 
perspective, 2 tabs or windows (not Firefox containers) from the same 
browser?

-- 
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: Web3py

2019-04-12 Thread Massimo Di Pierro
Can you make it a module on pypi? Or should we include it in pydal?

-- 
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: Web3py

2019-04-12 Thread Kevin Keller
I'm interestes in the orm Carlos.

keller...@gmail.com

Happy to test it but also work on it with you.



On Fri, 12 Apr 2019, 18:46 En Ware,  wrote:

> Not getting examples to work is /examples/form or examples ?
>
> On Friday, April 12, 2019 at 10:29:21 AM UTC-5, Massimo Di Pierro wrote:
>>
>> In web3py an application is a folder, for example "myapp". It must have:
>>
>> applications/
>>   myapp/
>> __init__.py
>> templates/
>> static/
>> databases/
>>
>> otherwise the structure is free. You are free to create models/ and
>> controllers/ and organize code like in the old web2py but the entry point
>> is __init__.py. Web3py will see functions defined in __init_ or imported by
>> init. In my examples I defined all actions in __init__. For example
>>
>> In __init__.py =
>> from . import models
>> from . import controllers
>>
>> In model.py =
>> from web3py import DAL, Field
>> db = DAL('sqlite://test')
>> db.define_table('thing', Field('name'))
>>
>> In controllers.py =
>> from web3py import action, request, redirect, abort
>> from . models import db
>> @action('helloworld') # exposes http://127.0.0.1:8000/myapp/helloworld
>> @action.uses(db, 'helloworld.html')
>> def helloworld(): return dict(name=request.forms.get('name', 'visitor'))
>>
>> In templates/helloworld.html =
>> [[extend 'layout.html']]
>> Hello Dear [[=name]]
>>
>> In templates/layout.html =
>> [[include]]
>>
>>
>> request, redirect, abort are Bottely objects
>> DAL, Field are web2py's
>> the template is the same as web2py but defaults to [[ ]] delimiters to
>> avoid conflicts with vue.js and other js
>> the @action decorator accepts the same parameters as bottle.route but
>> does a little more.
>> There is also a form.py that implements Form() a drop in replacement (to
>> be tested) for SQLFORM.
>>
>> Notice we do all of this in 300 lines of python code and 10x faster than
>> web2py in my tests.
>>
>> Working on admin and appadmin. May be done in one week.
>>
>> Massimo
>>
>>
>>
>>
>>
>> On Friday, 12 April 2019 06:53:57 UTC-7, En Ware wrote:
>>>
>>> I'm trying to wrap my ahead around how web3py works by looking at the
>>> source
>>>
>>> I see __init__.py is the main code for the actually todo app.
>>>
>>> Is this going to be the case for all applications ? or is this just for
>>> a sample ?
>>>
>>>
>>> On Thursday, April 11, 2019 at 11:03:29 PM UTC-5, Massimo Di Pierro
>>> wrote:

 There is a lot to do but at this point it is moving fast and a one way
 street.

 On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:
>
> I git installed web3py and quite enjoy it. I see its updated regular
> too.
>
> For those who don't know and maybe this is common sense , not sure.
>
> once you *git clone https://github.com/web2py/web3py.git
>   *do a *git pull*
>
> 2. reinstall requirements.txt (*pip3 install -r requirements.txt*)
>  - Changes:  module "reloader" was added
>
> 3. Launch web3py (should work just fine now)
>
> * python3 web3py.py applications/todo/*
>
> 4. open browser and type: * localhost:8000 or 127.0.0.1:8000
> /todo/index*
>
> --
> 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.
>

-- 
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: Web3py

2019-04-12 Thread En Ware
Not getting examples to work is /examples/form or examples ? 

On Friday, April 12, 2019 at 10:29:21 AM UTC-5, Massimo Di Pierro wrote:
>
> In web3py an application is a folder, for example "myapp". It must have:
>
> applications/
>   myapp/
> __init__.py
> templates/
> static/
> databases/
>
> otherwise the structure is free. You are free to create models/ and 
> controllers/ and organize code like in the old web2py but the entry point 
> is __init__.py. Web3py will see functions defined in __init_ or imported by 
> init. In my examples I defined all actions in __init__. For example
>
> In __init__.py =
> from . import models
> from . import controllers
>
> In model.py =
> from web3py import DAL, Field
> db = DAL('sqlite://test')
> db.define_table('thing', Field('name'))
>
> In controllers.py =
> from web3py import action, request, redirect, abort
> from . models import db
> @action('helloworld') # exposes http://127.0.0.1:8000/myapp/helloworld
> @action.uses(db, 'helloworld.html')
> def helloworld(): return dict(name=request.forms.get('name', 'visitor'))
>
> In templates/helloworld.html =
> [[extend 'layout.html']]
> Hello Dear [[=name]]
>
> In templates/layout.html =
> [[include]]
>
>
> request, redirect, abort are Bottely objects
> DAL, Field are web2py's
> the template is the same as web2py but defaults to [[ ]] delimiters to 
> avoid conflicts with vue.js and other js
> the @action decorator accepts the same parameters as bottle.route but does 
> a little more.
> There is also a form.py that implements Form() a drop in replacement (to 
> be tested) for SQLFORM.
>
> Notice we do all of this in 300 lines of python code and 10x faster than 
> web2py in my tests.
>
> Working on admin and appadmin. May be done in one week.
>
> Massimo
>
>
>
>
>
> On Friday, 12 April 2019 06:53:57 UTC-7, En Ware wrote:
>>
>> I'm trying to wrap my ahead around how web3py works by looking at the 
>> source 
>>
>> I see __init__.py is the main code for the actually todo app. 
>>
>> Is this going to be the case for all applications ? or is this just for a 
>> sample ? 
>>
>>
>> On Thursday, April 11, 2019 at 11:03:29 PM UTC-5, Massimo Di Pierro wrote:
>>>
>>> There is a lot to do but at this point it is moving fast and a one way 
>>> street.
>>>
>>> On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:

 I git installed web3py and quite enjoy it. I see its updated regular 
 too. 

 For those who don't know and maybe this is common sense , not sure. 

 once you *git clone https://github.com/web2py/web3py.git 
   *do a *git pull*

 2. reinstall requirements.txt (*pip3 install -r requirements.txt*) 
  - Changes:  module "reloader" was added 

 3. Launch web3py (should work just fine now) 

 * python3 web3py.py applications/todo/*

 4. open browser and type: * localhost:8000 or 127.0.0.1:8000 
 /todo/index*



-- 
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: Web3py

2019-04-12 Thread Carlos Cesar Caballero Díaz
I reaaly would like to use an ORM with web3py, in my opinion ORMs 
are better for organization when apps grow big and I like a lot the fat 
models and thin controllers approach, and it is some messy with pydal 
right now 
(https://github.com/Medisur/journalmanagement/blob/master/models/citation.py). 
I have isoleted the weppy ORM some days ago (as hobby), it's not fully 
tested, and will need some refactoring, but if you are interested I can 
share it.


Greetings.

El 12/4/19 a las 11:32 a.m., Massimo Di Pierro escribió:
May steel some ideas from weppy but I do not want an ORM. That can be 
optional if you like we can isolate it in a module.


On Friday, 12 April 2019 04:40:51 UTC-7, Kevin Keller wrote:

Any thoughts on merging / collaborating with weppy?

http://weppy.org/

Uses web2py dal and yatl..
and has some nifty things to make queries and modelling easier..



On Fri, Apr 12, 2019 at 6:03 AM Massimo Di Pierro
mailto:massimo.dipie...@gmail.com>>
wrote:

There is a lot to do but at this point it is moving fast and a
one way street.

On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:

I git installed web3py and quite enjoy it. I see its
updated regular too.

For those who don't know and maybe this is common sense ,
not sure.

once you *git clone https://github.com/web2py/web3py.git
 *do a *git pull*
*
*
2. reinstall requirements.txt (*pip3 install -r
requirements.txt*)
 - Changes:  module "reloader" was added

3. Launch web3py (should work just fine now)
* python3 web3py.py applications/todo/
*

4. open browser and type: * localhost:8000 or
127.0.0.1:8000 /todo/index*

-- 
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
.

--
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.


--
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: Web3py

2019-04-12 Thread Massimo Di Pierro
May steel some ideas from weppy but I do not want an ORM. That can be 
optional if you like we can isolate it in a module.

On Friday, 12 April 2019 04:40:51 UTC-7, Kevin Keller wrote:
>
> Any thoughts on merging / collaborating with weppy?
>
> http://weppy.org/
>
> Uses web2py dal and yatl.. 
> and has some nifty things to make queries and modelling easier.. 
>
>
>
> On Fri, Apr 12, 2019 at 6:03 AM Massimo Di Pierro <
> massimo.dipie...@gmail.com> wrote:
>
>> There is a lot to do but at this point it is moving fast and a one way 
>> street.
>>
>> On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:
>>>
>>> I git installed web3py and quite enjoy it. I see its updated regular 
>>> too. 
>>>
>>> For those who don't know and maybe this is common sense , not sure. 
>>>
>>> once you *git clone https://github.com/web2py/web3py.git 
>>>   *do a *git pull*
>>>
>>> 2. reinstall requirements.txt (*pip3 install -r requirements.txt*) 
>>>  - Changes:  module "reloader" was added 
>>>
>>> 3. Launch web3py (should work just fine now) 
>>>
>>> * python3 web3py.py applications/todo/*
>>>
>>> 4. open browser and type: * localhost:8000 or 127.0.0.1:8000 
>>> /todo/index*
>>>
>>> -- 
>> 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.
>>
>

-- 
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: Web3py

2019-04-12 Thread Massimo Di Pierro
In web3py an application is a folder, for example "myapp". It must have:

applications/
  myapp/
__init__.py
templates/
static/
databases/

otherwise the structure is free. You are free to create models/ and 
controllers/ and organize code like in the old web2py but the entry point 
is __init__.py. Web3py will see functions defined in __init_ or imported by 
init. In my examples I defined all actions in __init__. For example

In __init__.py =
from . import models
from . import controllers

In model.py =
from web3py import DAL, Field
db = DAL('sqlite://test')
db.define_table('thing', Field('name'))

In controllers.py =
from web3py import action, request, redirect, abort
from . models import db
@action('helloworld') # exposes http://127.0.0.1:8000/myapp/helloworld
@action.uses(db, 'helloworld.html')
def helloworld(): return dict(name=request.forms.get('name', 'visitor'))

In templates/helloworld.html =
[[extend 'layout.html']]
Hello Dear [[=name]]

In templates/layout.html =
[[include]]


request, redirect, abort are Bottely objects
DAL, Field are web2py's
the template is the same as web2py but defaults to [[ ]] delimiters to 
avoid conflicts with vue.js and other js
the @action decorator accepts the same parameters as bottle.route but does 
a little more.
There is also a form.py that implements Form() a drop in replacement (to be 
tested) for SQLFORM.

Notice we do all of this in 300 lines of python code and 10x faster than 
web2py in my tests.

Working on admin and appadmin. May be done in one week.

Massimo





On Friday, 12 April 2019 06:53:57 UTC-7, En Ware wrote:
>
> I'm trying to wrap my ahead around how web3py works by looking at the 
> source 
>
> I see __init__.py is the main code for the actually todo app. 
>
> Is this going to be the case for all applications ? or is this just for a 
> sample ? 
>
>
> On Thursday, April 11, 2019 at 11:03:29 PM UTC-5, Massimo Di Pierro wrote:
>>
>> There is a lot to do but at this point it is moving fast and a one way 
>> street.
>>
>> On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:
>>>
>>> I git installed web3py and quite enjoy it. I see its updated regular 
>>> too. 
>>>
>>> For those who don't know and maybe this is common sense , not sure. 
>>>
>>> once you *git clone https://github.com/web2py/web3py.git 
>>>   *do a *git pull*
>>>
>>> 2. reinstall requirements.txt (*pip3 install -r requirements.txt*) 
>>>  - Changes:  module "reloader" was added 
>>>
>>> 3. Launch web3py (should work just fine now) 
>>>
>>> * python3 web3py.py applications/todo/*
>>>
>>> 4. open browser and type: * localhost:8000 or 127.0.0.1:8000 
>>> /todo/index*
>>>
>>>

-- 
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] Problem with oracle query

2019-04-12 Thread gliporace
Hi,
I just updated my web2py installation from 2.11 to 2.18.5, but the apps who 
make use of cx_Oracle for connecting to a Oracle database show this error 
when ther try to query a table/view:

Exception ORA-00942: table or view does not exist

The old web2py installation run without problems on a Ubuntu server 14.04 
and cx_Oracle 5.3, the new installation is on Ubuntu server 16.04 with the 
same version of cx_Oracle.

Is there any means to check what is the query before is sent to the server?

-- 
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: Web3py

2019-04-12 Thread En Ware
I'm trying to wrap my ahead around how web3py works by looking at the 
source 

I see __init__.py is the main code for the actually todo app. 

Is this going to be the case for all applications ? or is this just for a 
sample ? 


On Thursday, April 11, 2019 at 11:03:29 PM UTC-5, Massimo Di Pierro wrote:
>
> There is a lot to do but at this point it is moving fast and a one way 
> street.
>
> On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:
>>
>> I git installed web3py and quite enjoy it. I see its updated regular too. 
>>
>> For those who don't know and maybe this is common sense , not sure. 
>>
>> once you *git clone https://github.com/web2py/web3py.git 
>>   *do a *git pull*
>>
>> 2. reinstall requirements.txt (*pip3 install -r requirements.txt*) 
>>  - Changes:  module "reloader" was added 
>>
>> 3. Launch web3py (should work just fine now) 
>>
>> * python3 web3py.py applications/todo/*
>>
>> 4. open browser and type: * localhost:8000 or 127.0.0.1:8000 
>> /todo/index*
>>
>>

-- 
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: 2.18.5 LI(_class="dropdown-divider") bug?

2019-04-12 Thread lucas
alright, I fixed it.  apparently in old versions of layout.html the =MENU() 
is used to create the html menu from response.menu.  that code has been 
updated at some web2py version and changed to:

  {{for _item in response.menu or []:}}
  {{if len(_item)<4 or not _item[3]:}}
  
{{=_item[0]}}
  
  {{else:}}
  
{{=_item[0]}}

  {{for _subitem in _item[3]:}}
  {{=_subitem[0
]}}
  {{pass}}

  
  {{pass}}
  {{pass}}

thanx to Anthony, I rewrote the above code to allow for the insertion 
divider/separator in the response.menu to:

  {{for _item in response.menu or []:}}
  {{if len(_item)<4 or not _item[3]:}}
  
{{=_item[0]}}
  
  {{else:}}
  
{{=_item[0]}}

  {{for _subitem in _item[3]:
  if (len(_subitem) > 2):
=A(_subitem[0], _href=_subitem[2], _class=
"dropdown-item")
  else:
=_subitem
pass
  pass}}

  
  {{pass}}
  {{pass}}

in which case, the response.menu now looks like:

response.menu = [
[T('Lectures'), False, None, []],
[T('Students'), False, URL('main', 'students'), []],
[T('Professors'), False, URL('main', 'professors'), []],
[T('Blog'), False, URL('default', 'blog')],
[T('News'), False, URL('default', 'news')]
]


if auth.is_logged_in():
response.menu[1][0] = T('Student')
response.menu[1][3] = [
(T('Dashboard'), False, URL('main', 'students')),
DIV(_class="dropdown-divider"),
(T('Assessments'), False, None),
(T('History'), False, None),
(T('Join a Class'), False, None)
]

where the DIV is added with the class to style it nicely, in which in my 
css file I added:

div.dropdown-menu div.dropdown-divider { width: 100%; height: 4px; margin: 
3px 0px; background-color: #f0c36d; }

and it works perfectly and looks beautifully.  thanx to mweissen his 
suggestion, it worked pretty well also.

qed, lucas


-- 
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: Web3py

2019-04-12 Thread Kevin Keller
Any thoughts on merging / collaborating with weppy?

http://weppy.org/

Uses web2py dal and yatl..
and has some nifty things to make queries and modelling easier..



On Fri, Apr 12, 2019 at 6:03 AM Massimo Di Pierro <
massimo.dipie...@gmail.com> wrote:

> There is a lot to do but at this point it is moving fast and a one way
> street.
>
> On Thursday, 11 April 2019 10:31:29 UTC-7, En Ware wrote:
>>
>> I git installed web3py and quite enjoy it. I see its updated regular too.
>>
>> For those who don't know and maybe this is common sense , not sure.
>>
>> once you *git clone https://github.com/web2py/web3py.git
>>   *do a *git pull*
>>
>> 2. reinstall requirements.txt (*pip3 install -r requirements.txt*)
>>  - Changes:  module "reloader" was added
>>
>> 3. Launch web3py (should work just fine now)
>>
>> * python3 web3py.py applications/todo/*
>>
>> 4. open browser and type: * localhost:8000 or 127.0.0.1:8000
>> /todo/index*
>>
>> --
> 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.
>

-- 
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] Sorting a Rows object by a particular field

2019-04-12 Thread Dave S
Pro tip:  do not call your controller function "sorted".

Getting past that, I have a Rows object (call it "rowed") that I've created 
from munching through the results of a select().  (Why?  because for 
presentation reasons, I do an aggregation with custom logic.)  In the past, 
ordering was done by the select and "inherited" by rowed.  Now I want the 
option of sorting rowed by a different field (the aggregated count).  If I 
do 
  rowed.records = sorted(rowed.records,key=lambda r: r.NumAdded)
everything is fine.  But if I do
rowed.sort(lambda r: r["NumAdded"])
or
rowed.records.sort(lambda r: ["NumAdded"])
I don't get what I want.  The first doesn't seem to change the ordering, 
and the second raises heck^W an exception
(() takes exactly 1 argument (2 given))

In the ticket, rowed.records looks like 
[, , ]

and r like


These suggest that my lambda is getting passed something other than what's 
in the curly braces above.  What would be the correct way to write the 
lambda (which would right the ship)?

[OT:  I think Opera mucks up the GG formatting controls; I may edit this in 
FF or Chrome tomorrow]

PS:  thanks again to Anthony for previous help with cmp/key issues.

Dave S
/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.


Re: [web2py] Re: 2.18.5 LI(_class="dropdown-divider") bug?

2019-04-12 Thread Martin Weissenboeck
Try this code:

response.menu = [
[T('Lectures'), False, URL('default', 'subjects'), []],
[T('Students'), False, URL('main', 'students'), []],
[T('Professors'), False, URL('main', 'professors'), []],
[T('Blog'), False, URL('default', 'blog')],
[T('News'), False, URL('default', 'news')]
]

if auth.is_logged_in():
response.menu[1] = [T('Student:'), False, None, []]
response.menu[1][3].append((T('Dashboard'), False, URL('main',
'students')))
response.menu[1][3].append((A('---', _class="divider"), False, None))
response.menu[1][3].append((T('Assessments'), False, None))
response.menu[1][3].append((T('History'), False, None))
response.menu[1][3].append((T('Join a Class'), False, None))

Regards Martin



Am Fr., 12. Apr. 2019 um 03:34 Uhr schrieb 黄祥 :

> Also, instead of the code below, why not just:
>>
>> response.menu[1][3] = [
>> (T('Dashboard'), False, URL('main', 'students')),
>> ...
>> ]
>>
>> Anthony
>>
>
> try this from working old app in recent web2py version
> *models/menu.py*
> response.menu = [
> (T('Report'), False, URL('report', 'index'), [
> (T('Purchase Order'), False, URL('report', 'report_purchase_order'), []),
> LI(_class = "divider"), *# any solution rather than comment the #LI()*
> (T('Sale Order'), False, URL('report', 'report_sale_order'), []),
> ]),
> ]
>
> *ended with*
> web2py™ Version 2.18.5-stable+timestamp.2019.04.08.04.22.03
> Python Python 3.7.3:
> /Users/sugizo/miniconda3/envs/python3_test/bin/python (prefix:
> /Users/sugizo/miniconda3/envs/python3_test)Traceback
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
>
> Traceback (most recent call last):
>   File "/Users/sugizo/project/python/web2py/gluon/restricted.py", line 219, 
> in restricted
> exec(ccode, environment)
>   File 
> "/Users/sugizo/project/python/web2py/applications/co/views/default/index.html",
>  line 60, in 
> 
>   File "/Users/sugizo/project/python/web2py/gluon/html.py", line 807, in 
> __getitem__
> return self.components[i]
> IndexError: list index out of range
>
>
> any suggestion?
>
> thanks and 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.
>


-- 
Mit freundlichen Grüßen / With kind regards
Martin Weissenböck
Gregor-Mendel-Str. 37, 1190 Wien
Austria / European Union

-- 
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 2.18.5 is OUT

2019-04-12 Thread 黄祥
it's work, no error in web2py app, my bad, it's just about configuration 
migrate_enabled=*True *(in dev environment), already change before but 
forgot the value of Appconfig(reload=*False*), correct one is *True*, 
because it's in dev environment, in production environment run well, 
because the database and table already setup.

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.