[web2py] Re: calling secured function from cron

2010-06-29 Thread mika
I have following line in crontab:
* * * * *   root *cpe_lang/test_only

the function in controller is defined as:

@auth.requires( (request.client==None) or
(auth.has_membership('managers')) )
def test_only():
logging.error('Test cron')
logging.info(str(request))
if request.client != None:
logging.info('from user')
else:
logging.info('from cron')


Function is NOT executed.
and that is traceback:

Traceback (most recent call last):
  File "web2py.py", line 20, in 
gluon.widget.start(cron=True)
  File "/myapp/web2py/gluon/widget.py", line 759, in start
import_models=options.import_models, startfile=options.run)
  File "/myapp/web2py/gluon/shell.py", line 174, in run
exec ('print %s()' % f, _env)
  File "", line 1, in 
  File "/myapp/web2py/gluon/tools.py", line 2116, in f
'?_next='+urllib.quote(next))
  File "/myapp/web2py/gluon/http.py", line 104, in redirect
Location=location)
gluon.http.HTTP



I can only execute the function it by hand. I was also trying to do it
with curl from cron

* * * * * /usr/bin/curl -u manager_user:my_pass
http://127.0.0.1:8000/my_app/cpe_lang/test_only

but i get the error:

Exception in thread Thread-19:
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/threading.py", line 460, in __bootstrap
self.run()
  File "/Users/msh/c_workspace/sara_refactor/web2py/gluon/newcron.py",
line 206, in run
shell=self.shell)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/subprocess.py", line 593, in __init__
errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/subprocess.py", line 1079, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

why No such file or directory?
I am sure curl is in that location.




[web2py] Issues with sessions on multiple tabs/windows

2010-06-29 Thread Jason Brower
I have a robot that is running on web2py.  It has it's main operating
screen and a screen specifically for debugging and other information.  I
have the main screen that pulls a page that reports the very general
status information, and when that screen is requested about 20 different
session variables are reset to up to date information.  this information
is found from a file that it reads and unpickles.  When I try to get the
debug screen to see all the information it comes as if the session was
not even created.  None I have the debug and the main robot running
screen on the same computer and they are in the same web2py application.
What could I be doing wrong?  Should I pull from the same file twice one
for the status page on the robot opporation part and then pull again for
the debug screen?
Very confuse,
Jason Brower




Re: [web2py] do you use web2py for teaching?

2010-06-29 Thread Mariano Reingart
On Mon, Jun 28, 2010 at 7:22 PM, mdipierro  wrote:
> Please post some info about the class or drop me a private note.

We're teaching web2py for the final year Computer Science (BSc)
project (since 2009):
http://reingart.blogspot.com/p/materia-edi-3.html

Also I taught web2py at:
 * Programming in Python course (incluiding web2py for web
development) 2009, 2010 coming soon:
http://www.clubdeprogramadores.com/cursos/CursoMuestra.php?Id=519
 * GNU/Linux + PostgreSQL+ Python (web2py) course for a StartUp in
Rafaela-SF, 2009
(no public page remains)

Sorry, all is in spanish, I have more detailed documents if you want

Best regards,

Mariano Reingart
http://www.web2py.com.ar
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com


[web2py] Re: calling secured function from cron

2010-06-29 Thread mdipierro
Please add a

logging.info(str(request.client))

Outside the function, in a model.

On 29 Giu, 04:41, mika  wrote:
> I have following line in crontab:
> * * * * *               root *cpe_lang/test_only
>
> the function in controller is defined as:
>
> @auth.requires( (request.client==None) or
> (auth.has_membership('managers')) )
> def test_only():
>     logging.error('Test cron')
>     logging.info(str(request))
>     if request.client != None:
>         logging.info('from user')
>     else:
>         logging.info('from cron')
>
> Function is NOT executed.
> and that is traceback:
>
> Traceback (most recent call last):
>   File "web2py.py", line 20, in 
>     gluon.widget.start(cron=True)
>   File "/myapp/web2py/gluon/widget.py", line 759, in start
>     import_models=options.import_models, startfile=options.run)
>   File "/myapp/web2py/gluon/shell.py", line 174, in run
>     exec ('print %s()' % f, _env)
>   File "", line 1, in 
>   File "/myapp/web2py/gluon/tools.py", line 2116, in f
>     '?_next='+urllib.quote(next))
>   File "/myapp/web2py/gluon/http.py", line 104, in redirect
>     Location=location)
> gluon.http.HTTP
>
> I can only execute the function it by hand. I was also trying to do it
> with curl from cron
>
> * * * * * /usr/bin/curl -u 
> manager_user:my_passhttp://127.0.0.1:8000/my_app/cpe_lang/test_only
>
> but i get the error:
>
> Exception in thread Thread-19:
> Traceback (most recent call last):
>   File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/threading.py", line 460, in __bootstrap
>     self.run()
>   File "/Users/msh/c_workspace/sara_refactor/web2py/gluon/newcron.py",
> line 206, in run
>     shell=self.shell)
>   File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/subprocess.py", line 593, in __init__
>     errread, errwrite)
>   File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/subprocess.py", line 1079, in _execute_child
>     raise child_exception
> OSError: [Errno 2] No such file or directory
>
> why No such file or directory?
> I am sure curl is in that location.


[web2py] Re: Issues with sessions on multiple tabs/windows

2010-06-29 Thread mdipierro
I cannot say without more details. Just consider that if you have two
windows open they share the same session variables.

On 29 Giu, 04:46, Jason Brower  wrote:
> I have a robot that is running on web2py.  It has it's main operating
> screen and a screen specifically for debugging and other information.  I
> have the main screen that pulls a page that reports the very general
> status information, and when that screen is requested about 20 different
> session variables are reset to up to date information.  this information
> is found from a file that it reads and unpickles.  When I try to get the
> debug screen to see all the information it comes as if the session was
> not even created.  None I have the debug and the main robot running
> screen on the same computer and they are in the same web2py application.
> What could I be doing wrong?  Should I pull from the same file twice one
> for the status page on the robot opporation part and then pull again for
> the debug screen?
> Very confuse,
> Jason Brower


[web2py] Re: synchronize tables in two databases

2010-06-29 Thread rochacbruno
I found a person who wants the same

http://www.freelancer.com/projects/pingfreelance_566941.html

This person is willing to pay for development of a tool to generate
the reverse schema, from Database for Web2py. May be a good chance for
any experienced web2py programmer develop and then release to the
community.


On Jun 28, 11:25 pm, rochacbruno  wrote:
> Would be great if we have a tool to automate
> reverse DBTables mapping to web2py models!
>
> --
> rochacbruno.com.br
>
> On Jun 28, 7:17 pm, mdipierro  wrote:
>
>
>
> > On 28 Giu, 15:18, Avik Basu  wrote:
>
> > > My problem is that I have some different tables in each of the
> > > databases which is why I could not use the db export/import
> > > functions.  Also, I am not defining tables in db2 as those tables
> > > already exist and have data in them. Am I still able to access the
> > > database function if i have not defined any tables for it in the
> > > model?
>
> > No. You have to define table tables you want to use since it is
> > necessary map database types into web2py types. You do not need to
> > define all fields, only those you plan to access. Set migrate=False.
>
> > > Avik
>
> > > On Jun 28, 4:06 pm, mdipierro  wrote:
>
> > > > import cStringIO
> > > > s=cStringIO.StringIO()
>
> > > > after the same tables are defined for both dbs:
>
> > > > db2.export_to_csv_file(s)
> > > > s.seek(0)
> > > > db1.import_form_csv_file(s)
>
> > > > On 28 Giu, 13:25, Avik Basu  wrote:
>
> > > > > Hi,
>
> > > > > I'm trying to synchronize two databases that are similar but not
> > > > > exactly the same.  I would like to create two connections (db1 and
> > > > > db2) and go through table by table to do the synchronization.
>
> > > > > db1 = DAL('sqlite://storage.db')
> > > > > db2 = DAL('mysql://username:passw...@mysql.test.com/test_db',
> > > > > pool_size=10, check_reserved=['mysql'], migrate=False,
> > > > > fake_migrate=False)
>
> > > > > db1 is defined in db.py while db2 is a mysql database (created via
> > > > > web2py) that already exists and has data in it.  i'm trying to update
> > > > > the data in db2 with the data in db1.  What is a good way to deal with
> > > > > this problem?
>
> > > > > Avik


[web2py] Re: synchronize tables in two databases

2010-06-29 Thread mdipierro
http://groups.google.com/group/web2py/browse_thread/thread/c347e86a6644432a/c1c7126c1b14600d?lnk=gst&q=Script+to+generate+schema#c1c7126c1b14600d

