У меня есть следующий класс:
Код: Выделить всё
class DisplayArtwork(Document):
name = StringField(required=True)
email = EmailField(required=True)
country = StringField(required=True)
phone = StringField()
artname = StringField(required=True)
medium = StringField(required=True)
caption = StringField(required=True)
filename = StringField(required=True)
votes = ListField(EmailField())
published = DateTimeField(required=True)
Код: Выделить всё
@app.route("/gallery")
def gallery():
return render_template("gallery.html", artworks=DisplayArtwork.objects)
Мой вопрос: могу ли я проверить, является ли адрес электронной почты текущего пользователя (
Код: Выделить всё
current_user.get_id()Что я пробовал:
Во-первых, я проверяю, аутентифицирован ли текущий пользователь, затем проверяю, определено ли произведение искусства['votes'][current_user.get_id()].
Код: Выделить всё
{% if current_user.is_authenticated %}
{% if artwork['votes'][current_user.get_id()] is defined%}
Upvotes: {{artwork['votes']|length}}
{% else %}
Upvotes: {{artwork['votes']|length}}
{% endif %}
{% else %}
[url=/login]Login to Upvote[/url]
{% endif %}
Код: Выделить всё
function upvote(filename) {
const formData = new FormData();
formData.append('filename', filename);
fetch('/upvote', {
method: 'post',
body: formData
});
upvotebutton = document.getElementById(filename);
if (!upvotebutton) {alert('Error: ${filename} button not found');}
if (upvotebutton.classList.contains('btn-outline-success')) {
upvotebutton.classList.remove('btn-outline-success');
upvotebutton.classList.add('btn-success');
upvotebutton.innerHTML = 'Upvotes: ' + (parseInt(upvotebutton.innerHTML.split(' ')[1]) + 1);
}
else if (upvotebutton.classList.contains('btn-success')) {
upvotebutton.classList.remove('btn-success');
upvotebutton.classList.add('btn-outline-success');
upvotebutton.innerHTML = 'Upvotes: ' + (parseInt(upvotebutton.innerHTML.split(' ')[1]) - 1);
}
}
Код: Выделить всё
@app.route("/upvote", methods=["POST"])
def upvote():
if current_user.is_authenticated:
artwork = DisplayArtwork.objects(filename=request.form["filename"])
if artwork:
response = None
try:
artwork.update(pull__votes=current_user.get_id())
response = "downvoted"
except KeyError:
artwork.update(add_to_set__votes=[current_user.get_id()])
response = "upvoted"
return response, 200
return "Failed to upvote", 500
return "Login to upvote", 401
Как заставить работать функцию голосования?
Подробнее здесь: https://stackoverflow.com/questions/792 ... 2-template
Мобильная версия