示例#1
0
	def post(self, *args, **kwargs):
		objjson=json.loads(cgi.escape(self.request.body))
		if not objjson.has_key("em") or not objjson.has_key("c1") or not objjson.has_key("c2"):
			self.resjsonerror('Error:faltan campos')
			return
		email = objjson["em"]
		password = objjson['c1']
		pw2= objjson['c2']

		if not mail.is_email_valid(email):
			self.resjsonerror('Error:email no valido')
			return
		lon=len(password)
		if lon<6 or lon>30 or not password == pw2:
			self.resjsonerror(u"Error:Contraseñas no coinciden en valor, tienen que tener un tamaño entre 6 y 30 caracteres")
			return
		nomtien = kwargs['nom_tien']
		if len(nomtien)<2:
			self.resjsonerror('No hay tienda en url')
			return
		ti=utils.getMemKeyTienda(nomtien)
		#ti=memcache.get(nomtien.upper()+"key")
		if not ti:
			ti=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien.upper()).get()
			if not ti:
				self.resjsonerror('No existe tienda %s' % nomtien)
				return
			ti=ti.key

		
		existeusu=todosmodelos.Clientes.query(todosmodelos.Clientes.email==email,todosmodelos.Clientes.idsocial=="bd",ancestor=ti).get()
		if existeusu:
			#u'email %s ya existe, <a href="javascript:verolvi()">¿olvidó su contraseña?</a>' %
			self.resjsonok("_olvido_", email)
			return
		token=utils.nuevo_token()
		user=todosmodelos.Clientes(parent=ti,email=email,password=utils.nueva_contra(password),idsocial="bd",validada=False,token=token)
		k=user.put()
		if not k:
			self.resjsonerror('Error:no se a podido grabar, inténtelo más tarde')
			return
		verification_url = self.uri_for('verification', nom_tien=nomtien, type='v', user_id=k.id(),signup_token=token, _full=True)
		mensaje = mail.EmailMessage()
		mensaje.sender = "Tienda %s <*****@*****.**>" % nomtien
		mensaje.to = "<%s>" % email
		msg = 'Mensaje enviado por tienda {tien} para confirmar sus credenciales, visite la web para confirmar:\
		 <a href="{url}">Confirmar credenciales</a>. Si usted no solicitó una cuenta en la tienda {tien} por favor ignore este mensaje'
		mensaje.html =msg.format(tien=nomtien, url=verification_url)
		mensaje.send()
		self.resjsonok("se ha enviado un mensaje a %s con un link ( %s ) de confirmación, por favor revise su correo." % (email,verification_url))
示例#2
0
	def post(self, *args, **kwargs):
		objjson=json.loads(cgi.escape(self.request.body))
		if not objjson.has_key("email"):
			self.resjsonerror('Error: falta email')
			return
		email = objjson["email"]
		if not mail.is_email_valid(email):
			self.resjsonerror('Error:email no valido')
			return
		nomtien = kwargs['nom_tien']
		if len(nomtien)<2:
			self.resjsonerror('No hay tienda en url')
			return
		ti=utils.getMemKeyTienda(nomtien);
		#ti = memcache.get(nomtien.upper()+"key")
		if not ti:
			ti=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien.upper()).get()
			if not ti:
				self.resjsonerror('No existe tienda %s' % nomtien)
				return
			ti=ti.key

		u = todosmodelos.Clientes.query(todosmodelos.Clientes.email==email,ancestor=ti).get()
		if not u:
			self.resjsonerror('No existe ningún usuario con email %s en tienda ' % (email,nomtien))
			return

		user_id = u.key.id()
		if u.validada and u.token:
			token=u.token
		else:
			token=utils.nuevo_token()
			u.token=token
			u.put()

		verification_url = self.uri_for('verification', nom_tien=nomtien, type='p', user_id=user_id,
		  signup_token=token, _full=True)

		#msg = 'Send an email to user in order to reset their password. \
		#      They will be able to do so by visiting <a href="{url}">Cambiar contraseña</a>'
		msg = u'Mensaje de Pagina web tienda {tien} para cambiar su contraseña, pulse en el link para dirigirse a la página web y \
			  <a href="{url}">Cambiar contraseña</a>. Si usted no solicitó el cambio de contraseña por favor ignore este mensaje.'    
		mensaje = mail.EmailMessage()
		mensaje.sender = "Pizzaweb <*****@*****.**>"
		mensaje.to = "%s <%s>" % email
		mensaje.html=msg.format(tien=nomtien, url=verification_url)
		mensaje.send()
		self.resjsonok("se ha enviado un mensaje a %s con un link ( %s ) de confirmación, por favor revise su correo." % (email,verification_url))
