This was my response. It is awaiting moderation:

Hello Ahmed. Nice article.

A few comments:
web2py runs with Jython. We just consider CPython the reference
platform. There is a known bug in the Java regex library that sun
marked as wontfix that can cause occasional runaway problems with
parsing templates in Jython. It is not a web2py specific issue but I
thought I'd mention it.

You can use unit tests with web2py. web2py it self has unit tests in
the gluon/tests folder. You can run unit tests for your apps from the
shell (as you would do in other Python frameworks) although you cannot
run them through the web IDE. The web IDE only supports doctests and
you are correct about that.

Web2py is known to work with WingIDE, Eclipse and IntelliJ.

It is true that web2py does not distinguishes production from
debugging mode but to clarify: this is because webp2y always in
production mode yet it always logs all the errors. If the current user
is logged in as administator he/she has access to the error tickets
and error tracebacks.

Web2py follows PEP8 internally but it does not import application
code, executes it. In this environment it exposes some symbols. Some
symbols are per-http-request. Some symbols are system wide. The latter
are all caps because should be treated as constants and not modified.
I feel this is consistent with PEP8. The naming scheme is explained in
the first chapter of the manual.

You are also right that web2py has a DAL, not an ORM. The main
difference is that in a ORM a table is a class and a record is an
instance of that class. In the web2py DAL the table concept is a class
but each table is an instance and each record is a dictionary. In my
view both approaches are object oriented. For example this is a query
with the web2py DAL:

for row in db(db.mytable.myfield>0).select(): print row.myfield

and this the same query with the Django ORM:

for row in Mytable.objects.filter(myfield__lt=0): print row.myfield

In my opinion the former looks more OO than the latter.

Reply via email to