first() backed by limitby to avoid memory and cpu cycles wasting

This commit is contained in:
Michele Comitini
2013-08-13 09:18:36 +02:00
parent 8fbab4d505
commit f8bd8c274c
+7 -10
View File
@@ -1899,8 +1899,8 @@ class Auth(object):
logins user as specified by username (or email) and password logins user as specified by username (or email) and password
""" """
settings = self._get_login_settings() settings = self._get_login_settings()
user = self.db(settings.table_user[settings.userfield] == \ user = settings.table_user(**{settings.userfield: \
username).select().first() username})
if user and user.get(settings.passfield, False): if user and user.get(settings.passfield, False):
password = settings.table_user[ password = settings.table_user[
settings.passfield].validate(password)[0] settings.passfield].validate(password)[0]
@@ -2168,8 +2168,7 @@ class Auth(object):
accepted_form = True accepted_form = True
# check for username in db # check for username in db
user = self.db(table_user[username] user = table_user(**{username: form.vars[username]})
== form.vars[username]).select().first()
if user: if user:
# user in db, check if registration pending or disabled # user in db, check if registration pending or disabled
temp_user = user temp_user = user
@@ -2440,9 +2439,7 @@ class Auth(object):
if not self.settings.registration_requires_verification: if not self.settings.registration_requires_verification:
table_user[form.vars.id] = dict(registration_key='') table_user[form.vars.id] = dict(registration_key='')
session.flash = self.messages.registration_successful session.flash = self.messages.registration_successful
user = self.db( user = table_user(**{username: form.vars[username]})
table_user[username] == form.vars[username]
).select().first()
self.login_user(user) self.login_user(user)
session.flash = self.messages.logged_in session.flash = self.messages.logged_in
self.log_event(log, form.vars) self.log_event(log, form.vars)
@@ -2882,7 +2879,7 @@ class Auth(object):
onvalidation=onvalidation, onvalidation=onvalidation,
hideerror=self.settings.hideerror): hideerror=self.settings.hideerror):
if not form.vars['old_password'] == s.select().first()[passfield]: if not form.vars['old_password'] == s.select(limitby=(0,1), orderby_on_limitby=False).first()[passfield]:
form.errors['old_password'] = self.messages.invalid_password form.errors['old_password'] = self.messages.invalid_password
else: else:
d = {passfield: str(form.vars.new_password)} d = {passfield: str(form.vars.new_password)}
@@ -3320,7 +3317,7 @@ class Auth(object):
if group_id == 0: if group_id == 0:
group_id = self.user_group() group_id = self.user_group()
record = self.db(permission.group_id == group_id)(permission.name == name)(permission.table_name == str(table_name))( record = self.db(permission.group_id == group_id)(permission.name == name)(permission.table_name == str(table_name))(
permission.record_id == long(record_id)).select().first() permission.record_id == long(record_id)).select(limitby=(0,1), orderby_on_limitby=False).first()
if record: if record:
id = record.id id = record.id
else: else:
@@ -5206,7 +5203,7 @@ class Wiki(object):
db.wiki_tag.insert(name=tag, wiki_page=id) db.wiki_tag.insert(name=tag, wiki_page=id)
def update_tags_update(dbset, page, db=db): def update_tags_update(dbset, page, db=db):
page = dbset.select().first() page = dbset.select(limitby=(0,1)).first()
db(db.wiki_tag.wiki_page == page.id).delete() db(db.wiki_tag.wiki_page == page.id).delete()
for tag in page.tags or []: for tag in page.tags or []:
tag = tag.strip().lower() tag = tag.strip().lower()