Motor de aplicación de Google: Obtenga un objeto de usuario de la propiedad en caché de WebApp2 (Current_USER)

StackOverflow https://stackoverflow.com//questions/10656713

  •  11-12-2019
  •  | 
  •  

Pregunta

Lo que estoy tratando de lograr es obtener el objeto de usuario de la propiedad WebApp2.Cached. Tengo un método definido en mi controlador de solicitud que me da el usuario actual.

@webapp2.cached_property
  def current_user(self):
  user_dict = self.auth.get_user_by_session()
  return self.auth.store.user_model.get_by_id(user_dict['user_id'])

Quiero obtener el objeto de usuario porque es un usuario de operación () de uno de mis modelos, lo que es el siguiente:

class CountryImage(db.Model):
  image = db.BlobProperty()
  user = db.UserProperty()
  country = db.ReferenceProperty(Country)
  approved = db.BooleanProperty(default=False)

Ahora, cuando se publica el formulario de carga, todo funciona bien, excepto el "Usuario" que se muestra como "Ninguno" en el DataStore.

La razón posible por la que encontré mientras estaba jugando con ella en la consola interactiva fue que El método actual_user pasa una propiedad en caché web y no el objeto de usuario real.

Por ejemplo:

< webapp2.cached_property object at 0xb46aee8c > 

Ahora, mi pregunta es cuál sería la mejor manera posible de recuperar el objeto de usuario? Gracias de antemano por toda su ayuda.

amith

PS: Editar:

Siguiendo es el código donde estoy tratando de almacenar la imagen en el DataStore:

NewImg = models.CountryImage()
NewImg.image = self.request.get('image')
NewImg.user = self.current_user
NewImg.country = models.Country.all().filter("url_name =", country).get()
continue_url = self.request.url
NewImg.put()

PS:

Solo para agregar, también he intentado usar el método "users.get_current_user ()" que también devuelve "ninguno"

¿Fue útil?

Solución

Gracias por sus respuestas, sin embargo, ya lo hice.En caso de que esté utilizando el modelo GENACODICETGCODEDOTE de UserDE (que es una extensión para el modelo de usuario desde webapp2_extras) puede obtener al usuario de la siguiente manera

from google.appengine.api import users
from webapp2_extras.appengine.auth.models import User

user = users.User(User.get_by_auth_id(self.current_user.auth_ids[0]).name)

o

user = users.User(User.get_by_auth_id(self.current_user.auth_ids[0]).email)

Otros consejos

Tengo curiosidad, la imagen del país, ¿está cargada por los usuarios?¿O estás gestionando aquellos como recursos?

Si no, es posible que sea mejor usar un StringProperty en el modelo de usuario, luego haga referencia a una ruta de cadena a un activo de imagen estática y ahorre las miradas de DB adicionales

users.get_current_user () debe ser la forma de ir, pero eso requiere que el usuario inicie sesión primero. ¿Estás tratando de apoyar a los usuarios anónimos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top