• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

allura


Commit MetaInfo

Revisión793d0537cf520b03f7a154ab3574b0abad798b8b (tree)
Tiempo2010-06-12 03:17:14
AutorWolf <wolf@geek...>
CommiterWolf

Log Message

[#564] teach Wiki REST API and script to get_all

Cambiar Resumen

Diferencia incremental

--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -647,7 +647,16 @@ Some *emphasized* and **strong** text
647647 class RootRestController(RestController):
648648
649649 @expose('json:')
650- def get_one(self, title):
650+ def get_all(self, **kw):
651+ page_titles = []
652+ pages = model.Page.query.find(dict(app_config_id=c.app.config._id))
653+ for page in pages:
654+ if has_artifact_access('read', page)():
655+ page_titles.append(page.title)
656+ return dict(pages=page_titles)
657+
658+ @expose('json:')
659+ def get_one(self, title, **kw):
651660 page = model.Page.query.get(app_config_id=c.app.config._id, title=title)
652661 if page is None:
653662 raise exc.HTTPNotFound, title
--- a/scripts/wiki-post.py
+++ b/scripts/wiki-post.py
@@ -67,7 +67,7 @@ class Signer(object):
6767 return params
6868
6969 def main():
70- usage = 'usage: %prog [options] PageName [file]'
70+ usage = 'usage: %prog [options] [PageName [file]]'
7171 op = OptionParser(usage=usage)
7272 op.add_option('-c', '--config', metavar='CONFIG')
7373 op.add_option('-a', '--api-key', metavar='KEY')
@@ -75,9 +75,19 @@ def main():
7575 op.add_option('-u', '--url', metavar='URL')
7676 (options, args) = op.parse_args()
7777
78- page = args[0]
79- f = open(args[1], 'r') if len(args)>1 else stdin
80- markdown = f.read()
78+ pagename = None
79+ markdown = None
80+ method = 'GET'
81+
82+ pagename_given = len(args) >= 1
83+ if pagename_given:
84+ pagename = args[0]
85+
86+ filename_given = len(args) > 1
87+ if filename_given:
88+ method = 'PUT'
89+ f = open(args[1], 'r')
90+ markdown = f.read()
8191
8292 config = ConfigParser()
8393 config.read([str(os.path.expanduser('~/.forge-api.ini')), str(options.config)])
@@ -86,12 +96,18 @@ def main():
8696 secret_key = options.secret_key or config.get('keys', 'secret-key')
8797 # print an error message if no keys are found
8898
89- url = urljoin(options.url or config.get('wiki', 'url'), page)
99+ url = options.url or config.get('wiki', 'url')
100+ if pagename_given:
101+ url = urljoin(url, pagename)
90102
91103 sign = Signer(secret_key, api_key)
92- params = sign(urlparse(url).path, [('text', markdown)])
104+ params = [('text', markdown)] if method=='PUT' else []
105+ params = sign(urlparse(url).path, params)
93106 try:
94- result = urlopen(url, urlencode(params))
107+ if method=='PUT':
108+ result = urlopen(url, urlencode(params))
109+ else:
110+ result = urlopen(url+'?'+urlencode(params))
95111 stdout.write(result.read())
96112 except HTTPError, e:
97113 stdout.write(e.read())