summaryrefslogtreecommitdiff
path: root/src/mailman/model/subscriptions.py
diff options
context:
space:
mode:
authorAurélien Bompard2016-04-25 19:58:44 +0200
committerAurélien Bompard2016-04-26 00:22:47 +0200
commitbbaf4977a0099c5c0f27f37e5789598e82549585 (patch)
tree7d00d27eafbb6176e4b8b03b1ba0ca7a8c6e579b /src/mailman/model/subscriptions.py
parent1656e00a6913a05140e2571e5cfb01576cbe2c31 (diff)
downloadmailman-bbaf4977a0099c5c0f27f37e5789598e82549585.tar.gz
mailman-bbaf4977a0099c5c0f27f37e5789598e82549585.tar.zst
mailman-bbaf4977a0099c5c0f27f37e5789598e82549585.zip
Diffstat (limited to 'src/mailman/model/subscriptions.py')
-rw-r--r--src/mailman/model/subscriptions.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/mailman/model/subscriptions.py b/src/mailman/model/subscriptions.py
index 443128edb..6819c112c 100644
--- a/src/mailman/model/subscriptions.py
+++ b/src/mailman/model/subscriptions.py
@@ -88,7 +88,8 @@ class SubscriptionService:
# joined on the member's user. Add the resulting email address to the
# selected values to be able to sort on it later on.
q_address = store.query(Member, Address.email).join(Member._address)
- q_user = store.query(Member, Address.email).join(Member._user)
+ q_user = store.query(Member, Address.email).join(
+ User, User.id == Member.user_id).join(User._preferred_address)
if subscriber is not None:
if isinstance(subscriber, str):
# subscriber is an email address.
@@ -97,19 +98,20 @@ class SubscriptionService:
subscriber = subscriber.replace('*', '%')
q_address = q_address.filter(
Address.email.like(subscriber))
- q_user = q_user.join(User.addresses).filter(
- Address.email.like(subscriber))
+ q_user = q_user.filter(Address.email.like(subscriber))
else:
q_address = q_address.filter(
Address.email == subscriber)
- q_user = q_user.join(User.addresses).filter(
- Address.email == subscriber)
+ q_user = q_user.filter(Address.email == subscriber)
else:
# subscriber is a user id.
q_address = q_address.join(Address.user).filter(
User._user_id == subscriber)
- q_user = q_user.join(User._preferred_address).filter(
- User._user_id == subscriber)
+ q_user = q_user.filter(User._user_id == subscriber)
+ else:
+ # We're not searching for a subscriber, only select preferred
+ # addresses (see issue 227).
+ q_user = q_user.filter(Address.id == User._preferred_address_id)
# Add additional filters to both queries.
if list_id is not None:
q_address = q_address.filter(Member.list_id == list_id)