web2py 2.14.4 is OUT

963 views
Skip to first unread message

Massimo Di Pierro

unread,
Apr 12, 2016, 5:29:26 PM4/12/16
to web2py-users
web2py 2.14.4 is out.

It fixes some a problem with CAS and some style issues with examples.
It also includes (and passes) a lot of new tests. 

Thanks to Richard Vezina, Simone and Leonel for doing most of the work in this release.

Massimo

Dave S

unread,
Apr 13, 2016, 3:21:11 PM4/13/16
to web2py-users
Looking good for the apps on my old Fedora system, (local browser FF  45.0.1)

My fabfile indicates stupid.css is the only static file I needed to update.

/dps



Raul Monares

unread,
Apr 13, 2016, 3:57:53 PM4/13/16
to web2py-users
I just did some tests. It still saves empty strings as null when using SQLFORM or CRUD and the string field has default=''. But when using db.table.insert the empty string is stored.

Alex Glaros

unread,
Apr 13, 2016, 4:41:12 PM4/13/16
to web2py-users
was this below left out of layout.html?  I just see the word "include" there but nothing to include

{{block header}}
    <header class="container-fluid background">
      <div class="jumbotron text-center">
        {{if response.title:}}
        <h1>{{=response.title}}
          <small>{{=response.subtitle or ''}}</small></h1>
        {{pass}}
      </div>
    </header>
{{end}}

thanks,

Alex Glaros

Dave S

unread,
Apr 13, 2016, 5:31:17 PM4/13/16
to web2py-users
Layout.html didn't change.  This comes from welcome/views/default/index.html.

/dps
 

Richard Vézina

unread,
Apr 13, 2016, 11:56:48 PM4/13/16
to web2py-users
I didn't have time to investigate though it won't start with :

python web2py.py -S welcome -M

But once it has been started with the launcher :

python web2py.py

It start with the previous command...

To reproduce, unzip 2.14.4 and try the first command.

Richard



--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ben Lawrence

unread,
Apr 26, 2016, 12:39:00 AM4/26/16
to web2py-users
Does the shell still work or is it just me who cannot work it?
Whenever I place anything in the .../admin/shell/index/welcome, it just prints "None"


On Tuesday, April 12, 2016 at 2:29:26 PM UTC-7, Massimo Di Pierro wrote:

Dave S

unread,
Apr 26, 2016, 3:15:17 PM4/26/16
to web2py-users


On Monday, April 25, 2016 at 9:39:00 PM UTC-7, Ben Lawrence wrote:
Does the shell still work or is it just me who cannot work it?
Whenever I place anything in the .../admin/shell/index/welcome, it just prints "None"


The web shell is deprecated, I think.  The command line shell still works.

/dps

Jim Spoerl

unread,
Apr 29, 2016, 11:20:05 AM4/29/16
to web2py-users
I am a new user.  With both the 2.9 (stable) and this latest I cannot get the KPAX cms to run.  web2py seems ok and the KPAX installs with no errors.  This is on a Macbook Pro running Yosemite with bundled Python 2.7.  Thanks for your help.

Adam Filić

unread,
May 2, 2016, 1:59:26 PM5/2/16
to web2py-users
I have problem with empty field that should be inserted in db as NULL (None), but 0 (zero) is inserted. Even when I declare form.vars.fo = None (in validation routine), zero is inserted. Why?

Leonel Câmara

unread,
May 2, 2016, 2:22:56 PM5/2/16
to web2py-users
Adam does that field have a default=0 there?

Adam Filić

unread,
May 2, 2016, 2:28:41 PM5/2/16
to web2py-users
No. It has no default values. It worked fine in 2.13.x versions.

Leonel Câmara

unread,
May 2, 2016, 2:46:24 PM5/2/16
to web2py-users
Adam can we see some code? Possibly in another topic.

Derek

unread,
May 4, 2016, 6:54:36 PM5/4/16
to web2py-users
PYTDS is now DBAPI 2.0 compliant, which means you can now use it with Web2py. It's fully python not dependent on any installed libraries, for your MSSQL needs. That means you can use this in pypy or ironpython as well... 


On Tuesday, April 12, 2016 at 2:29:26 PM UTC-7, Massimo Di Pierro wrote:

Adam Filić

unread,
May 30, 2016, 9:14:07 AM5/30/16
to web2py-users
I isolated the problem in gluon/dal.py (line: 79) and with this change it works fine in postgresql.

 
    if (field.notnull or field.unique) and not field_type in excluded_fields:
        requires
.insert(0, validators.IS_NOT_EMPTY())
   
elif not field.notnull and not field.unique and requires:
        requires
[0] = validators.IS_EMPTY_OR(requires[0])
       
