Still trying to make my username example, google-like.

Google prohibits a very small set of bad words.

I have a BADWORDS working outside of the validation, but when I insert in 
validation, I get error.

Any help would be appreciated, I bet it is one little thing :)

I get error
<type 'exceptions.NameError'> name 'BADWORDS' is not defined- Thanks!
Rob


*Summary:
* 
badlist = ['frig', 'asdf', 'poop']
BADWORDS = re.compile(r'|'.join(badlist))

auth.settings.table_user.username.requires = [IS_LENGTH(30,6,'Please use 
between 6 and 30 characters.'),
    IS_MATCH('^[a-z0-9.]*$', error_message='Please use only letters (a-z) 
and numbers (0-9), and periods.'),
    IS_NOT_EMPTY(error_message='You can\'t leave this empty. '),
    IS_EXPR("value[0]<>'.'", error_message='The FIRST character of your 
username should be a letter (a-z) or number.'),
    IS_EXPR("value[-1]<>'.'", error_message='The LAST character of your 
username should be a letter (a-z) or number.'),
    IS_EXPR("str(value).find('..')==-1",error_message='A fan of 
punctuation! Alas, usernames can\'t have consecutive periods.'),
    IS_EXPR("BADWORDS.search(value)", error_message='Bad word'),  
    IS_NOT_IN_DB(db, auth.settings.table_user.username, 'Someone already 
has that username. ') 
    ]




*Complete code, just insert in  a new app. like Welcome..*



## -  START CUSTOMIZATION  - - - - - - - - - - - - - - - - - - - - - - ##

# | Summary:
# |  Modify web2py to allow user registrations similar to 
# |  Google registrations.
# |  i.e. 
# |   - lower case only [a-z]
# |   - numbers [0-9] and period are OK
# |   - can't end in a period
# |   - can't start with a period
# |   - can't have consecutive periods
# |   - min 8 letter password
# |   - username can't be changed once registered
# |
# |  Note: Messages are nearly same as Google displays


## create all tables needed by auth if not custom tables 
#  use usernames rather than email addresses to register
auth.define_tables(username=True)

# allow username only on registration, but can only
# be viewed (readable) in Profile
# user can't change username once registered.

#if auth.is_logged_in():
#    db.auth_user.username.writable = False
#    db.auth_user.username.readable = True


#custom message for password length - like Google
# ref:
"""
https://groups.google.com/forum/?fromgroups#!searchin/web2py/$20default$20length$20for$20password/web2py/k5os3bMz228/vG-UOLbhcBUJ[1-25]
"""

#add a comments to exlain policy

db.auth_user.username.comment='NO BAD WORDS..min. 6 letters (a-z), you may 
use numbers, and periods.'

# apply nearly identical username policy and message that Google Accounts 
use.
# this OVERWRITES web2py's default username validation
# reference and thanks to web2py community for help:
#   
https://groups.google.com/forum/?fromgroups#!starred/web2py/HBODB00HMfU[1-25]


# this import is required in web2py
import base64, re

#let's assume:
#  username can't contain spaces, just a-z and periods

# 'frig' is a very bad word, and "poop" too :)
# 'sadf' is a racial slur

# so even if a person's name as frig, or asdf in it
# we will not let them use that.

# asdf    - is a bad username
# asdfyou - is a bad username
# youasdf - is a bad username 
 
badlist = ['frig', 'asdf', 'poop']
BADWORDS = re.compile(r'|'.join(badlist))

auth.settings.table_user.username.requires = [IS_LENGTH(30,6,'Please use 
between 6 and 30 characters.'),
    IS_MATCH('^[a-z0-9.]*$', error_message='Please use only letters (a-z) 
and numbers (0-9), and periods.'),
    IS_NOT_EMPTY(error_message='You can\'t leave this empty. '),
    IS_EXPR("value[0]<>'.'", error_message='The FIRST character of your 
username should be a letter (a-z) or number.'),
    IS_EXPR("value[-1]<>'.'", error_message='The LAST character of your 
username should be a letter (a-z) or number.'),
    IS_EXPR("str(value).find('..')==-1",error_message='A fan of 
punctuation! Alas, usernames can\'t have consecutive periods.'),
    IS_EXPR("BADWORDS.search(value)", error_message='Bad word'),  
    IS_NOT_IN_DB(db, auth.settings.table_user.username, 'Someone already 
has that username. ') 
    ]
 
## -  END CUSTOMIZATION  - - - - - - - - - - - - - - - - - - - - - - ##
 



-- 



Reply via email to