def register(self,acenv,conf): email=replaceVars(acenv,conf["email"]) password=replaceVars(acenv,conf["password"]) role=replaceVars(acenv,conf.get("role",self.ROLE)) sql="select exists(select * from %s.emails where email='%s')"%(acconfig.dbschema,email) passwd=md5_constructor(password).hexdigest() key=generateID() #returns False if email is not registered yet if acenv.app.getDBConn().query(sql)["rows"][0][0]: return { "error":"EmailAdressAllreadySubscribed" } #XXX implement psycopg escaping!!! id="SELECT currval('%s.users_id_seq')"%(acconfig.dbschema) sql="""INSERT into %s.users (password,role) VALUES ('%s', '%s'); INSERT into %s.emails (email,_user,approval_key,approved,main) VALUES ('%s', (%s), '%s', %s, %s)"""%( acconfig.dbschema, passwd, role, acconfig.dbschema, email, id, key, conf.get("approved",self.APPROVED), conf.get("approved",self.MAIN) ) result=acenv.app.getDBConn().query(sql) acenv.requestStorage["approval_key"]=key return {"status":"ok"}
def generate(self,env,conf): #D=env.doDebug command=conf["command"] if command=="md5": value=replaceVars(env,conf["params"]["value"]) return md5_constructor(value).hexdigest() return generateID()
def register(self,acenv,conf): usersColl=acenv.app.storage.users email=replaceVars(acenv,conf["email"]).lower() if not (len(email)>5 and self.EMAIL_RE.match(email)): return { "@status":"error", "@error":"NotValidEmailAddress", "@message":"Suplied value is not a valid e-mail address" } if list(usersColl.find({"email":email})): return { "@status":"error", "@error":"EmailAdressAllreadySubscribed", "@message":"User already exists in the system" } key=generateID() d={ "email":email, "password":md5_constructor(replaceVars(acenv,conf["password"])).hexdigest(), "role":replaceVars(acenv,conf.get("role",self.ROLE)), "approvalKey":key, "privileges":[] } if conf.has_key("data"): d.update(conf["data"].execute(acenv)) id=usersColl.save(d,safe=True) return { "@status":"ok", "@id":id, "@approvalKey":key }
if not calendar: import calendar return int(calendar.timegm(args.timetuple()) * 1000 + args.microsnd / 1000) #misc elif fnName=="type": ret=type(args[0]) if ret in ITER_TYPES: return "array" if ret is dict: return "object" return ret.__name__ elif fnName=="generateID": global generateID if not generateID: from ACR.utils import generateID return generateID() elif fnName in ("objectID","ObjectId"): global ObjectId if not ObjectId: from bson.objectid import ObjectId try: a=args[0] a=type(a) is list and a or [a] r=map(ObjectId,a) return len(r) is 1 and r[0] or r except Exception,e: return ObjectId(None) else: raise ProgrammingError("Function '"+fnName+"' does not exist.") else: return node