/
simplereview.py
executable file
·56 lines (43 loc) · 1.62 KB
/
simplereview.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
#!/usr/bin/env python
import os
import os.path
import sys
ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(ROOT, "libs"))
if os.getenv("SIMPLE_REVIEW_CONFIG", None) is None:
os.environ["SIMPLE_REVIEW_CONFIG"] = "dev.config"
from simplereview.commentgrouper import CommentsGroupedByLineNumber
from simplereview.domain import Review
from simplereview.lineanchor import line_anchor
from simplereview.reviewlist import ReviewList
import simplereview.config
import web
config = simplereview.config.read()
urls = (
"/", "list_reviews",
"/create_review", "create_review",
"/review/(.*)/comments_json", "comments_json",
"/review/(.*)/add_comment", "add_comment",
"/review/(.*)", "review",
)
class list_reviews:
def GET(self):
return config.render.list_reviews(ReviewList(config.repo.list_by_date()))
class create_review:
def POST(self):
i = web.webapi.input()
return "%s" % config.repo.save(Review(title=i.title, diff=i.diff, diff_author=i.diff_author))
class comments_json:
def GET(self, review_id):
web.header("Content-Type", "application/json")
return CommentsGroupedByLineNumber(config.repo.find_by_id(review_id).comments).to_json()
class add_comment:
def POST(self, review_id):
i = web.webapi.input()
config.repo.add_comment(review_id, i.author, i.comment, i.line_number)
web.seeother("/review/%s%s" % (review_id, line_anchor(i.line_number)))
class review:
def GET(self, review_id):
return config.render.review(config.repo.find_by_id(review_id))
if __name__ == "__main__":
web.application(urls, globals()).run()