示例#3
0
	def get(self, *args, **kwargs):
		user = None
		user_id = kwargs['user_id']
		signup_token = kwargs['signup_token']
		verification_type = kwargs['type']
		if verification_type not in ['v','p']:
			logging.info('Tipo de verificación no existe')
			self.abort(404)
		nomtien = kwargs['nom_tien']
		if len(nomtien)<2:
			utils.handle_404(self.request, self.response, {"status_int":404,"status":"No hay tienda en url"})
			return
		ti=utils.getMemKeyTienda(nomtien);
		#ti = memcache.get(nomtien.upper()+"key")
		tienti=None
		if not ti:
			tienti=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien.upper()).get()
			if not ti:
				utils.handle_404(self.request, self.response, {"status_int":404,"status":"No existe tienda %s" % nomtien})
				return
			ti=tienti.key
		# it should be something more concise like
		# self.auth.get_user_by_token(user_id, signup_token)
		# unfortunately the auth interface does not (yet) allow to manipulate
		# signup tokens concisely
		u =todosmodelos.Clientes.get_by_id(int(user_id),parent=ti)
		if not u:
			logging.info('No puedo encontrar usuario con id %s ',user_id)
			utils.handle_404(self.request, self.response, {"status_int":404,"status":"No puedo encontrar usuario"})
			return

		if u.token == signup_token:
			self.session['cliente']={'tipo':"bd","usu":u,"tienda":ti}
			u.validada=True
			u.token=None
			u.put()
			self.enviarCliente({"id":u.key.id(),"tipo":"bd","usu":u},ti,tienti);
			self.redirect('/tienda/%s' % nomtien)
			#self.response.out.write("Tus datos han sido verificados")
		else:
			logging.info('No puedo encontrar con token signup %s y tienda %s',(signup_token,nomtien))
			utils.handle_404(self.request, self.response, {"status_int":404,"status":"no puedo encontrar token en url,tienda"})
示例#4
0
	def post(self, *args, **kwargs):
		objjson=json.loads(cgi.escape(self.request.body))
		if not objjson.has_key("em") or not objjson.has_key("con"):
			self.resjsonerror('Error:faltan campos')
			return
		email = objjson["em"]
		password = objjson['con']
		if not mail.is_email_valid(email):
			self.resjsonerror('Error:email no valido')
			return
		lon=len(password)
		if lon<6 or lon>30:
			self.resjsonerror(u'Error:Contraseña tiene que tener un tamaño entre 6 y 30 caracteres')
			return
		nomtien = kwargs['nom_tien']
		if len(nomtien)<2:
			self.resjsonerror('No hay tienda en url')
			return
		ti=utils.getMemKeyTienda(nomtien);
		#ti = memcache.get(nomtien.upper()+"key")
		if not ti:
			ti=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien.upper()).get()
			if not ti:
				self.resjsonerror('No existe tienda %s' % nomtien)
				return
			ti=ti.key
		
		u = todosmodelos.Clientes.query(todosmodelos.Clientes.email==email,todosmodelos.Clientes.password==utils.nueva_contra(password),todosmodelos.Clientes.idsocial=="bd",ancestor=ti).get()
		if u:
			if u.token and not u.validada:
				self.resjsonerror(u'Este email todavía no está validado, por favor revise su correo.')
				return
			self.session['cliente']={'tipo':"bd","usu":u,"tienda":ti}
			self.resjsonok("Login as %s" % email)
		else:
			self.resjsonerror(u'Email o contraseña incorrecta.')