On 29 Giu, 07:42, rochacbruno  wrote:
> I found a person who wants the same
>
> http://www.freelancer.com/projects/pingfreelance_566941.html
>
> This person is willing to pay for development of a tool to generate
> the reverse schema, from Database for Web2py. May be a good chance for
> any experienced web2py programmer develop and then release to the
> community.
>
> On Jun 28, 11:25 pm, rochacbruno  wrote:
>
> > Would be great if we have a tool to automate
> > reverse DBTables mapping to web2py models!
>
> > --
> > rochacbruno.com.br
>
> > On Jun 28, 7:17 pm, mdipierro  wrote:
>
> > > On 28 Giu, 15:18, Avik Basu  wrote:
>
> > > > My problem is that I have some different tables in each of the
> > > > databases which is why I could not use the db export/import
> > > > functions.  Also, I am not defining tables in db2 as those tables
> > > > already exist and have data in them. Am I still able to access the
> > > > database function if i have not defined any tables for it in the
> > > > model?
>
> > > No. You have to define table tables you want to use since it is
> > > necessary map database types into web2py types. You do not need to
> > > define all fields, only those you plan to access. Set migrate=False.
>
> > > > Avik
>
> > > > On Jun 28, 4:06 pm, mdipierro  wrote:
>
> > > > > import cStringIO
> > > > > s=cStringIO.StringIO()
>
> > > > > after the same tables are defined for both dbs:
>
> > > > > db2.export_to_csv_file(s)
> > > > > s.seek(0)
> > > > > db1.import_form_csv_file(s)
>
> > > > > On 28 Giu, 13:25, Avik Basu  wrote:
>
> > > > > > Hi,
>
> > > > > > I'm trying to synchronize two databases that are similar but not
> > > > > > exactly the same.  I would like to create two connections (db1 and
> > > > > > db2) and go through table by table to do the synchronization.
>
> > > > > > db1 = DAL('sqlite://storage.db')
> > > > > > db2 = DAL('mysql://username:passw...@mysql.test.com/test_db',
> > > > > > pool_size=10, check_reserved=['mysql'], migrate=False,
> > > > > > fake_migrate=False)
>
> > > > > > db1 is defined in db.py while db2 is a mysql database (created via
> > > > > > web2py) that already exists and has data in it.  i'm trying to 
> > > > > > update
> > > > > > the data in db2 with the data in db1.  What is a good way to deal 
> > > > > > with
> > > > > > this problem?
>
> > > > > > Avik


[web2py] Re: do you use web2py for teaching?

2010-06-29 Thread rochacbruno
I understood that your question was referring to the use of web2py as
a tool for teaching programming and web development (In educational
institutions,, Universities etc). In these cases I never used, but...

I Also did some private classes, and right now I am training 5 IT
professionals of São Paulo Prefecture who intends to start using
web2py for internal tools development.

Like Álvaro, I was invited to an 8 hours hands on training about web
development with web2py, Alvaro will teach in Rio and I'll do in São
Paulo.

We are preparing a basic portuguese course book, that we intend to
release under creative commons, because we have to use the same course
material for both locations.

more info (in portuguese ):
http://softwarelivre.org/portal/desenvolvimento-web-agil-com-python-e-web2py-treinamento-mao-na-massa

Translated description:

Invited by Tempo Real Events  , a
company operating for over five years providing training, conferences,
seminars, workshops and tutorials Hands on, having already served
about 15 thousand professionals, Álvaro Justen   and I   delivers the
hands-on training - Agile Web Development with Python and web2py - I
will be responsible for Sao Paulo classes and he by the students of
Rio de Janeiro.

The training is divided into two modules, Basic and Advanced, and the
target audience is Web developers, programmers and web designers
looking for a tool for agile development, dynamic, safe and easy to
use.

For the basic module, you must have basic knowledge of HTML and
programming logic (any language). To study the advanced module, it is
advisable that the applicant has participated in the first module, or
have equivalent knowledge, and have basic knowledge in Python
language.

The training modules will have a book and will be developed a fully
functional web application.
Addressed to various issues related to Web development as MVC,
sessions, authentication and authorization, internationalization,
deploy, Google App Engine, among others. Moreover, everything will be
based on free software with Ubuntu 10.04.

{{ }}'s

On Jun 28, 7:22 pm, mdipierro  wrote:
> Please post some info about the class or drop me a private note.


[web2py] Re: Anybody having trouble accessing web2py google group on mozilla firefox 3.6.6?

2010-06-29 Thread Richard
thanks for tip - I also faced the same problem with FF when on
Windows.


On Jun 29, 2:34 am, Thadeus Burgess  wrote:
> try logging completely out of your google account, clearing firefox
> cookies, closing firefox, then start again.
> --
> Thadeus
>
>
>
> On Mon, Jun 28, 2010 at 10:32 AM, weheh  wrote:
> > I'm able to access the web2py group no problem on IE (ugh). But
> > starting just recently, on Mozilla, I'm getting stuck in an infinite
> > loop. The tab displays, "Redirecting" constantly. The URL is:
>
> >https://www.google.com/accounts/ServiceLogin?service=groups2&passive=...
>
> > Anybody else run into this problem?


[web2py] Web2py Application Exhibition Part 2

2010-06-29 Thread NetAdmin
Web2py Application Exhibition

Do you have a Web2py app that you'd like to show the world?
If so, you may be interested in the Web2py Application Exhibition.

The WAE is a way to...
1. Demonstrate what can be done with Web2py.
2. Share and learn about useful web2py, python, Javascript, jQuery
etc. techniques.
3. Earn some money toward that new  you've been craving.

Projects will be judged in the following areas.

Ease of use
Usefulness
Visual Appeal

The Rules
1. Applications must be submitted no later than July 30, 2010

2. Source must be included with your submissions.

3. If the application is written by a team, Massimo can NOT be
part of the team.

4. After a 2 week review period, on August 15, 2010, the
winners will be announced on the web2py-users list.

5. The 1st place winner will receive $100 US Dollars,
2nd place will receive $50

6. You must enjoy using Web2py!

Massimo is not affiliated with this exhibition, ( maybe he'll help
judge if I can twist his arm ) so, if you have any questions or
comments, I can be contacted on gmail

If the google-groups hides my contact info, you can
find it at http://bithawk.org


mr.netadadmin


[web2py] web2py with AppStats

2010-06-29 Thread PanosJee
if you are on GAE it s to have AppStats on
it s quite easy
http://blog.socialcaddy.com/appstats-for-web2py-0


Re: [web2py] Re: elFinder-web2py , Filemanager for Web2py!

2010-06-29 Thread Phyo Arkar
Let me know where it dont work.
I am suprised too :D may be for security issues?

On Fri, Jun 25, 2010 at 4:30 PM, Giuseppe Luca Scrofani  wrote:

> Even following your indication I can't make it work :( I will retry
> after dinner. I am surprised of how this project seems not interesting
> to the others... It is very strange, In my humble, I think this have
> to be shipped by default in web2py...
>


[web2py] models for auth system

2010-06-29 Thread Jean-Guy

Hello,

Where can I find the models of auth tables? Are they stored somewhere in 
the web2py tree?


Jonhy


[web2py] format of fk field

2010-06-29 Thread Jean-Guy

Hello,

I know there is a way to show an other field value
of the same row for a fk field. Is that correct?

How to do it?

This work in case of m2m table :

If you check in appadmin in membership table the group_id are replaced 
by the role of the auth_group table...


I there a way to do the same thing for table containing many fields and fk?

Can't find the code to do that... Should be in the model of the auth_ 
tables...


Jonhy


[web2py] Re: models for auth system

2010-06-29 Thread Chris S
Gluon/tools.py

You'll find the Auth class in there.  In auth is defin_tables() where
you'll see the default tables.  You'll notice it only defines the
defualts if you haven't specified a custom table in it's place.
That's where I looked to figure out how to define custom fields in the
Auth table.

Hope that's what you're looking for.


On Jun 29, 1:19 pm, Jean-Guy  wrote:
> Hello,
>
> Where can I find the models of auth tables? Are they stored somewhere in
> the web2py tree?
>
> Jonhy


[web2py] sql.py error?

2010-06-29 Thread Chris S
I think the most recent update to trunk I've found a spot in sql.py
where functionality is different though it might be intended.

In the last stable release you could make a call:
auth.add_permission(group.id,'name','table_name')

You could do this with out first checking for it's existence already.
A new entry was created and no errors thrown.
Now if you try to do the above call and that same permission is
already defined you get:
--New Error
raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
SyntaxError: Object exists and cannot be redefined: _last_reference
--/New Error

While it's good that this points out that I wasn't checking for these
permissions before, it's bad that you find out by an error which
didn't previously exist.

I can wrap my add_permission calls in a try: block, or i could check
for the permission before adding.  But is that something that should
just be included in web2py by default?  It's how I assumed it worked
originally :)


Re: [web2py] Re: models for auth system

2010-06-29 Thread Jean-Guy

On 2010-06-29 14:30, Chris S wrote:

  that's what you're looking for.

   

Yes!

Thank Chris.


[web2py] Re: sql.py error?

2010-06-29 Thread Chris S
Actually, that's not exactly what's happening.

The error is produced when trying to make two calls back to back to
auth.add_permission().
Single calls still create duplicate enteries but back to back calls
error on the 2nd call never creating an entry.

To reproduce:
def test():
auth.add_permission(id,'name','table1')
auth.add_permission(id,'name','table1')
return

Either one of the above can be run by itself, but both in the same
controller will fail with the above error on the 2nd permission.

On Jun 29, 1:35 pm, Chris S  wrote:
> I think the most recent update to trunk I've found a spot in sql.py
> where functionality is different though it might be intended.
>
> In the last stable release you could make a call:
> auth.add_permission(group.id,'name','table_name')
>
> You could do this with out first checking for it's existence already.
> A new entry was created and no errors thrown.
> Now if you try to do the above call and that same permission is
> already defined you get:
> --New Error
> raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> SyntaxError: Object exists and cannot be redefined: _last_reference
> --/New Error
>
> While it's good that this points out that I wasn't checking for these
> permissions before, it's bad that you find out by an error which
> didn't previously exist.
>
> I can wrap my add_permission calls in a try: block, or i could check
> for the permission before adding.  But is that something that should
> just be included in web2py by default?  It's how I assumed it worked
> originally :)


[web2py] Re: sql.py error?

