SUBTLE BUGS
def change_username(sender, user, username, password, **kwargs):
from_name = user.username
to_name = username
if user.things.exists():
# delete things
follower_cache_keys = [key(user, thing)
for user in thing.followers.all() in
for thing in user.things.all()]
# invalidate caches
if user.other_things.exists():
# delete other things
# change username
user.username = username
user.save()
data = {
'fromname': from_name,
'toname': to_name,
}
# inform other services
ping('usernamechange', data)
SUBTLE BUGS
query = ''''''
cursor = connection.cursor()
cursor.execute(query.format())
result = list(cursor)
return zip(User.objects.filter(id__in=[row[0] for row in result]),
[row[1] for row in result])
cursor = connection.cursor()
cursor.execute(query.format())
result = list(cursor)
id_list = [row[0] for row in result]
priv_list = [row[1] for row in result]
users = User.objects.in_bulk(id_list)
users = [users[pk] for pk in id_list]
return zip(users, priv_list)
IDIOMATIC CODE
if len(records) > 0:
if records:
navs = {}
for (portfolio, equity, position) in data:
if portfolio not in navs:
navs[portfolio] = 0
navs[portfolio] += position * prices[equity]
navs = {}
for (portfolio, equity, position) in data:
navs[portfolio] = (navs.get(portfolio, 0)
+ position * prices[equity])
# swap
a, b = b, aPlayFUL CLEVERNESS
return [ProviderRoomTypeTuple(code=i,
name='%s %s Room' % (i, ('Person', 'People')[i != '1']),
quantity=int(i), max_pax_quantity=None, min_pax_quantity=None,
max_adult_quantity=None, min_adult_quantity=None,
max_child_quantity=None, min_child_quantity=None)
for i in ExpediaRequest.ROOM_TYPES]
PERFORMANCE ISSUES
- that QuerySets are lazy.
- when they are evaluated.
- how the data is held in memory.
DISCUSSION & EARLY FEEDBACK
MISUSES & ABUSES
group_blocks = [{k: g} for k, g in groupby(subavailability_list,
key=lambda x: x.ref_code)]
incremental_prices = []
for block in group_blocks:
for sa in block.itervalues():
group_price = 0
for subavailability in sa:
group_price += subavailability.price
incremental_prices.append(group_price)
block_qty = ','.join(str(len(c))
for g in group_blocks for c in g.values())
block_id = ','.join(b for g in group_blocks for b in g)
incremental_prices = ','.join(str(p) for p in incremental_prices)
guest_qty = ','.join(str(b.subproduct.pax_list[0].adult_quantity)
for g in group_blocks
for bs in g.values()
for b in bs)
group_blocks = dict(groupby(subavailability_list,
key=lambda x: x.ref_code))
incremental_prices = []
block_qty = []
block_id = []
guest_qty = []
for ref_code, subavailability_group in group_blocks.iteritems():
group_price = 0
block_qty.append(str(len(subavailability_group)))
block_id.append(ref_code)
for sa in subavailability_group:
group_price += sa.price
guest_qty.append(str(sa.subproduct.pax_list[0].adult_quantity))
incremental_prices.append(str(group_price))
Code Review
By Mehmet Catalbas
Code Review
- 663