for the convenience i pulled out both versions, and my suggested change:
1.99.7 cleanup: 
def cleanup(text):
    """
    validates that the given text is clean: only contains [0-9a-zA-Z_]
    """

    if re.compile('[^0-9a-zA-Z_]').findall(text):
        raise SyntaxError, \
            'only [0-9a-zA-Z_] allowed in table and field names, received 
%s' \
            % text
    return text

2.08 cleanup: 

REGEX_ALPHANUMERIC = re.compile('^[a-zA-Z]\w*$')

def cleanup(text):
    """
    validates that the given text is clean: only contains [0-9a-zA-Z_]
    """
    if not REGEX_ALPHANUMERIC.match(text):
        raise SyntaxError, 'invalid table or field name: %s' % text
    return text


>>> REGEX_ALPHANUMERIC = re.compile('^[a-zA-Z]\w*$')
>>> REGEX_ALPHANUMERIC.match('40')
>>> print REGEX_ALPHANUMERIC.match('40')
None

i changed into this and all works good:
>>> REGEX_ALPHANUMERIC = re.compile('^[0-9a-zA-Z]\w*$')
>>> print REGEX_ALPHANUMERIC.match('40aaa_aa').span()
(0, 8)



On Thursday, September 13, 2012 8:28:43 PM UTC-4, Adi wrote:
>
> One of my fields is 40off_sh (legacy MySQL db), and all works fine in 
> 1.97. Seems like cleanup function in dal doesn't like the numeric part at 
> the beginning of field name, or I'm reading it wrong? I checked the table 
> and the field is in, so it's not missing. 
>
> I can't change the field name, since it's used by other applications, so 
> not sure what would you recommend to do here?
>
> Thanks,
> Adnan
>
> Traceback (most recent call last):
>   File "/opt/web-apps/web2py/gluon/restricted.py", line 209, in restricted
>     exec ccode in environment
>   File "/opt/web-apps/web2py/applications/thane_us/models/db_1_common.py", 
> line 182, in <module>
>     Field('40off_sh', 'boolean',),
>   File "/opt/web-apps/web2py/gluon/dal.py", line 8396, in __init__
>     self.name = fieldname = cleanup(fieldname)
>   File "/opt/web-apps/web2py/gluon/dal.py", line 4769, in cleanup
>     raise SyntaxError, 'invalid table or field name: %s' % text
> SyntaxError: invalid table or field name: 40off_sh
>
>
>

-- 



Reply via email to