2010-06-29 Thread Chris S
Crap that should read:

To reproduce:
def test():
auth.add_permission(id,'name','table1')
auth.add_permission(id,'name','table2')
return

I'm trying to assign two different permissions to the same group in a
single function to get the error.


On Jun 29, 2:11 pm, Chris S  wrote:
> Actually, that's not exactly what's happening.
>
> The error is produced when trying to make two calls back to back to
> auth.add_permission().
> Single calls still create duplicate enteries but back to back calls
> error on the 2nd call never creating an entry.
>
> To reproduce:
> def test():
>     auth.add_permission(id,'name','table1')
>     auth.add_permission(id,'name','table1')
> return
>
> Either one of the above can be run by itself, but both in the same
> controller will fail with the above error on the 2nd permission.
>
> On Jun 29, 1:35 pm, Chris S  wrote:
>
> > I think the most recent update to trunk I've found a spot in sql.py
> > where functionality is different though it might be intended.
>
> > In the last stable release you could make a call:
> > auth.add_permission(group.id,'name','table_name')
>
> > You could do this with out first checking for it's existence already.
> > A new entry was created and no errors thrown.
> > Now if you try to do the above call and that same permission is
> > already defined you get:
> > --New Error
> > raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> > SyntaxError: Object exists and cannot be redefined: _last_reference
> > --/New Error
>
> > While it's good that this points out that I wasn't checking for these
> > permissions before, it's bad that you find out by an error which
> > didn't previously exist.
>
> > I can wrap my add_permission calls in a try: block, or i could check
> > for the permission before adding.  But is that something that should
> > just be included in web2py by default?  It's how I assumed it worked
> > originally :)
>
>


[web2py] web2py security - keep it up!

2010-06-29 Thread Craig Younkins
Hello there! My name is Craig Younkins. I'm a summer intern at OWASP,
the Open Web Application Security Project. This summer I'm working
heavily on web security in Python.

First, I would like to praise Dr. Di Pierro and all the web2py
contributors for their focus on security. Examining the OWASP Top 10
(http://www.web2py.com/examples/default/security) is a great way to
start. Keep it up!

Second, I'd like to invite the web2py community over to a site I've
started about security in Python - http://www.pythonsecurity.org . The
site aims to be the central hub for security in Python, and right now
has a focus on web security. Inside there are articles specific to
software like frameworks as well as articles related to security
topics like cross-site scripting. We also have a Google Group (http://
groups.google.com/group/python-security/topics) which I encourage the
developers to join. There you can get answers to your Python security
questions. I hope you check it out!

Lastly, I'd like to encourage you to take a look at web2py's page on
PythonSecurity.org - http://www.pythonsecurity.org/wiki/web2py/ . I
haven't had the time yet to examine web2py in detail, but on that page
there is a pretty well-defined template of questions to be answered.
Going through the list there will help the developers see areas in
web2py that could use improvement, as well as documenting the
strengths for other frameworks to model off of.

Thanks!

Craig Younkins


[web2py] Re: sql.py error?

2010-06-29 Thread Yarko Tymciurak
can you give a complete example necessary to reproduce?

Alternatively, you can debug yourself:  set a breakpoint at gluon/
tools.py::Auth:add_permission()

and analyze what's going on...

- Yarko

On Jun 29, 2:13 pm, Chris S  wrote:
> Crap that should read:
>
> To reproduce:
> def test():
>     auth.add_permission(id,'name','table1')
>     auth.add_permission(id,'name','table2')
> return
>
> I'm trying to assign two different permissions to the same group in a
> single function to get the error.
>
> On Jun 29, 2:11 pm, Chris S  wrote:
>
> > Actually, that's not exactly what's happening.
>
> > The error is produced when trying to make two calls back to back to
> > auth.add_permission().
> > Single calls still create duplicate enteries but back to back calls
> > error on the 2nd call never creating an entry.
>
> > To reproduce:
> > def test():
> >     auth.add_permission(id,'name','table1')
> >     auth.add_permission(id,'name','table1')
> > return
>
> > Either one of the above can be run by itself, but both in the same
> > controller will fail with the above error on the 2nd permission.
>
> > On Jun 29, 1:35 pm, Chris S  wrote:
>
> > > I think the most recent update to trunk I've found a spot in sql.py
> > > where functionality is different though it might be intended.
>
> > > In the last stable release you could make a call:
> > > auth.add_permission(group.id,'name','table_name')
>
> > > You could do this with out first checking for it's existence already.
> > > A new entry was created and no errors thrown.
> > > Now if you try to do the above call and that same permission is
> > > already defined you get:
> > > --New Error
> > > raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> > > SyntaxError: Object exists and cannot be redefined: _last_reference
> > > --/New Error
>
> > > While it's good that this points out that I wasn't checking for these
> > > permissions before, it's bad that you find out by an error which
> > > didn't previously exist.
>
> > > I can wrap my add_permission calls in a try: block, or i could check
> > > for the permission before adding.  But is that something that should
> > > just be included in web2py by default?  It's how I assumed it worked
> > > originally :)


[web2py] Re: sql.py error?

2010-06-29 Thread Chris S
I'm actually not sure how to set break points.  I'm using Eclipse so
I'm sure there's a way but while I'm educating myself.  Here's all you
should need to know if the above isn't descriptive enough.

In db.py:
auth = Auth(globals(),db)   # authentication/authorization
auth.define_tables()# creates all needed tables


Using Appadmin
-Add a user to auth_users
-Create group 'admin' in auth_groups
-Make the user a member of admin in auth_memberships

In the application:
def add():
"""
Debug Function
"""
group=db(db.auth_group.role=='admin').select()[0]
auth.add_permission(group.id,'access','mystuff')
auth.add_permission(group.id,'access','myotherstuff')
redirect(URL(request.application,request.controller,'index'))

Call /application/controller/add
In appadmin view the auth_permissions table.
You should see two entries
one with the group.id for Admin, access, and table of 'mystuff'.
one with the group.id for Admin, access, and table of 'myotherstuff'.

Instead you'll get the above error and only "mystuff" is added to the
auth_permissions.
You can comment out either line and add them one at a time with no
errors.  In fact you can add the same permission several times and
you'll see duplicate enteries.  You can not however, have both of the
above added in a single function call.  This use to work but no longer
does.  When I get some time maybe I can test which revision broke this
but my guess is it's 650:7c531beb7820 with comment
"self._last_reference, thanks Dave".

Sorry I'm not more help. Wish I could just patch this but I'm still
learning python/web2py and this one's a bit above me.


On Jun 29, 3:01 pm, Yarko Tymciurak 
wrote:
> can you give a complete example necessary to reproduce?
>
> Alternatively, you can debug yourself:  set a breakpoint at gluon/
> tools.py::Auth:add_permission()
>
> and analyze what's going on...
>
> - Yarko
>
> On Jun 29, 2:13 pm, Chris S  wrote:
>
> > Crap that should read:
>
> > To reproduce:
> > def test():
> >     auth.add_permission(id,'name','table1')
> >     auth.add_permission(id,'name','table2')
> > return
>
> > I'm trying to assign two different permissions to the same group in a
> > single function to get the error.
>
> > On Jun 29, 2:11 pm, Chris S  wrote:
>
> > > Actually, that's not exactly what's happening.
>
> > > The error is produced when trying to make two calls back to back to
> > > auth.add_permission().
> > > Single calls still create duplicate enteries but back to back calls
> > > error on the 2nd call never creating an entry.
>
> > > To reproduce:
> > > def test():
> > >     auth.add_permission(id,'name','table1')
> > >     auth.add_permission(id,'name','table1')
> > > return
>
> > > Either one of the above can be run by itself, but both in the same
> > > controller will fail with the above error on the 2nd permission.
>
> > > On Jun 29, 1:35 pm, Chris S  wrote:
>
> > > > I think the most recent update to trunk I've found a spot in sql.py
> > > > where functionality is different though it might be intended.
>
> > > > In the last stable release you could make a call:
> > > > auth.add_permission(group.id,'name','table_name')
>
> > > > You could do this with out first checking for it's existence already.
> > > > A new entry was created and no errors thrown.
> > > > Now if you try to do the above call and that same permission is
> > > > already defined you get:
> > > > --New Error
> > > > raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> > > > SyntaxError: Object exists and cannot be redefined: _last_reference
> > > > --/New Error
>
> > > > While it's good that this points out that I wasn't checking for these
> > > > permissions before, it's bad that you find out by an error which
> > > > didn't previously exist.
>
> > > > I can wrap my add_permission calls in a try: block, or i could check
> > > > for the permission before adding.  But is that something that should
> > > > just be included in web2py by default?  It's how I assumed it worked
> > > > originally :)
>
>


[web2py] built in web2py datepicker bug with Google Chrome

2010-06-29 Thread Jean-Guy

Hello,

Is there other user that are having datepicker coming blank when 
changing the year or mouth couples of time with Google Chrome?


I test it with firefox no problem.

I use web2py 1.7.8

Jonhy


[web2py] Re: sql.py error?

2010-06-29 Thread Chris S
Narrowing it down.

I forgot to mention I'm running on the GAE development server right
now.  So the above error is likely with gql.py not sql.py.
I've reverted my copy of gql.py to 631:1f7ae1da46ff and the error is
now gone.  The problem is with Line Number 279:

 Original -
tmp = self._tableobj(**fields)
tmp.put()
/Original -
 New --
tmp = self._tableobj(**fields)
self._last_reference = tmp
tmp.put()
/New --

