-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
120 lines (105 loc) · 3.71 KB
/
Copy pathmain.py
File metadata and controls
120 lines (105 loc) · 3.71 KB
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import model_datastore
from flask import Flask, request, jsonify, after_this_request, make_response, session
app = Flask(__name__)
model = model_datastore
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
if model.isCorrectUser(username, request.form['password']):
model.destroyAllUserSessions(username)
session = model.createSession(username)
session['uuid'] = session['sessionID']
out = jsonify(True)
return out
else:
return jsonify(False)
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
if model.isUserInDB(request.form['username']):
return jsonify(False)
else:
data = request.form.to_dict(flat=True)
data['favBooks'] = []
user = model.create(data)
return jsonify(True)
@app.route('/Book', methods=['GET', 'POST', 'DELETE'])
@app.route('/Book/<id>', methods=['GET', 'POST', 'DELETE'])
def addBook(id = None):
if request.method == 'POST':
data = request.form.to_dict(flat=True)
if not model.checkIfBookExists(data['author'], data['title']):
img = request.files.get('image')
image_url = model.upload_image_file(img)
data['imageUrl'] = image_url
book = model.createBook(data)
return jsonify(book)
else:
return jsonify(False)
elif request.method == 'GET':
if id is None:
books = model.BookList()
return jsonify(books)
else:
book = model.BookRead(id)
return jsonify(book)
else:
model.BookDelete(id)
@app.route("/isLogged", methods=['GET', 'POST'] )
def isLogged():
if 'uuid' not in session:
return jsonify(False)
else:
uuid = session['uuid']
if not model.checkIfSessionActive(uuid):
return jsonify(False)
else:
return jsonify(True)
@app.route("/Author", methods=['GET', 'POST'])
def addAuthor():
if request.method == 'POST':
if model.isAuthorInDB(request.form['firstName'],
request.form['lastName']):
return jsonify(False)
else:
data = request.form.to_dict(flat=True)
book = model.createAuthor(data)
return jsonify(True)
elif request.method == 'GET':
return jsonify(model.AuthorList())
@app.route("/logout", methods= ['POST', 'GET'])
def logout():
uuid = session['uuid']
user = model.getUsernameFromSession(uuid)
model.destroyAllUserSessions(user)
out = jsonify(msg = 'Logged out')
session.pop('uuid', None)
return out
@app.route("/favBooks/<bookId>", methods= ['POST', 'GET', 'DELETE'])
@app.route("/favBooks", methods= ['POST', 'GET', 'DELETE'])
def favBooks(bookID = None):
uuid = session['uuid']
username = model.getUsernameFromSession(uuid)
user = model.getUser(username)
if request.method == 'POST':
book = bookID
fav = list(user['favBooks'])
fav.append(book)
user['favBooks'] = fav
u = model.UserUpdate(user, user[id])
return jsonify(True)
elif request.method == 'GET':
favBooks = list((user['favBooks']))
books = []
for book in favBooks:
books.append(model.BookRead(book))
return jsonify(books)
else:
favBooks = list((user['favBooks']))
for book in favBooks:
if book == bookID:
favBooks.remove(book)
user['favBooks'] = fav
u = model.UserUpdate(user, user[id])
return jsonify(True)