• R/O
  • HTTP
  • SSH
  • HTTPS

提交

標籤
無標籤

Frequently used words (click to add to your profile)

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

allura


Commit MetaInfo

修訂d7ab1166056dbb289fc12b857cd528cff4862dd1 (tree)
時間2012-06-14 23:28:20
作者bolkimen <bolkimen@yaho...>
Commiterbolkimen

Log Message

[#4347] ticket:82 add validator, fix command

Change Summary

差異

--- a/ForgeBlog/forgeblog/command/rssfeeds.py
+++ b/ForgeBlog/forgeblog/command/rssfeeds.py
@@ -116,7 +116,7 @@ class MDHTMLParser(HTMLParser):
116116
117117 class RssFeedsCommand(base.BlogCommand):
118118 summary = 'Rss feed client'
119- parser = base.Command.standard_parser(verbose=True)
119+ parser = base.BlogCommand.standard_parser(verbose=True)
120120 parser.add_option('-a', '--appid', dest='appid', default='',
121121 help='application id')
122122 parser.add_option('-u', '--username', dest='username', default='root',
@@ -160,7 +160,7 @@ class RssFeedsCommand(base.BlogCommand):
160160 allura_base.log.info("Get feed: %s" % feed_url)
161161 f = feedparser.parse(feed_url)
162162 if f.bozo:
163- base.log.exception("%s: %s" % (feed_url, f.bozo_exception))
163+ allura_base.log.exception("%s: %s" % (feed_url, f.bozo_exception))
164164 return
165165 for e in f.entries:
166166 title = e.title
--- a/ForgeBlog/forgeblog/main.py
+++ b/ForgeBlog/forgeblog/main.py
@@ -9,6 +9,7 @@ import pymongo
99 from tg import expose, validate, redirect, flash
1010 from tg.decorators import with_trailing_slash, without_trailing_slash
1111 from pylons import g, c, request, response
12+import formencode
1213 from formencode import validators
1314 from webob import exc
1415
@@ -401,18 +402,30 @@ class BlogAdminController(DefaultAdminController):
401402 @without_trailing_slash
402403 @expose()
403404 @require_post()
404- def set_exfeed(self, **kw):
405- new_exfeed = kw.get('new_exfeed', None)
405+ def set_exfeed(self, new_exfeed=None, **kw):
406406 exfeed_val = kw.get('exfeed', [])
407407 if type(exfeed_val) == unicode:
408- exfeed_list = []
409- exfeed_list.append(exfeed_val)
408+ tmp_exfeed_list = []
409+ tmp_exfeed_list.append(exfeed_val)
410410 else:
411- exfeed_list = exfeed_val
411+ tmp_exfeed_list = exfeed_val
412412
413413 if new_exfeed is not None and new_exfeed != '':
414- exfeed_list.append(new_exfeed)
414+ tmp_exfeed_list.append(new_exfeed)
415+
416+ exfeed_list = []
417+ invalid_list = []
418+ v = validators.URL()
419+ for link in tmp_exfeed_list:
420+ try:
421+ v.to_python(link)
422+ exfeed_list.append(link)
423+ except formencode.api.Invalid:
424+ invalid_list.append(link)
415425
416426 self.app.external_feeds_list = exfeed_list
417427 flash('External feeds updated')
428+ if len(invalid_list) > 0:
429+ flash('Invalid link(s): %s' % ','.join(link for link in invalid_list))
430+
418431 redirect(c.project.url()+'admin/tools')
--- a/ForgeBlog/forgeblog/templates/blog/admin_exfeed.html
+++ b/ForgeBlog/forgeblog/templates/blog/admin_exfeed.html
@@ -15,7 +15,7 @@
1515 {% if allow_config %}
1616 <div class="grid-13">&nbsp;</div>
1717 <div class="grid-13">
18- <input type="text" name="new_exfeed" id="new_exfeed" value=""/>
18+ <label>Add RSS/Atom feed URL:</label> <input type="text" name="new_exfeed" id="new_exfeed" value=""/>
1919 </div>
2020 <div class="grid-13">&nbsp;</div>
2121 <hr>