There it is now someone smarter than me can figure out why that line's
causing a problem when trying to add more than one permission in a
single function call.



On Jun 29, 3:27 pm, Chris S  wrote:
> I'm actually not sure how to set break points.  I'm using Eclipse so
> I'm sure there's a way but while I'm educating myself.  Here's all you
> should need to know if the above isn't descriptive enough.
>
> In db.py:
> auth = Auth(globals(),db)           # authentication/authorization
> auth.define_tables()                # creates all needed tables
>
> Using Appadmin
> -Add a user to auth_users
> -Create group 'admin' in auth_groups
> -Make the user a member of admin in auth_memberships
>
> In the application:
> def add():
>     """
>     Debug Function
>     """
>     group=db(db.auth_group.role=='admin').select()[0]
>     auth.add_permission(group.id,'access','mystuff')
>     auth.add_permission(group.id,'access','myotherstuff')
>     redirect(URL(request.application,request.controller,'index'))
>
> Call /application/controller/add
> In appadmin view the auth_permissions table.
> You should see two entries
> one with the group.id for Admin, access, and table of 'mystuff'.
> one with the group.id for Admin, access, and table of 'myotherstuff'.
>
> Instead you'll get the above error and only "mystuff" is added to the
> auth_permissions.
> You can comment out either line and add them one at a time with no
> errors.  In fact you can add the same permission several times and
> you'll see duplicate enteries.  You can not however, have both of the
> above added in a single function call.  This use to work but no longer
> does.  When I get some time maybe I can test which revision broke this
> but my guess is it's 650:7c531beb7820 with comment
> "self._last_reference, thanks Dave".
>
> Sorry I'm not more help. Wish I could just patch this but I'm still
> learning python/web2py and this one's a bit above me.
>
> On Jun 29, 3:01 pm, Yarko Tymciurak 
> wrote:
>
> > can you give a complete example necessary to reproduce?
>
> > Alternatively, you can debug yourself:  set a breakpoint at gluon/
> > tools.py::Auth:add_permission()
>
> > and analyze what's going on...
>
> > - Yarko
>
> > On Jun 29, 2:13 pm, Chris S  wrote:
>
> > > Crap that should read:
>
> > > To reproduce:
> > > def test():
> > >     auth.add_permission(id,'name','table1')
> > >     auth.add_permission(id,'name','table2')
> > > return
>
> > > I'm trying to assign two different permissions to the same group in a
> > > single function to get the error.
>
> > > On Jun 29, 2:11 pm, Chris S  wrote:
>
> > > > Actually, that's not exactly what's happening.
>
> > > > The error is produced when trying to make two calls back to back to
> > > > auth.add_permission().
> > > > Single calls still create duplicate enteries but back to back calls
> > > > error on the 2nd call never creating an entry.
>
> > > > To reproduce:
> > > > def test():
> > > >     auth.add_permission(id,'name','table1')
> > > >     auth.add_permission(id,'name','table1')
> > > > return
>
> > > > Either one of the above can be run by itself, but both in the same
> > > > controller will fail with the above error on the 2nd permission.
>
> > > > On Jun 29, 1:35 pm, Chris S  wrote:
>
> > > > > I think the most recent update to trunk I've found a spot in sql.py
> > > > > where functionality is different though it might be intended.
>
> > > > > In the last stable release you could make a call:
> > > > > auth.add_permission(group.id,'name','table_name')
>
> > > > > You could do this with out first checking for it's existence already.
> > > > > A new entry was created and no errors thrown.
> > > > > Now if you try to do the above call and that same permission is
> > > > > already defined you get:
> > > > > --New Error
> > > > > raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> > > > > SyntaxError: Object exists and cannot be redefined: _last_reference
> > > > > --/New Error
>
> > > > > While it's good that this points out that I wasn't checking for these
> > > > > permissions before, it's bad that you find out by an error which
> > > > > didn't previously exist.
>
> > > > > I can wrap my add_permission calls in a try: block, or i could check
> > > > > for the permission before adding.  But is that something that should
> > > > > just be included in web2py by default?  It's how I assumed it worked
> > > > > originally :)
>
>


Re: [web2py] facebook oauth support

2010-06-29 Thread Kuba Kucharski
hi, MCM

the web2py community is very much interested in facebook graphApi
intergration with web2py, can you make it plugin/model?
I use some graph api calls in my applications but it is simple token
exchange, no integration with app. but I know the subject, maybe I can
help.

thx for all your efforts


-- 
Kuba


[web2py] Re: facebook oauth support

2010-06-29 Thread howesc
there is also this:
http://web2pyslices.com/main/slices/take_slice/77

still not a plugin exactly, but it supports multiple authentication
types.

On Jun 29, 2:13 pm, Kuba Kucharski  wrote:
> hi, MCM
>
> the web2py community is very much interested in facebook graphApi
> intergration with web2py, can you make it plugin/model?
> I use some graph api calls in my applications but it is simple token
> exchange, no integration with app. but I know the subject, maybe I can
> help.
>
> thx for all your efforts
>
> --
> Kuba


Re: [web2py] Re: facebook oauth support

2010-06-29 Thread Kuba Kucharski
hey, howesc

If you could provide working application package w/o facebook keys of
course it would be neat because I did not manage to get your slice
fully working.

-- 
Kuba


[web2py] Re: web2py security - keep it up!

2010-06-29 Thread mdipierro
WOW. Thank you. I tried fill the blank but I need to read it again
tomorrow.

Massimo

On 29 Giu, 11:08, Craig Younkins  wrote:
> Hello there! My name is Craig Younkins. I'm a summer intern at OWASP,
> the Open Web Application Security Project. This summer I'm working
> heavily on web security in Python.
>
> First, I would like to praise Dr. Di Pierro and all the web2py
> contributors for their focus on security. Examining the OWASP Top 10
> (http://www.web2py.com/examples/default/security) is a great way to
> start. Keep it up!
>
> Second, I'd like to invite the web2py community over to a site I've
> started about security in Python -http://www.pythonsecurity.org. The
> site aims to be the central hub for security in Python, and right now
> has a focus on web security. Inside there are articles specific to
> software like frameworks as well as articles related to security
> topics like cross-site scripting. We also have a Google Group (http://
> groups.google.com/group/python-security/topics) which I encourage the
> developers to join. There you can get answers to your Python security
> questions. I hope you check it out!
>
> Lastly, I'd like to encourage you to take a look at web2py's page on
> PythonSecurity.org -http://www.pythonsecurity.org/wiki/web2py/. I
> haven't had the time yet to examine web2py in detail, but on that page
> there is a pretty well-defined template of questions to be answered.
> Going through the list there will help the developers see areas in
> web2py that could use improvement, as well as documenting the
> strengths for other frameworks to model off of.
>
> Thanks!
>
> Craig Younkins


Re: [web2py] Re: facebook oauth support

2010-06-29 Thread Kuba Kucharski
ok, maybe howesc!=cfhowes, sory ;) I thought it is yours.

-- 
Kuba


[web2py] Re: Problem trying to insert an image with CKEditor and SQLFORM

2010-06-29 Thread MikeEllis
This one still has me stumped so I'm taking the liberty of adding some
more info to make it current in the discussions.  As I noted in the
earlier post,  the problem has to to do with CKEditor's image
insertion dialog somehow triggering a form submission.  This is really
puzzling, because the link insertion dialog is nearly identical but
doesn't trigger a submit.  Below is a modified version of the index
function with some write statements to print the request vars and
session formkeys.

Any help much appreciated!

def index():
form = SQLFORM(db.page, showid=False,keepvalues=True)
sys.stderr.write("\n\nsession formkey:
%s"%session['_formkey[page_create]'])
sys.stderr.write("\nrequest.vars:%s"%repr(request.vars))
if form.accepts(request.vars,session):
response.flash = "Form accepted"
redirect(URL(r=request,f="show"))
elif form.errors:
response.flash = "Uh-oh!"
else:
response.flash = "Fill out the form"
sys.stderr.write("\n%s\n"%response.flash)
return dict(form=form)

So when I visit the index page and use the CKEditor to insert a link,
I see the following output in the console.

(initial display)
session formkey:bf5ec584-0ec9-4e74-90ff-ba53971ea2f5
request.vars:
Fill out the form

(after inserting link, clicking ok to insert dialog, then clicking
submit)
session formkey:f95327b1-6152-4fb3-abd2-00444c9cc298
request.vars:\r\n\thttp://web2py.com/
book/static/tree.jpg">link\r\n', '_formkey':
'f95327b1-6152-4fb3-abd2-00444c9cc298', '_formname': 'page_create'}>

If I try the same thing except that this time I insert an image,  I
get an extra submit and the session formkey gets out of sync with the
request.vars formkey.

(initial display)
session formkey:76e5e1fe-365c-401d-aaac-f2a751c8873e
request.vars:
Fill out the form

(after inserting image and clicking ok in dialog)
session formkey:a143b2f1-bc5c-41b0-90e6-ef01fdc8e913
request.vars:
Fill out the form

(after clicking Submit)
session formkey:9ee58f15-c1cd-4fa1-8766-b69b9a4478ac
request.vars:\r\n\t\r\n', '_formkey': 'a143b2f1-bc5c-41b0-90e6-ef01fdc8e913',
'_formname': 'page_create'}>
Fill out the form

The formkeys don't match, so form.accepts fails and the data never
gets into the table.

Thanks,
Mike


