idiomatic python

* make "process_fetched_list" private
* rename fetch_args to args
* a few logic simplifications
This commit is contained in:
Martin Zimmermann 2014-05-03 10:47:48 +02:00
parent 26ae30f76c
commit 59bfde7c03
2 changed files with 39 additions and 46 deletions

View File

@ -108,7 +108,7 @@ class Comments:
sql_args = [uri, mode, mode, after]
if parent != 'any':
if parent is None or parent == 'NULL':
if parent is None:
sql.append('AND comments.parent IS NULL')
else:
sql.append('AND comments.parent=?')
@ -117,7 +117,7 @@ class Comments:
sql.append('ORDER BY ? ASC')
sql_args.append(order_by)
if limit != None and limit != 0:
if limit:
sql.append('LIMIT ?')
sql_args.append(limit)

View File

@ -320,62 +320,54 @@ class API(object):
@requires(str, 'uri')
def fetch(self, environ, request, uri):
fetch_args={'uri': uri}
if request.args.get('after'):
fetch_args['after'] = request.args.get('after')
after = request.args.get('after')
else:
after = 0
if request.args.get('limit'):
try:
fetch_args['limit'] = int(request.args.get('limit'))
except ValueError:
return BadRequest("limit should be integer")
args = {
'uri': uri,
'after': request.args.get('after', 0)
}
if request.args.get('parent'):
parent_arg = request.args.get('parent')
if parent_arg == 'NULL':
fetch_args['parent'] = parent_arg
root_id = None
else:
try:
fetch_args['parent'] = int(parent_arg)
root_id = int(parent_arg)
except ValueError:
return BadRequest("parent should be integer or NULL")
try:
args['limit'] = int(request.args.get('limit'))
except TypeError:
args['limit'] = None
except ValueError:
return BadRequest("limit should be integer")
if request.args.get('parent') is not None:
try:
args['parent'] = int(request.args.get('parent'))
root_id = args['parent']
except ValueError:
return BadRequest("parent should be integer")
else:
fetch_args['parent'] = 'NULL'
args['parent'] = None
root_id = None
if request.args.get('plain', '0') == '0':
plain = True
else:
plain = False
plain = request.args.get('plain', '0') == '0'
reply_counts = self.comments.reply_count(uri, after)
reply_counts = self.comments.reply_count(uri, args['after'])
if 'limit' in fetch_args and fetch_args['limit'] == 0:
if args['limit'] == 0:
root_list = []
else:
root_list = list(self.comments.fetch(**fetch_args))
root_list = list(self.comments.fetch(**args))
if not root_list:
raise NotFound
if root_id not in reply_counts:
reply_counts[root_id] = 0
if request.args.get('nested_limit'):
try:
nested_limit = int(request.args.get('nested_limit'))
except ValueError:
return BadRequest("nested_limit should be integer")
else:
try:
nested_limit = int(request.args.get('nested_limit'))
except TypeError:
nested_limit = None
except ValueError:
return BadRequest("nested_limit should be integer")
rv = {
'id' : root_id,
'total_replies' : reply_counts[root_id],
'hidden_replies' : reply_counts[root_id] - len(root_list),
'replies' : self.process_fetched_list(root_list, plain)
'replies' : self._process_fetched_list(root_list, plain)
}
# We are only checking for one level deep comments
if root_id is None:
@ -384,23 +376,24 @@ class API(object):
comment['total_replies'] = reply_counts[comment['id']]
if nested_limit is not None:
if nested_limit > 0:
fetch_args['parent'] = comment['id']
fetch_args['limit'] = nested_limit
replies = list(self.comments.fetch(**fetch_args))
args['parent'] = comment['id']
args['limit'] = nested_limit
replies = list(self.comments.fetch(**args))
else:
replies = []
else:
fetch_args['parent'] = comment['id']
replies = list(self.comments.fetch(**fetch_args))
args['parent'] = comment['id']
replies = list(self.comments.fetch(**args))
else:
comment['total_replies'] = 0
replies = []
comment['hidden_replies'] = comment['total_replies'] - len(replies)
comment['replies'] = self.process_fetched_list(replies, plain)
comment['replies'] = self._process_fetched_list(replies, plain)
return JSON(rv, 200)
def process_fetched_list(self, fetched_list, plain=False):
def _process_fetched_list(self, fetched_list, plain=False):
for item in fetched_list:
key = item['email'] or item['remote_addr']