示例#5
0
	def get(self, *args, **kwargs):
		nomtien = kwargs['nom_tien']
		token=self.request.get('token') 
		if not self.session or not self.session.has_key("tok_pag") or not self.session.get("tok_pag") == token or not self.session.get("order_id"):
			self.response.out.write(u"mal en returnurlHandler pagantis url no hay session, o order_id, token=%s" % token)
			return
		"""try:
			respujson=json.loads(cgi.escape(self.request.body))
		except Exception as e:
			self.response.out.write(u"exception en retunrurlHandler al hacer respujson Pagantis: %s" % e.message)
			return
		if "event" in respujson and respujson["event"]=="charge.created" and "data" in respujson:"""
		regtra=todosmodelos.Transferencia.get_by_id(int(self.session.get("order_id")))
		#regtra=todosmodelos.Transferencia.query(todosmodelos.Transferencia.token_ec==token).get()
		if not regtra:
			self.response.out.write(u"mal en returnurlHandler pagantis no hay registro transferencia , token=%s" % token) 
			return
		if regtra.token_ec==token and regtra.estado=="completed":
			tikey=regtra.tienda or  utils.getMemKeyTienda(nomtien)
			"""nomtien=nomtien.upper()
			tienda=memcache.get(nomtien+"tienda")
			tikey=memcache.get(nomtien+"key")"""
			if not tikey:
				tikey=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien).get(keys_only=True)
				if not tikey:
					self.response.out.write(u"no puedo llamar a tienda , token=%s" % token)
					return


			"""if not tienda:
				tien=regtra.tienda.get()
				if tien:
					tienda=utils.getTienda(tien,utils.getSegundos())
					tikey=tien.key
				else:
					tien=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien).get()
					if tien:
						tienda=utils.getTienda(tien,utils.getSegundos())
						tikey=tien.key
					else:
						self.response.out.write(u"no puedo llamar a tienda , token=%s" % token)
						return"""
			resp=self.env_pago_grab_pedido(3,tikey,regtra)
			if resp[0]:
				regtra.reg_pedido=resp[1]
				regtra.put()
				self.session["tok_pag"]=None
				self.session["pedido"]=None
				self.session.pop('pedido')
				self.session.pop("tok_pag")
				self.session.pop("order_id")
				self.response.out.write("ok se ha enviado y grabado  status 200  <br> y, <p> token=%s </p>" % token)
			else:
				self.response.out.write("error al enviar y grabar pedido= %s, <br> ok en consulta charge status 200  <br> y, <p> token=%s </p>" % (resp[1],token))
			return
			"""try:cha_6801d60bd2977711010261eaabc6af0d
				result = urlfetch.fetch(url="https://psp.pagantis.com/api/1/charges/" + respujson["data"]["id"],
						    method=urlfetch.GET,
						    headers={
						    "Authorization": ("Bearer %s" % self.tienda["pagantis"]["apikey"])
							},validate_certificate=False)
			except Exception as e:
				self.response.out.write(u"exception en returnurlHandler pagantis consulta charge: %s,<p> respujson=%s</p>" % (e.message,respujson))
				return
			respujson2=json.loads(result.content)
			if result.status_code == 200:
				
				self.response.out.write("ok en consulta charge status 200 content respujson2 = %s <br> y, <p> token=%s </p>" % (respujson2,token))
			else:
				self.response.out.write(u"mal en consulta charge status status_code %d ,<p> content = %s</p>, token=%s,respujson2=%s" % (result.status_code,result.content,token,respujson2))"""
			#regtra.status="completed"
			#regtra.put()
			self.response.out.write("ok en consulta charge status 200  <br> y, <p> token=%s </p>" % token)
		else:
			self.response.out.write(u"mal en returnurlHandler pagantis token no coincide con regtra.token_ec o regtra.estado no ==completed, regtra.estado=%s ,<p>token=%s</p><regtra.token_ec=%s</p><p>token %s</p>" % (regtra.estado,token,regtra.token_ec,token))