Estou escrevendo um aplicativo de lista de tarefas para me ajudar a começar a usar o Python. O aplicativo está sendo executado no GAE e estou armazenando itens de tarefas no armazenamento de dados. Eu quero exibir os itens de todos para eles, e apenas eles. O problema é que o aplicativo atualmente exibe todos os itens para todos os usuários, então eu posso ver o que você escreve e você vê o que escrevo. Achei que lançar meu objeto todo.author em uma string e ver se ele corresponde ao nome do usuário seria um bom começo, mas não consigo descobrir como fazer isso.
Isso é o que tenho em meu 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('/')
No meu index.html eu tinha 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>
mas gostaria de exibir os itens apenas para o usuário que os criou. Pensei em tentar
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
sem sucesso. A lista fica em branco. Presumi que fosse porque todo.author não é uma string. Posso ler o valor como uma string ou posso converter o objeto em String?
Obrigado!
Editar: aqui está minha classe de tarefas
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
Mudar meu autor para StringProperty afetará negativamente? Talvez eu possa renunciar totalmente ao elenco.
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
alguma ideia?