On Jun 21, 2:01 pm, Michael Ellis  wrote:
> Not sure if this is a web2py or ckeditor problem or just some
> misunderstanding on my part.  Here's what's happening:
>
> If I create a CKEditor instance in a SQLFORM, things work as expected until
> I try to insert an image. Clicking the Ok button in ckeditor's image dialog
> appears to be causing an immediate and unwanted form submission with a
> formkey that doesn't match the real formkey. This doesn't raise a form
> error. Instead it triggers the final else branch of the form.accepts logic
> (see below) and the image along with any other text that was entered is
> lost.
>
> I recently ran into this in a larger app, but am able to reproduce it in the
> following minimal model and controller. Has anyone else run into this and is
> there a workaround other than switching the CKEditor to Source mode and
> manually entering the  tag? I'm using web2py1.79.2 and CKEditor 3.3.1
> (revision 5586) but have also seen the problem in CKEditor 3.2.
>
> MODEL
> db.define_table('page',
>     Field('body', 'text'),
>     )
>
> def advanced_editor(field, value):
>     eid = str(field).replace('.','_')
>     return TEXTAREA(_id = eid, _name=field.name,
>                     _class='text ckeditor', value=value,
>                     _cols=80, _rows=10)
>
> db.page.body.widget = advanced_editor
>
> VIEW (default.py/index.html)
> {{extend 'layout.html'}}
> 

[web2py] Re: sql.py error?

2010-06-29 Thread mdipierro
I do not know but I made a change in trunk. Could you please try if it
fixes the problem?

On 29 Giu, 16:02, Chris S  wrote:
> Narrowing it down.
>
> I forgot to mention I'm running on the GAE development server right
> now.  So the above error is likely with gql.py not sql.py.
> I've reverted my copy of gql.py to 631:1f7ae1da46ff and the error is
> now gone.  The problem is with Line Number 279:
>
>  Original -
> tmp = self._tableobj(**fields)
> tmp.put()
> /Original -
>  New --
> tmp = self._tableobj(**fields)
> self._last_reference = tmp
> tmp.put()
> /New --
>
> There it is now someone smarter than me can figure out why that line's
> causing a problem when trying to add more than one permission in a
> single function call.
>
> On Jun 29, 3:27 pm, Chris S  wrote:
>
> > I'm actually not sure how to set break points.  I'm using Eclipse so
> > I'm sure there's a way but while I'm educating myself.  Here's all you
> > should need to know if the above isn't descriptive enough.
>
> > In db.py:
> > auth = Auth(globals(),db)           # authentication/authorization
> > auth.define_tables()                # creates all needed tables
>
> > Using Appadmin
> > -Add a user to auth_users
> > -Create group 'admin' in auth_groups
> > -Make the user a member of admin in auth_memberships
>
> > In the application:
> > def add():
> >     """
> >     Debug Function
> >     """
> >     group=db(db.auth_group.role=='admin').select()[0]
> >     auth.add_permission(group.id,'access','mystuff')
> >     auth.add_permission(group.id,'access','myotherstuff')
> >     redirect(URL(request.application,request.controller,'index'))
>
> > Call /application/controller/add
> > In appadmin view the auth_permissions table.
> > You should see two entries
> > one with the group.id for Admin, access, and table of 'mystuff'.
> > one with the group.id for Admin, access, and table of 'myotherstuff'.
>
> > Instead you'll get the above error and only "mystuff" is added to the
> > auth_permissions.
> > You can comment out either line and add them one at a time with no
> > errors.  In fact you can add the same permission several times and
> > you'll see duplicate enteries.  You can not however, have both of the
> > above added in a single function call.  This use to work but no longer
> > does.  When I get some time maybe I can test which revision broke this
> > but my guess is it's 650:7c531beb7820 with comment
> > "self._last_reference, thanks Dave".
>
> > Sorry I'm not more help. Wish I could just patch this but I'm still
> > learning python/web2py and this one's a bit above me.
>
> > On Jun 29, 3:01 pm, Yarko Tymciurak 
> > wrote:
>
> > > can you give a complete example necessary to reproduce?
>
> > > Alternatively, you can debug yourself:  set a breakpoint at gluon/
> > > tools.py::Auth:add_permission()
>
> > > and analyze what's going on...
>
> > > - Yarko
>
> > > On Jun 29, 2:13 pm, Chris S  wrote:
>
> > > > Crap that should read:
>
> > > > To reproduce:
> > > > def test():
> > > >     auth.add_permission(id,'name','table1')
> > > >     auth.add_permission(id,'name','table2')
> > > > return
>
> > > > I'm trying to assign two different permissions to the same group in a
> > > > single function to get the error.
>
> > > > On Jun 29, 2:11 pm, Chris S  wrote:
>
> > > > > Actually, that's not exactly what's happening.
>
> > > > > The error is produced when trying to make two calls back to back to
> > > > > auth.add_permission().
> > > > > Single calls still create duplicate enteries but back to back calls
> > > > > error on the 2nd call never creating an entry.
>
> > > > > To reproduce:
> > > > > def test():
> > > > >     auth.add_permission(id,'name','table1')
> > > > >     auth.add_permission(id,'name','table1')
> > > > > return
>
> > > > > Either one of the above can be run by itself, but both in the same
> > > > > controller will fail with the above error on the 2nd permission.
>
> > > > > On Jun 29, 1:35 pm, Chris S  wrote:
>
> > > > > > I think the most recent update to trunk I've found a spot in sql.py
> > > > > > where functionality is different though it might be intended.
>
> > > > > > In the last stable release you could make a call:
> > > > > > auth.add_permission(group.id,'name','table_name')
>
> > > > > > You could do this with out first checking for it's existence 
> > > > > > already.
> > > > > > A new entry was created and no errors thrown.
> > > > > > Now if you try to do the above call and that same permission is
> > > > > > already defined you get:
> > > > > > --New Error
> > > > > > raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> > > > > > SyntaxError: Object exists and cannot be redefined: _last_reference
> > > > > > --/New Error
>
> > > > > > While it's good that this points out that I wasn't checking for 
> > > > > > these
> > > > > > permissions before, it's bad that you find out by an error which
> > > > > > didn't previously exis

[web2py] RE: Problem trying to insert an image with CKEditor and SQLFORM

2010-06-29 Thread MikeEllis
Apologies for new post with same title but adding new info to the old
thread doesn't seem to be making it current in the discussions and I'm
really stuck trying to understand the problem.  Anyway the original
post plus some new info I added just is at

http://groups.google.com/group/web2py/browse_thread/thread/84c50617a1f30e19

Any help much appreciated!

Thanks,
Mike


[web2py] Re: GAE / Case sensitivity / canonical validator?

2010-06-29 Thread NickFranceschina
I'm not sure what the "like operator" has to do with this?

I guess what I'm talking about is using a validator to actually do the
work of an "autocompleted normalized field".   Much like the password
encryption validator.. or is_lower works... those validators actually
change the value of the field before storing it.  what I'm looking for
is a way to have a validator that will do an "IS_LOWER" on a different
field of the same record which would in essence BE a "hidden
autocomputed normalized field"

is there already a "hidden autocomputed normalized field"
functionality in Web2py?   could you point me towards it?


right now I have written separate code that computes the normalized/
canonical value and puts it in the other field... but I'd rather not
have this extra code at the app level... would be better to have it in
the model level so that it doesn't get overlooked by accident


Thanks!
-Nick Franceschina


On Jun 25, 5:38 pm, mdipierro  wrote:
> While it sould be easy to write such validator using the like
> operator, it would not be portable because it would not work on gae
> and would be slow in general. The preferred way is to use a hidden
> autocomputed normalized field.
>
> On Jun 25, 10:54 am, NickFranceschina 
> wrote:
>
>
>
> > Massimo,
>
> > just realized that GQL does not allow for LOWER() or UPPER()... thus
> > cannot do case-insensitive searches.  the generally suggested solution
> > is to create another field and store the canonical form of the string
> > you're trying to search
>
> > example:
> >   person.name = "Nick Franceschina"
> >   person.canonical = "nick franceschina"
>
> > would be nice to have a validator that could do this automatically...
> > it would work like the IS_LOWER() validator, but would look into
> > another field for the data... something like:
> >   Field('canonical', 'string', requires=CANONICAL('person.name'))
>
> > then I just put my data into "name" as I always do, and wouldn't have
> > to write special code to do the canonical field...
>
> > is there anything like this now, and I'm not seeing it?  i'll keep
> > looking...
>
> > Thanks,
> > -Nick Franceschina


[web2py] multiselect plugin from web2py slice

2010-06-29 Thread Jean-Guy

Hello,

I install multiselect plugin it works just fine...

http://web2pyslices.com/main/slices/take_slice/70

But I receive this error when I try to got on a record from the appadmin :

Error traceback

Traceback (most recent call last):
  File "/web2py/gluon/restricted.py", line 178, in restricted
exec ccode in environment
  File "/web2py/applications/app/controllers/appadmin.py", line 410, in 


  File "/web2py/gluon/globals.py", line 96, in 
self._caller = lambda f: f()
  File "/web2py/applications/app/controllers/appadmin.py", line 273, in 
update

f='download', args=request.args[:1]))
  File "/web2py/gluon/sqlhtml.py", line 688, in __init__
inp = field.widget(field, default)
  File "/web2py/applications/app/models/plugins.py", line 11, in 
multiselect_widget

inp = SQLFORM.widgets.options.widget(f,v)
  File "/web2py/gluon/sqlhtml.py", line 190, in widget
% field
SyntaxError: widget cannot determine options of atable.field1

Jonhy


[web2py] Accessing auth_user table

2010-06-29 Thread elfuego1
Hello,

