コード例 #1
0
ファイル: userpg.py プロジェクト: Giotoc/ACR
	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"}
コード例 #2
0
ファイル: keygenerator.py プロジェクト: Giotoc/ACR
	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()
コード例 #3
0
ファイル: user.py プロジェクト: Giotoc/ACR
	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
		}
コード例 #4
0
ファイル: interpreter.py プロジェクト: Giotoc/ACR
					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