-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharticle_api.py
130 lines (123 loc) · 4.86 KB
/
article_api.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
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
119
120
121
122
123
124
125
126
127
128
129
130
from flask import Flask, jsonify, request, session
from flask_restful import reqparse, abort, Api, Resource
from config import config
from models import db, BoardArticle, Board
import json
parser = reqparse.RequestParser()
parser.add_argument("id")
parser.add_argument("title")
parser.add_argument("content")
parser.add_argument("board_id")
parser.add_argument("n")
class Article(Resource):
def get(self, board_id=None, board_article_id=None):
if board_article_id:
current_article = BoardArticle.query.filter_by(id=board_article_id).first().to_dict()
response = {
"status":"success",
"result": current_article,
"message": "printed a selected article"
}
return jsonify(response)
else:
article_list = BoardArticle.query.filter_by(board_id = board_id)
article_list = [a.to_dict() for a in article_list]
response={
"status": "success",
"result": article_list,
"message": "printed list of articles"
}
return jsonify(response)
def post(self, board_id=None):
args = parser.parse_args()
author = session.get("user")
if author :
print(args)
new_article = BoardArticle(args["title"], args["content"], board_id,author)
db.session.add(new_article)
db.session.commit()
response = {
"status":"success",
"result": {"title": args["title"]},
"message": "successfully posted a new article"
}
return jsonify(response)
else:
response ={
"status": "error",
"message": "you have to login first to post an article"
}
return jsonify(response)
def put(self, board_id=None, board_article_id=None):
args = parser.parse_args()
author = session.get("user")
if author:
current_article = BoardArticle.query.filter_by(id=board_article_id).first()
if current_article.user_id == author:
current_article.title = args["title"]
current_article.content = args["content"]
db.session.commit()
response = {
"status":"success",
"result": {"title": args["title"], "content": args["content"]},
"message": "successfully updated an article"
}
return jsonify(response)
else:
response={
"status": "error",
"message": "the user is not allowed to update current article"
}
return jsonify(response)
else:
response ={
"status": "error",
"message": "you have to login first to update an article "
}
return jsonify(response)
def delete(self, board_id=None, board_article_id=None):
author = session.get("user")
if author:
current_article = BoardArticle.query.filter_by(id=board_article_id).first()
if current_article.user_id == author:
BoardArticle.query.filter_by(id=board_article_id).delete()
db.session.commit()
response ={
"status": "success",
"result": {
"id":board_article_id,
},
"message": "successfully deleted"
}
return jsonify(response)
else:
response={
"status": "error",
"message": "the user is not allowed to delete current article"
}
return jsonify(response)
else:
response ={
"status": "error",
"message": "you have to login first to delete an article"
}
return jsonify(response)
# parser = reqparse.RequestParser()
# parser.add_argument("n")
class DashBoard(Resource):
def get(self):
result = []
args = parser.parse_args()
num = args["n"]
all_board = Board.query.all()
for b in all_board:
board_id = b.id
articles = BoardArticle.query.filter_by(board_id = board_id).order_by(BoardArticle.create_date.desc()).limit(num)
# .order_by(BoardArticle.create_date.desc()).limit(num)
result.extend([a.title for a in articles])
# print("id", board_id,"article", len([a.to_dict() for a in articles]))
response={
"status":"success",
"result":result
}
return jsonify(response)