forked from johnschimmel/Python-Flask-Login-Sample
-
Notifications
You must be signed in to change notification settings - Fork 0
/
notes.py
92 lines (62 loc) · 2.05 KB
/
notes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import os, datetime
from flask import current_app, Blueprint, render_template, abort, request, flash, redirect, url_for, jsonify
from flask.ext.login import (current_user, login_required, login_user, logout_user, confirm_login, fresh_login_required)
from jinja2 import TemplateNotFound
import models
from libs.User import User
import random, string
notes_app = Blueprint('notes_app', __name__, template_folder='templates')
@notes_app.route('/')
def index():
templateData = {
'notes' : models.Note.objects.order_by("-last_updated")
}
return render_template('index.html', **templateData)
@notes_app.route("/notes/create", methods=["GET","POST"])
@login_required
def admin_entry_create():
if request.method == "POST":
note = models.Note()
note.title = request.form.get('title','')
note.content = request.form.get('content')
# associate note to currently logged in user
note.user = current_user.get_mongo_doc()
note.save()
return redirect('/notes/%s' % note.id)
else:
template_data = {
'title' : 'Create new note',
'note' : None
}
return render_template('/note_edit.html', **template_data)
@notes_app.route("/notes/<note_id>/edit", methods=["GET","POST"])
@login_required
def admin_entry_edit(note_id):
# get single document returned
note = models.Note.objects().with_id(note_id)
if note:
if note.user.id != current_user.id:
return "Sorry you do not have permission to edit this note"
if request.method == "POST":
note.title = request.form.get('title','')
note.content = request.form.get('content')
note.save()
flash('Note has been updated')
template_data = {
'title' : 'Edit note',
'note' : note
}
return render_template('/note_edit.html', **template_data)
else:
return "Unable to find entry %s" % note_id
@notes_app.route('/notes/<note_id>')
def entry_page(note_id):
# get class notes entry with matching slug
note = models.Note.objects().with_id(note_id)
if note:
templateData = {
'note' : note
}
return render_template('note_display.html', **templateData)
else:
return "not found"