Thanks Ahmed for the clarifications. Having feedback from users is
very important. :-)


On Aug 2, 5:51 am, Ahmed Soliman <ah...@farghal.com> wrote:
> Ok, I would like to elaborate more on the points I've mentioned.
>
> 1- Web2py does not support unit testing out of the box and if you want
> to hack everything to get unit testing well integrated you can but
> this still doesn't mean the framework support unit testing, and by
> that I mean the ability to test complete scenarios, have you tried to
> write a unit test for controller that has SQLFORM in it? the double-
> submission check will make your life miserable if you tried to do unit
> tests that simulates form submissions. Also you will need to do a lot
> to create correct fixtures that would bring the web2py environment up
> and down before and after every test. Plus, there is no selenium
> testing integration like how other frameworks do.
>
> 2-  By saying "twisted" means that you have things that are
> automagically imported for you and many things are imported by default
> according to import_all, also you have a lot of variables like
> "response, request, session, etc." that are magically inserted into
> the execution environment, such design is OK but not Good, as I can't
> see the context and there is a little of referential transparency in
> there. You can't see what's being passed or imported, neither the IDE.
>
> 3-  In error reporting, If you tried to write a mistake in the
> template, the question is, does it show you the error "correctly"?
> does it show you the right line number as in your source file?
> 4- About the DAL and not ORM, that's OK and I understand that you
> chosen the DAL choice based on your experience with ORMs but from my
> personal point of view that your implementation of DAL is too close
> from being an ORM but without a decent way of defining the entities,
> you simply nest everything into a possibly one or more calls to create
> tables with validators in a pure functional way. My problem with that
> is that "flat is better than nested" and the code becomes scattered
> especially in the model
>
> 4- Yes, I already explained that CPython implementation is the real
> limitation and not web2py, this is a python-related issue and not
> web2py but still web2py is affected.
>
> 5- Yes, Python does work on Eclipse, IntelliJ, etc. but does web2py
> work smoothly and easily? for instance, to get web2py working
> correctly on eclipse (PyDev) you will need to put stupid nonsense
> imports ( if 0: import ) on the top of every file because of the
> "magic" I mentioned before., you will need to manually redefine
> request, response, session, etc. variables in that dummy if condition.
> You don't get proper auto completion because almost everything happen
> in the runtime (like dicts masked as attributed objects). So, simply,
> By design no IDE can help you much unless we hardcoded much of that
> stuff into the IDE itself.
>
> 6- I also would like to add that the current design on the plugin
> system, looks more like a hack rather than a modular, conflict-safe
> scalable system.
>
> Btw, I still like web2py very much and I would like to contribute when
> possible on making things better but that might include general
> philosophy changes.1
>
> Thanks for the great community.
>
> On Aug 2, 12:36 pm, Michele Comitini <michele.comit...@gmail.com>
> wrote:
>
> > Massimo since you are a real gentleman you have been too polite... ;)
>
> > DAL vs ORM: the fact that DAL uses a clean functional approach does not mean
> > that is not OO...
>
> > "Python magic was all over the place, variables defined globally are
> > allover, you cannot see real OO in the design"
>
> > I only agree that Python is magic, but that is the only thing I agree with.
> > Probably a long exposure to COO (Class Object Oriented languages
> > such as java) causes this misunderstanding with Python beginners.  Indeed
> > Python is a truly OO languages and web2py uses that.
>
> > Ok enough...
>
> > ciao,
> > mic
>
> > 2010/8/2 mdipierro <mdipie...@cs.depaul.edu>
>
> > > 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