#requires[0] = validators.IS_EMPTY_OR(requires[0], null='' if field in ('string', 'text', 'password') else None)

Leonel Câmara

unread,
May 30, 2016, 9:33:20 AM5/30/16
to web2py-users
That doesn't make any sense Adam. You say your field is an integer, so

null='' if field in ('string', 'text', 'password') else None

is the same as

null=None

Which is the default value for null in IS_EMPTY_OR()

So your change shouldn't have many any difference whatsoever, note that by changing that you will also make forms put NULL values in string fields where you would probably want an empty string.

Adam Filić

unread,
May 30, 2016, 9:57:49 AM5/30/16
to web2py-users
You are right. I have a problem with strings now, but empty field for integer is inserted as null at least. So I reverted this piece of code to version 2.13.4 like this and now is everything like it was, and shoud be.

    """
    if field.unique:
        requires.insert(0, validators.IS_NOT_IN_DB(db, field))
    excluded_fields = ['string', 'upload', 'text', 'password', 'boolean']

    if (field.notnull or field.unique) and not field_type in excluded_fields:
        requires.insert(0, validators.IS_NOT_EMPTY())
    elif not field.notnull and not field.unique and requires:
        requires[0] = validators.IS_EMPTY_OR(requires[0], null='' if field in ('string', 'text', 'password') else None)
    return requires
    """

   
if field.unique:
        requires
.append(validators.IS_NOT_IN_DB(db, field))
    sff
= ['in', 'do', 'da', 'ti', 'de', 'bo']
   
if field.notnull and not field_type[:2] in sff:
        requires
.append(validators.IS_NOT_EMPTY())
   
elif not field.notnull and field_type[:2] in sff and requires:

        requires
[0] = validators.IS_EMPTY_OR(requires[0])

   
return requires

Leonel Câmara

unread,
May 30, 2016, 11:13:39 AM5/30/16
to web2py-users
Humm this

requires[0] = validators.IS_EMPTY_OR(requires[0], null='' if field in ('string', 'text', 'password') else None)

Should be

requires[0] = validators.IS_EMPTY_OR(requires[0], null='' if field_type in ('string', 'text', 'password') else None)

PRACHI VAKHARIA

unread,
Jun 3, 2016, 12:30:10 PM6/3/16
to web2py-users



Great! 😇
What are some of the major updates in 2.14.4 – that we users should note or be aware of?

Dave S

unread,
Jun 6, 2016, 11:13:38 PM6/6/16
to web2py-users


On Friday, June 3, 2016 at 9:30:10 AM UTC-7, PRACHI VAKHARIA wrote:



Great! 😇
What are some of the major updates in 2.14.4 – that we users should note or be aware of?
 
## 2.14.6

- Increased test coverage (thanks Richard)
- Fixed some newly discovered security issues in admin:
  CSRF vulnerability in admin that allows disabling apps
  Brute force password attack vulnerability in admin
  (thanks Narendra and Leonel) 

## 2.14.1-5

- fixed two major security issues that caused the examples app to leak information
- new Auth(…,host_names=[…]) to prevent host header injection
- improved scheduler
- pep8 enhancements
- many bug fixes
- restored GAE support that was broken in 2.13.*
- improved fabfile for deployment
- refactored examples with stupid.css
- new JWT implementation (experimental)
- new gluon.contrib.redis_scheduler
- myconf.get
- LDAP groups (experimental)
- .flash -> .w2p_flash
- Updated feedparser.py 5.2.1
- Updated jQuery 1.12.2
- welcome app now checks for version number
- Redis improvements. New syntax:

    BEFORE:
    from gluon.contrib.redis_cache import RedisCache
    cache.redis = RedisCache('localhost:6379',db=None, debug=True)

    NOW:
    from gluon.contrib.redis_utils import RConn
    from gluon.contrib.redis_cache import RedisCache
    rconn = RConn()
    # or RConn(host='localhost', port=6379,
    # db=0, password=None, socket_timeout=None,
    # socket_connect_timeout=None, .....)
    # exactly as a redis.StrictRedis instance
    cache.redis = RedisCache(redis_conn=rconn, debug=True)

    BEFORE:
    from gluon.contrib.redis_session import RedisSession
    sessiondb = RedisSession('localhost:6379',db=0, session_expiry=False)
    session.connect(request, response, db = sessiondb)

    NOW:
    from gluon.contrib.redis_utils import RConn
    from gluon.contrib.redis_session import RedisSession
    rconn = RConn()
    sessiondb = RedisSession(redis_conn=rconn, session_expiry=False)
    session.connect(request, response, db = sessiondb)

Many thanks to Richard and Simone for their work and dedication.

Reply all
Reply to author
Forward
0 new messages