Estoy escribiendo una aplicación de lista de tareas pendientes para ayudarme a comenzar con Python. La aplicación se ejecuta en GAE y estoy almacenando elementos de tareas pendientes en el almacén de datos. Quiero mostrarles los artículos de todos, y solo a ellos. El problema es que la aplicación actualmente muestra todos los elementos a todos los usuarios, así que puedo ver lo que escribes y tú ves lo que escribo. Pensé que lanzar mi objeto todo.author a una cadena y ver si coincide con el nombre del usuario sería un buen comienzo, pero no sé cómo hacerlo.
Esto es lo que tengo en mi main.py
...
user = users.get_current_user()
if user:
nickname = user.nickname()
todos = Todo.all()
template_values = {'nickname':nickname, 'todos':todos}
...
def post(self):
todo = Todo()
todo.author = users.get_current_user()
todo.item = self.request.get("item")
todo.completed = False
todo.put()
self.redirect('/')
En mi index.html tenía esto originalmente:
<input type="text" name="item" class="form-prop" placeholder="What needs to be done?" required/>
...
<ul>
{% for todo in todos %}
<input type="checkbox"> {{todo.item}} <hr />
{% endfor %}
</ul>
pero me gustaría mostrar elementos solo al usuario que los creó. Pensé en intentarlo
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
en vano. La lista aparece en blanco. Supuse que es porque todo.author no es una cadena. ¿Puedo leer el valor como una cadena o puedo convertir el objeto en String?
¡Gracias!
Editar: Aquí está mi clase de Todo
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
¿Cambiar mi autor a StringProperty afectará algo negativamente? Quizás pueda renunciar al casting por completo.
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
alguna idea?