Abhilash Raj pushed to branch master at GNU Mailman / Mailman Core
Commits:
33d063c6 by Abhilash Raj at 2021-02-10T03:42:27+00:00
Reduce the number of database queries in UserManager.
Thanks to Daniel Silverstone for the suggestion and patch.
This reduces the number of queries made for get_user and get_address methods
and uses .one_or_none() instead of calling .count() and .one() separately which
results in two database lookups.
The performance improvement of this change is small, but does reduce the code a
bit too.
- - - - -
fad43095 by Abhilash Raj at 2021-02-10T03:42:27+00:00
Merge branch 'member-lookup' into 'master'
Reduce the number of database queries in UserManager.
Closes #700
See merge request mailman/mailman!777
- - - - -
2 changed files:
- src/mailman/docs/NEWS.rst
- src/mailman/model/usermanager.py
Changes:
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -19,6 +19,11 @@ REST
----
* Improve the speed of Members lookup via REST API. (Related to #700)
+
+Other
+-----
+* Reduce the number of database calls in UserManager. (Closes #700)
+
.. _news-3.3.3:
3.3.3
=====================================
src/mailman/model/usermanager.py
=====================================
@@ -82,10 +82,10 @@ class UserManager:
@dbconnection
def get_user(self, store, email):
"""See `IUserManager`."""
- addresses = store.query(Address).filter_by(email=email.lower())
- if addresses.count() == 0:
+ address = self.get_address(email)
+ if address is None:
return None
- return addresses.one().user
+ return address.user
@dbconnection
def get_user_by_id(self, store, user_id):
@@ -138,10 +138,8 @@ class UserManager:
@dbconnection
def get_address(self, store, email):
"""See `IUserManager`."""
- addresses = store.query(Address).filter_by(email=email.lower())
- if addresses.count() == 0:
- return None
- return addresses.one()
+ return store.query(
+ Address).filter_by(email=email.lower()).one_or_none()
@property
@dbconnection
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/d6e7bd8367ad80135f49747f70a7f26d96585bde...fad43095d2665a0b37f9a5a4826016d15c3ef15c
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/d6e7bd8367ad80135f49747f70a7f26d96585bde...fad43095d2665a0b37f9a5a4826016d15c3ef15c
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]