On this page: http://web2pyslices.com/main/slices/take_slice/53 I have
found a great pice of code  which allows to check on the fly if there
is an exact value already in database.

Oryginal code:

def ajaxuserexist():
username = request.vars.values()[0]
query = db.users.name.like(username)
numres = db(query).count()
if numres > 0 :
return 'yes'

return 'no'


But when I try to implement the same solution on auth_user table for
login column it stops working:

query = db.auth_users.login.like(username)

Do you know some solution/workaround to this problem?

Best regards.


[web2py] Re: multiselect plugin from web2py slice

2010-06-29 Thread Jean-Guy

Work around that work actually is to define the widget in the controller :

move this from model to controller :
db.atable.field1.widget=multiselect_widget

Jonhy

On 2010-06-29 18:29, Jean-Guy wrote:

Hello,

I install multiselect plugin it works just fine...

http://web2pyslices.com/main/slices/take_slice/70

But I receive this error when I try to got on a record from the appadmin :

Error traceback

Traceback (most recent call last):
  File "/web2py/gluon/restricted.py", line 178, in restricted
exec ccode in environment
  File "/web2py/applications/app/controllers/appadmin.py", line 410, 
in 

  File "/web2py/gluon/globals.py", line 96, in 
self._caller = lambda f: f()
  File "/web2py/applications/app/controllers/appadmin.py", line 273, 
in update

f='download', args=request.args[:1]))
  File "/web2py/gluon/sqlhtml.py", line 688, in __init__
inp = field.widget(field, default)
  File "/web2py/applications/app/models/plugins.py", line 11, in 
multiselect_widget

inp = SQLFORM.widgets.options.widget(f,v)
  File "/web2py/gluon/sqlhtml.py", line 190, in widget
% field
SyntaxError: widget cannot determine options of atable.field1

Jonhy




[web2py] Many To Many Select

2010-06-29 Thread Al
Given a many-to-many relationship between table1 and table2 and a row
in table1, I am trying to figure out the fastest way to select all the
rows in table2 that are associated with the row. (I'm still trying to
pick up web2py, so thanks for everyone's patience if I've missed the
blatently obvious.)

>From the web2py book documentation, the best I can figure out is
something like this:
db.define_table('link_table',
  Field('table1', db.table1),
  Field('table2', db.table2)
  )

# Pick the row from table 1
r = db(db.table1.name == "Example").select()[0]

linked_view = db(db.table1.id == db.link_table.table1) & (db.table2.id
== db.linked_table.table2))

for row in linked_view(db.table1.id == r.id).select([fields from
table2 I want])
  # Do something clever for the matching rows I've found
  pass

But I keep thinking there ought to be something cleverer that I can
do, especially given that r has a set containing the rows of
link_table that contain the entries of table2 that I want. But I can't
figure out how to leverage that set into a shorter query.

Thanks,
Al




[web2py] Re: Many To Many Select

2010-06-29 Thread mdipierro
If I understand:

for row in db(db.link_table.table1==r.id)
(db.table2.id==db.linked_table.table2).select(db.table2.id,db.table2.other):
print row.id, row.other

if no double links else

sub=db(db.link_table.table1==r.id)._select(db.linked_table.table2)
for row in
db(db.table2.id.belongs(sub)).select(db.table2.id,db.table2.other):
print row.id, row.other


linked_view = db(db.table1.id == db.link_table.table1) & (db.table2.id
> == db.linked_table.table2))
>
> for row in linked_view(db.table1.id == r.id).select([fields from
> table2 I want])

On 29 Giu, 17:54, Al  wrote:
> Given a many-to-many relationship between table1 and table2 and a row
> in table1, I am trying to figure out the fastest way to select all the
> rows in table2 that are associated with the row. (I'm still trying to
> pick up web2py, so thanks for everyone's patience if I've missed the
> blatently obvious.)
>
> From the web2py book documentation, the best I can figure out is
> something like this:
> db.define_table('link_table',
>   Field('table1', db.table1),
>   Field('table2', db.table2)
>   )
>
> # Pick the row from table 1
> r = db(db.table1.name == "Example").select()[0]
>
> linked_view = db(db.table1.id == db.link_table.table1) & (db.table2.id
> == db.linked_table.table2))
>
> for row in linked_view(db.table1.id == r.id).select([fields from
> table2 I want])
>   # Do something clever for the matching rows I've found
>   pass
>
> But I keep thinking there ought to be something cleverer that I can
> do, especially given that r has a set containing the rows of
> link_table that contain the entries of table2 that I want. But I can't
> figure out how to leverage that set into a shorter query.
>
> Thanks,
> Al


[web2py] Re: Sending html emails [bug?]

2010-06-29 Thread Richard
I did some tests with trunk Mail on GAE:

mail.send(..., message=message)
-> Mail.send failure:May not set empty value for 'html'

mail.send(..., message=(None, message))
-> Mail.send failure:May not set empty value for 'body'

mail.send(..., message=(message, message))
-> sends email as HTML

Richard



On May 20, 1:22 am, mdipierro  wrote:
> I made a change that should allow attachments to work on GAE. Can you
> check it does not break the regularmailon GAE?
>
> On May 19, 8:00 am, mdipierro  wrote:
>
>
>
> > moving to trunk! Thanks. ;-)
>
> > On May 19, 7:53 am, PanosJee  wrote:
>
> > > Just fixed it
> > > tools.py 437
> > > result =mail.send_mail(sender=self.settings.sender, to=to,
> > >                                         subject=subject, body=text,
> > >html=html)
>
> > > On 19 Μάϊος, 15:43, mdipierro  wrote:
>
> > > > In gluon tools.py locate this code
>
> > > >                 result =mail.send_mail(sender=self.settings.sender,
> > > > to=to,
> > > >                                         subject=subject, body=text)
>
> > > > and replace it with
>
> > > >                 result =mail.send_mail(sender=self.settings.sender,
> > > > to=to,
> > > >                                         subject=subject,html=text)
>
> > > > Let me know if it solves the problem.
>
> > > > On May 19, 6:54 am, PanosJee  wrote:
>
> > > > > Hmmm no solution works for me
> > > > > We use the latese web2py version
> > > > > I tries the solution of Alexander but wihout any success (i also tried
> > > > > the solution of Thadeus but GAE just died without any log!)
>
> > > > > On 19 ÌÜúïò, 01:02, mdipierro  wrote:
>
> > > > > > This
>
> > > > > > message=[None,messagehtml]
>
> > > > > > whatever it does need some documentation.
>
> > > > > > On May 18, 3:48 pm, Alexandre Andrade 
> > > > > > wrote:
>
> > > > > > > I have sucess with:
>
> > > > > > >        for person in db(db.cme.id==request.args(0)).select():
> > > > > > >             context = dict(person=person)
> > > > > > >             messagehtml = response.render('email.html', context)
> > > > > > >             status =mail.send(to=[person.email],
> > > > > > >                     subject='My Subject',
> > > > > > >                     message=[None,messagehtml])
>
> > > > > > > where 'email.html' is a view.
>
> > > > > > > 2010/5/18 Jon Romero 
>
> > > > > > > > It seems that I cannot send emails ashtml(they are displaying as
> > > > > > > > text).
>
> > > > > > > >mail=Mail()
> > > > > > > >mail.settings = ...
> > > > > > > >mail.send(to=user.email, subjest=subject, message=(message_text,
> > > > > > > > message_html))
>
> > > > > > > > Any clues?
>
> > > > > > > --
> > > > > > > Atenciosamente
>
> > > > > > > --
> > > > > > > =
> > > > > > > Alexandre Andrade
> > > > > > > Hipercenter.com


[web2py] Re: Sending html emails [bug?]

2010-06-29 Thread Richard
also the reply_to field is ignored


On Jun 30, 9:25 am, Richard  wrote:
> I did some tests with trunk Mail on GAE:
>
> mail.send(..., message=message)
> -> Mail.send failure:May not set empty value for 'html'
>
> mail.send(..., message=(None, message))
> -> Mail.send failure:May not set empty value for 'body'
>
> mail.send(..., message=(message, message))
> -> sends email as HTML
>
> Richard
>
> On May 20, 1:22 am, mdipierro  wrote:
>
>
>
> > I made a change that should allow attachments to work on GAE. Can you
> > check it does not break the regularmailon GAE?
>
> > On May 19, 8:00 am, mdipierro  wrote:
>
> > > moving to trunk! Thanks. ;-)
>
> > > On May 19, 7:53 am, PanosJee  wrote:
>
> > > > Just fixed it
> > > > tools.py 437
> > > > result =mail.send_mail(sender=self.settings.sender, to=to,
> > > >                                         subject=subject, body=text,
> > > >html=html)
>
> > > > On 19 Μάϊος, 15:43, mdipierro  wrote:
>
> > > > > In gluon tools.py locate this code
>
> > > > >                 result =mail.send_mail(sender=self.settings.sender,
> > > > > to=to,
> > > > >                                         subject=subject, body=text)
>
> > > > > and replace it with
>
> > > > >                 result =mail.send_mail(sender=self.settings.sender,
> > > > > to=to,
> > > > >                                         subject=subject,html=text)
>
> > > > > Let me know if it solves the problem.
>
> > > > > On May 19, 6:54 am, PanosJee  wrote:
>
> > > > > > Hmmm no solution works for me
> > > > > > We use the latese web2py version
> > > > > > I tries the solution of Alexander but wihout any success (i also 
> > > > > > tried
> > > > > > the solution of Thadeus but GAE just died without any log!)
>
> > > > > > On 19 ÌÜúïò, 01:02, mdipierro  wrote:
>
> > > > > > > This
>
> > > > > > > message=[None,messagehtml]
>
> > > > > > > whatever it does need some documentation.
>
> > > > > > > On May 18, 3:48 pm, Alexandre Andrade 
> > > > > > > wrote:
>
> > > > > > > > I have sucess with:
>
> > > > > > > >        for person in db(db.cme.id==request.args(0)).select():
> > > > > > > >             context = dict(person=person)
> > > > > > > >             messagehtml = response.render('email.html', context)
> > > > > > > >             status =mail.send(to=[person.email],
> > > > > > > >                     subject='My Subject',
> > > > > > > >                     message=[None,messagehtml])
>
> > > > > > > > where 'email.html' is a view.
>
> > > > > > > > 2010/5/18 Jon Romero 
>
> > > > > > > > > It seems that I cannot send emails ashtml(they are displaying 
> > > > > > > > > as
> > > > > > > > > text).
>
> > > > > > > > >mail=Mail()
> > > > > > > > >mail.settings = ...
> > > > > > > > >mail.send(to=user.email, subjest=subject, 
> > > > > > > > >message=(message_text,
> > > > > > > > > message_html))
>
> > > > > > > > > Any clues?
>
> > > > > > > > --
> > > > > > > > Atenciosamente
>
> > > > > > > > --
> > > > > > > > =
> > > > > > > > Alexandre Andrade
> > > > > > > > Hipercenter.com


