def registrarUsuario(cod, foto=None, imgs=None, db=db): filas = db("confirmacion").obtenerFilasValores(cod) print filas for elem in db("confirmacion").obtenerFilasId(cod): db("confirmacion").delFila(elem) token = zu.randomString() while token in db.obtenerColumna("valor", "tokens"): token = zu.randomString() if cod == filas[4]: db("usuarios").insertar(filas[0], filas[1], filas[2], filas[3], foto, imgs, token) db("tokens").insertar(filas[2], token, str(zu.DateTime()), str(zu.DateTime(w=4))) i = len(db.obtenerColumna("token", "usuarios")) - 1 db("tokens").relacionar(i, "usuario", tabla="usuarios", campo="correo", id=i) db("usuarios").relacionar(i, "token", tabla="tokens", campo="valor", id=i) db.grabar(root_db) else: print filas, " - ", cod print "el codigo de confirmacion no coincide"
def closeSession(self,token): if self.request(): filas=self.db("usuarios").obtenerFilasValores(token) if filas[6]==token: self.db("usuarios").modificarCampo(self.db("usuarios").obtenerFilasId(token)[0],"login",False) newToken=zu.randomString() while newToken in self.db.obtenerColumna("valor","tokens"): newToken=zu.randomString() self.db("tokens").modificarCampo(self.db("tokens").obtenerFilasId(token)[0],"valor",newToken) return self.grabar() else: return False
def closeSession(token, db=db): filas = db("usuarios").obtenerFilasValores(token) if filas[6] == token: db("usuarios").modificarCampo( db("usuarios").obtenerFilasId(token)[0], "login", False) newToken = zu.randomString() while newToken in db.obtenerColumna("valor", "tokens"): newToken = zu.randomString() db("tokens").modificarCampo( db("tokens").obtenerFilasId(token)[0], "valor", newToken) db.grabar(root_db) return True else: return False
def registrarUsuario2(self,nick,email,password,avatar,hours=4): if self.request(): muere=str(zu.DateTime(H=hours)) x = datetime.datetime.now() valido=None usuarios=self.obtenerFilas("Usuarios") i=len(usuarios) while valido==None: token=zu.randomString() for fila in usuarios: for campos in fila[1][0]: keys=campos.keys() if "Email" in keys: if email==campos["value"]: valido=False elif "Token" in keys: if token==campos["value"]: valido=False if valido==None: valido=True else: valido=None self.db("Usuarios").insertar(nick, [[ {"Usuario":"text","name":"usuario","value":nick}, {"Email":"text","name":"email","value":email}, {"Password":"******","name":"password","value":password}, {"Avatar":"select","name":"avatar","value":avatar,"opcion":1}, {"Token":"hidden","name":"token","value":token}, {"Muere":"hidden","name":"muere","value":muere}, {"Login":"******","name":"login","value":True}, ]], {"Usuario":i}, zu.DateTime(), [] ) self.grabar() return True
def reportarError(self,errores): """ error=[[[exc_type,exc_obj,exc_tb],[direccion]],] """ if self.request(): msj="" tabla=self.obtenerFilas("Log") import traceback import os lineascod=[] for error in errores: lineas=[] cuenta=0 for linea in traceback.format_exception(error[0][0],error[0][1],error[0][2]): if "line" in linea: lineas.append(int(linea.split(",")[1].replace(" line ",""))) cuenta=linea.count("<string>") msj+="".join(traceback.format_exception(error[0][0],error[0][1],error[0][2])) i=0 print lineas for v in range(cuenta+1): i=msj.find("<string>",i+1) if i+len("<string>")< len(msj): msj=msj[:i]+error[1][v]+msj[i+len("<string>"):] else: msj=msj[:i]+error[1][v] f=open(os.path.abspath(error[1][v]),"r") rlineas=f.readlines() lineascod.append(rlineas[lineas[v]-1]) f.close() token=zu.randomString() anteriores=[] for elem in tabla: anteriores.append(elem[0]) while token in anteriores: token=zu.randomString() i=0 cuenta=msj.count("\n")-1 for salto in range(cuenta-1): i=msj.find("\n",i+1) i=msj.find("\n",i+1) try: msj=msj[:i]+"\n\n"+lineascod[salto]+msj[i:] i=msj.find("\n",i+1) i=msj.find("\n",i+1) except: if salto<len(lineascod)-1: msj=msj[:i]+"\n\n"+lineascod[salto] print tabla[-1][1] if tabla!=[] and tabla[-1][1]!=msj: self.db("Log").insertar(str(token), msj, {"Error":len(tabla)}, zu.DateTime(), False ) return [self.grabar(),token] elif tabla==[]: self.db("Log").insertar(str(token), msj, {"Error":len(tabla)}, zu.DateTime(), False ) return [self.grabar(),token] else: return [self.grabar(),tabla[-1][0]]
def login2(self,email,password): if self.request(): muere=str(zu.DateTime(H=1)) valido=None usuarios=self.obtenerFilas("Usuarios") c=0 i=0 l=[] for k,fila in enumerate(usuarios): i=k for campos in fila[1][0]: keys=campos.keys() if "Email" in keys: if email==campos["value"]: valido=False l.append(fila[1][0]) break if valido==False: break valido=None if l!=[] and l[0][1]["value"]==email and l[0][2]["value"]==password: nick=l[0][0]["value"] avatar=l[0][3]["value"] while valido!=True: pasa=True token=zu.randomString() for fila in usuarios: if token==fila[1][0][4]["value"]: pasa=False if pasa==True: valido=True self.db("Usuarios").modificarCampo(i,"Contenido", [[ {"Usuario":"text","name":"usuario","value":nick}, {"Email":"text","name":"email","value":email}, {"Password":"******","name":"password","value":password}, {"Avatar":"select","name":"avatar","value":avatar,"opcion":1}, {"Token":"hidden","name":"token","value":token}, {"Muere":"hidden","name":"muere","value":muere}, {"Login":"******","name":"login","value":True}, ]] ) self.grabar() return token else: return False