[web2py] Re: elFinder-web2py , Filemanager for Web2py!

2010-06-29 Thread GoldenTiger
Yes, this project like me, and Massimo said about an Admin version 2
of web2py based at elFinder

Look at this

http://groups.google.es/group/web2py/browse_thread/thread/ae2e3ef69daef09a/e88c6812af206cc6

So, probably it will be shipped by default in the future :D

I am working on integration too :)

On 25 jun, 18:30, Giuseppe Luca Scrofani  wrote:
> Even following your indication I can't make it work :( I will retry
> after dinner. I am surprised of how this project seems not interesting
> to the others... It is very strange, In my humble, I think this have
> to be shipped by default in web2py...


[web2py] GAE / parents / ancestors in Web2py?

2010-06-29 Thread NickFranceschina
I've been reading and googling and searching... but not sure what the
latest, up-to-date information is on this:

in GAE "parents" and "references" are two different things.  when you
create an object in GAE you can, on insert, assign the "parent"... and
this puts the new object into the parents "entity group"... which lets
you:
 - use those objects within transactions in the entity group
 - do a query on an object and specify an "ancestor" (which can be
many many levels up the heirarchy, since the gae "key" actually
contains a composite of its entire entity group path, I think)

when it comes to transactions, I saw a few discussions that said we
can just use the native GAE transaction methods in order to run
transactions... but that doesn't really help unless we can assign
parents to our objects (thus creating these "entity groups").  I also
saw some discussions about implementing this feature of "parents"...
but I can't figure out if it exists yet.

I would really like to be able to use transactions and also do "has
ancestor" queries... but I think there's going to end up being a
disconnect on what is possible in both the the "big table" world and
the "SQL" world... making it difficult to make a single DAL be all
things


HOPEFULLY what I just wrote makes sense... I could very well be
completely confused and would love any feedback to help straighten me
out :)

Thank you,
-Nick Franceschina


[web2py] Re: Many To Many Select

2010-06-29 Thread Al
Ah, belongs() + a clever select SQL.

Thanks.
Al

On Jun 29, 7:04 pm, mdipierro  wrote:
> If I understand:
>
> for row in db(db.link_table.table1==r.id)
> (db.table2.id==db.linked_table.table2).select(db.table2.id,db.table2.other)­:
>     print row.id, row.other
>
> if no double links else
>
> sub=db(db.link_table.table1==r.id)._select(db.linked_table.table2)
> for row in
> db(db.table2.id.belongs(sub)).select(db.table2.id,db.table2.other):
>     print row.id, row.other
>
> linked_view = db(db.table1.id == db.link_table.table1) & (db.table2.id
>
> > == db.linked_table.table2))
>
> > for row in linked_view(db.table1.id == r.id).select([fields from
> > table2 I want])
>
> On 29 Giu, 17:54, Al  wrote:
>
>
>
> > Given a many-to-many relationship between table1 and table2 and a row
> > in table1, I am trying to figure out the fastest way to select all the
> > rows in table2 that are associated with the row. (I'm still trying to
> > pick up web2py, so thanks for everyone's patience if I've missed the
> > blatently obvious.)
>
> > From the web2py book documentation, the best I can figure out is
> > something like this:
> > db.define_table('link_table',
> >   Field('table1', db.table1),
> >   Field('table2', db.table2)
> >   )
>
> > # Pick the row from table 1
> > r = db(db.table1.name == "Example").select()[0]
>
> > linked_view = db(db.table1.id == db.link_table.table1) & (db.table2.id
> > == db.linked_table.table2))
>
> > for row in linked_view(db.table1.id == r.id).select([fields from
> > table2 I want])
> >   # Do something clever for the matching rows I've found
> >   pass
>
> > But I keep thinking there ought to be something cleverer that I can
> > do, especially given that r has a set containing the rows of
> > link_table that contain the entries of table2 that I want. But I can't
> > figure out how to leverage that set into a shorter query.
>
> > Thanks,
> > Al- Hide quoted text -
>
> - Show quoted text -


[web2py] Re: web2py security - keep it up!

2010-06-29 Thread Richard
I like the tipfy wiki they use - web2py needs something clean like
that.


On Jun 30, 7:45 am, mdipierro  wrote:
> WOW. Thank you. I tried fill the blank but I need to read it again
> tomorrow.
>
> Massimo
>
> On 29 Giu, 11:08, Craig Younkins  wrote:
>
> > Hello there! My name is Craig Younkins. I'm a summer intern at OWASP,
> > the Open Web Application Security Project. This summer I'm working
> > heavily on web security in Python.
>
> > First, I would like to praise Dr. Di Pierro and all the web2py
> > contributors for their focus on security. Examining the OWASP Top 10
> > (http://www.web2py.com/examples/default/security) is a great way to
> > start. Keep it up!
>
> > Second, I'd like to invite the web2py community over to a site I've
> > started about security in Python -http://www.pythonsecurity.org. The
> > site aims to be the central hub for security in Python, and right now
> > has a focus on web security. Inside there are articles specific to
> > software like frameworks as well as articles related to security
> > topics like cross-site scripting. We also have a Google Group (http://
> > groups.google.com/group/python-security/topics) which I encourage the
> > developers to join. There you can get answers to your Python security
> > questions. I hope you check it out!
>
> > Lastly, I'd like to encourage you to take a look at web2py's page on
> > PythonSecurity.org -http://www.pythonsecurity.org/wiki/web2py/. I
> > haven't had the time yet to examine web2py in detail, but on that page
> > there is a pretty well-defined template of questions to be answered.
> > Going through the list there will help the developers see areas in
> > web2py that could use improvement, as well as documenting the
> > strengths for other frameworks to model off of.
>
> > Thanks!
>
> > Craig Younkins


[web2py] Re: Accessing auth_user table

2010-06-29 Thread Chris S
I don't guess I follow.  Isn't that the same as:

def userexist(namecheck):
if db(db.auth_user.username==namecheck).count() > 0:
return 'yes'
else:
return 'no'

So I"m saying your querry should be:
query = (db.auth_user.username==username)

Hope that helps

On Jun 29, 5:34 pm, elfuego1  wrote:
> Hello,
>
> On this page:http://web2pyslices.com/main/slices/take_slice/53I have
> found a great pice of code  which allows to check on the fly if there
> is an exact value already in database.
>
> Oryginal code:
>
> def ajaxuserexist():
>     username = request.vars.values()[0]
>     query = db.users.name.like(username)
>     numres = db(query).count()
>     if numres > 0 :
>         return 'yes'
>
>     return 'no'
>
> But when I try to implement the same solution on auth_user table for
> login column it stops working:
>
>     query = db.auth_users.login.like(username)
>
> Do you know some solution/workaround to this problem?
>
> Best regards.


[web2py] Re: sql.py error?

2010-06-29 Thread Chris S
Just updated same thing.  Here's the full error log for you.

Error Log---
ERROR2010-06-30 04:31:46,888 restricted.py:143] Traceback (most
recent call last):
  File "C:\Users\Chris\Documents\Workspace\WebDev\gluon
\restricted.py", line 178, in restricted
exec ccode in environment
  File "C:\Users\Chris\Documents\Workspace\WebDev\applications\init/
controllers/blog_division.py:add", line 115, in 
  File "C:\Users\Chris\Documents\Workspace\WebDev\gluon\globals.py",
line 96, in 
self._caller = lambda f: f()
  File "C:\Users\Chris\Documents\Workspace\WebDev\applications\init/
controllers/blog_division.py:add", line 26, in add
  File "C:\Users\Chris\Documents\Workspace\WebDev\applications\init/
models/global.py", line 28, in add_permission
id = auth.add_permission(group_id,name,table_name,record_id)
  File "C:\Users\Chris\Documents\Workspace\WebDev\gluon\tools.py",
line 2406, in add_permission
record_id=long(record_id))
  File "C:\Users\Chris\Documents\Workspace\WebDev\gluon\contrib
\gql.py", line 281, in insert
self._last_reference = tmp
  File "C:\Users\Chris\Documents\Workspace\WebDev\gluon\sql.py", line
1611, in __setattr__
raise SyntaxError, 'Object exists and cannot be redefined: %s' %
key
SyntaxError: Object exists and cannot be redefined: _last_reference
--End Error Log-

An explanation of what the structure looks like.

In the controller is:
def add():
"""
Debug Function
"""
group=db(db.auth_group.role=='admin').select()[0]
add_permission(group.id,'access','admin')
add_permission(group.id,'access','contact')
redirect(URL(request.application,request.controller,'index'))

Then in global.py (a file in my models)

def add_permission(
group_id,
name='any',
table_name='',
record_id=0,
):
"""
Calls auth.add_permission only if permission is new
"""

rows = db(db.auth_permission.table_name==table_name).select()
new=True
for row in rows:
if (row.group_id == group_id) &\
(row.name == name)&\
(row.table_name == table_name)&\
(row.record_id == record_id):
new=False
id = row.id
if new:
id = auth.add_permission(group_id,name,table_name,record_id)
return id

I've only this afternoon wrapped auth.add_permission in this other
function (when I noticed it allowed me to add duplicate enteries).
The error has been the same the whole time and goes away if gql.py is
reverted.  Hope that wrapper function in global.py doesn't confuse
anyone it's not part of this problem I don't believe.

On Jun 29, 5:13 pm, mdipierro  wrote:
> I do not know but I made a change in trunk. Could you please try if it
> fixes the problem?
>
> On 29 Giu, 16:02, Chris S  wrote:
>
> > Narrowing it down.
>
> > I forgot to mention I'm running on the GAE development server right
> > now.  So the above error is likely with gql.py not sql.py.
> > I've reverted my copy of gql.py to 631:1f7ae1da46ff and the error is
> > now gone.  The problem is with Line Number 279:
>
> >  Original -
> > tmp = self._tableobj(**fields)
> > tmp.put()
> > /Original -
> >  New --
> > tmp = self._tableobj(**fields)
> > self._last_reference = tmp
> > tmp.put()
> > /New --
>
> > There it is now someone smarter than me can figure out why that line's
> > causing a problem when trying to add more than one permission in a
> > single function call.
>
> > On Jun 29, 3:27 pm, Chris S  wrote:
>
> > > I'm actually not sure how to set break points.  I'm using Eclipse so
> > > I'm sure there's a way but while I'm educating myself.  Here's all you
> > > should need to know if the above isn't descriptive enough.
>
> > > In db.py:
> > > auth = Auth(globals(),db)           # authentication/authorization
> > > auth.define_tables()                # creates all needed tables
>
> > > Using Appadmin
> > > -Add a user to auth_users
> > > -Create group 'admin' in auth_groups
> > > -Make the user a member of admin in auth_memberships
>
> > > In the application:
> > > def add():
> > >     """
> > >     Debug Function
> > >     """
> > >     group=db(db.auth_group.role=='admin').select()[0]
> > >     auth.add_permission(group.id,'access','mystuff')
> > >     auth.add_permission(group.id,'access','myotherstuff')
> > >     redirect(URL(request.application,request.controller,'index'))
>
> > > Call /application/controller/add
> > > In appadmin view the auth_permissions table.
> > > You should see two entries
> > > one with the group.id for Admin, access, and table of 'mystuff'.
> > > one with the group.id for Admin, access, and table of 'myotherstuff'.
>
> > > Instead you'll get the above error and only "mystuff" is added to the
> > > auth_permissions.
> > > You can comment out either line and add them one at a time with no
> > > errors.  In fact you can add the same permission several times and
> > > you'll see

[web2py] Re: sql.py error?

2010-06-29 Thread Yarko Tymciurak
On Jun 29, 3:27 pm, Chris S  wrote:
> I'm actually not sure how to set break points.  I'm using Eclipse so
> I'm sure there's a way but while I'm educating myself.

A bit of an aside, but for completeness:

Not sure about Eclipse...  maybe this will help:
http://pydev.org/manual_adv_debugger.html

It sort of looks familiar - like winpdb  (which is a free windowed ---
NOT windows --- debugger for python;  you could get that separate).

I would (of course) do this with local gae environment.

An alternative is to get a 30-day eval of WingIDE, and debug with
that either should be fine.

- Yarko

>  Here's all you
> should need to know if the above isn't descriptive enough.
>
> In db.py:
> auth = Auth(globals(),db)           # authentication/authorization
> auth.define_tables()                # creates all needed tables
>
> Using Appadmin
> -Add a user to auth_users
> -Create group 'admin' in auth_groups
> -Make the user a member of admin in auth_memberships
>
> In the application:
> def add():
>     """
>     Debug Function
>     """
>     group=db(db.auth_group.role=='admin').select()[0]
>     auth.add_permission(group.id,'access','mystuff')
>     auth.add_permission(group.id,'access','myotherstuff')
>     redirect(URL(request.application,request.controller,'index'))
>
> Call /application/controller/add
> In appadmin view the auth_permissions table.
> You should see two entries
> one with the group.id for Admin, access, and table of 'mystuff'.
> one with the group.id for Admin, access, and table of 'myotherstuff'.
>
> Instead you'll get the above error and only "mystuff" is added to the
> auth_permissions.
> You can comment out either line and add them one at a time with no
> errors.  In fact you can add the same permission several times and
> you'll see duplicate enteries.  You can not however, have both of the
> above added in a single function call.  This use to work but no longer
> does.  When I get some time maybe I can test which revision broke this
> but my guess is it's 650:7c531beb7820 with comment
> "self._last_reference, thanks Dave".
>
> Sorry I'm not more help. Wish I could just patch this but I'm still
> learning python/web2py and this one's a bit above me.
>
> On Jun 29, 3:01 pm, Yarko Tymciurak 
> wrote:
>
> > can you give a complete example necessary to reproduce?
>
> > Alternatively, you can debug yourself:  set a breakpoint at gluon/
> > tools.py::Auth:add_permission()
>
> > and analyze what's going on...
>
> > - Yarko
>
> > On Jun 29, 2:13 pm, Chris S  wrote:
>
> > > Crap that should read:
>
> > > To reproduce:
> > > def test():
> > >     auth.add_permission(id,'name','table1')
> > >     auth.add_permission(id,'name','table2')
> > > return
>
> > > I'm trying to assign two different permissions to the same group in a
> > > single function to get the error.
>
> > > On Jun 29, 2:11 pm, Chris S  wrote:
>
> > > > Actually, that's not exactly what's happening.
>
> > > > The error is produced when trying to make two calls back to back to
> > > > auth.add_permission().
> > > > Single calls still create duplicate enteries but back to back calls
> > > > error on the 2nd call never creating an entry.
>
> > > > To reproduce:
> > > > def test():
> > > >     auth.add_permission(id,'name','table1')
> > > >     auth.add_permission(id,'name','table1')
> > > > return
>
> > > > Either one of the above can be run by itself, but both in the same
> > > > controller will fail with the above error on the 2nd permission.
>
> > > > On Jun 29, 1:35 pm, Chris S  wrote:
>
> > > > > I think the most recent update to trunk I've found a spot in sql.py
> > > > > where functionality is different though it might be intended.
>
> > > > > In the last stable release you could make a call:
> > > > > auth.add_permission(group.id,'name','table_name')
>
> > > > > You could do this with out first checking for it's existence already.
> > > > > A new entry was created and no errors thrown.
> > > > > Now if you try to do the above call and that same permission is
> > > > > already defined you get:
> > > > > --New Error
> > > > > raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> > > > > SyntaxError: Object exists and cannot be redefined: _last_reference
> > > > > --/New Error
>
> > > > > While it's good that this points out that I wasn't checking for these
> > > > > permissions before, it's bad that you find out by an error which
> > > > > didn't previously exist.
>
> > > > > I can wrap my add_permission calls in a try: block, or i could check
> > > > > for the permission before adding.  But is that something that should
> > > > > just be included in web2py by default?  It's how I assumed it worked
> > > > > originally :)


[web2py] Which is faster?

2010-06-29 Thread weheh
I have a table 'x' with Field('z'), which is set via a multiselect.
The value will be a string like '|1|2|3|5|8|'. These correspond to the
ids of another table 'z'.

I'm trying to figure out which would be a faster search:

1) use the 'like' operator to match the db.z.id stored in the x.z
field

or

2) first, parse x.z and then create a many-to-many table "foo", which
stores x.id and z.id in order to link the x and z tables. Then, do a
db(db.z.id==8).select(...,left=(db.foo.on(db.foo.x==db.x.id),db.foo.on(db.foo.z==db.z.id))


Obviously, the storage overhead of 1 is lower. But is there going to
be any significant speedup from 2?


[web2py] Re: calling secured function from cron

2010-06-29 Thread mika
why should I put there?
I have logging function defined in models/log.py.
It works correctly, I think.
You want request.client?

so when I call by hand it gives "127.0.0.1",
when it is from Cron it gives "None" but only if function is NOT
secured.
When it is secured it is not called properly and gives an error:

Traceback (most recent call last):
  File "web2py.py", line 20, in 
gluon.widget.start(cron=True)
  File "/myapp/web2py/gluon/widget.py", line 759, in start
import_models=options.import_models, startfile=options.run)
  File "/myapp/web2py/gluon/shell.py", line 174, in run
exec ('print %s()' % f, _env)
  File "", line 1, in 
  File "/myapp/web2py/gluon/tools.py", line 2116, in f
'?_next='+urllib.quote(next))
  File "/myapp/web2py/gluon/http.py", line 104, in redirect
Location=location)
gluon.http.HTTP