Skip to content

Commit e6eabbd

Browse files
authored
In single-tree setup, send owner notification also for empty tree ID (#694)
1 parent 5e79870 commit e6eabbd

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

gramps_webapi/api/resources/user.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,8 @@ def get(self):
592592
tree=tree,
593593
# for single-tree setups, send e-mail also to admins
594594
include_admins=not is_multi,
595+
# for single-tree setups, send e-mail to users with empty tree ID
596+
include_treeless=not is_multi,
595597
)
596598
title = _("E-mail address confirmation")
597599
message = _(

gramps_webapi/api/tasks.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,22 @@ def send_email_confirm_email(email: str, user_name: str, token: str):
121121

122122
@shared_task()
123123
def send_email_new_user(
124-
username: str, fullname: str, email: str, tree: str, include_admins: bool
124+
username: str,
125+
fullname: str,
126+
email: str,
127+
tree: str,
128+
include_admins: bool,
129+
include_treeless: bool,
125130
):
126131
"""Send an email to owners to notify of a new registered user."""
127132
base_url = get_config("BASE_URL").rstrip("/")
128133
body = email_new_user(
129134
base_url=base_url, username=username, fullname=fullname, email=email
130135
)
131136
subject = _("New registered user")
132-
emails = get_owner_emails(tree=tree, include_admins=include_admins)
137+
emails = get_owner_emails(
138+
tree=tree, include_admins=include_admins, include_treeless=include_treeless
139+
)
133140
if emails:
134141
send_email(subject=subject, body=body, to=emails)
135142

gramps_webapi/auth/__init__.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
user_db = SQLAlchemy()
4242

43+
4344
def add_user(
4445
name: str,
4546
password: str,
@@ -261,17 +262,20 @@ def get_permissions(username: str, tree: str) -> Set[str]:
261262
return permissions
262263

263264

264-
def get_owner_emails(tree: str, include_admins: bool = False) -> List[str]:
265+
def get_owner_emails(
266+
tree: str, include_admins: bool = False, include_treeless: bool = False
267+
) -> List[str]:
265268
"""Get e-mail addresses of all tree owners (and optionally include site admins)."""
266269
query = user_db.session.query(User) # pylint: disable=no-member
270+
if include_treeless:
271+
query = query.filter(sa.or_(User.tree == tree, User.tree.is_(None)))
272+
else:
273+
query = query.filter(User.tree == tree)
267274
if include_admins:
268-
users = (
269-
query.filter_by(tree=tree)
270-
.filter(sa.or_(User.role == ROLE_OWNER, User.role == ROLE_ADMIN))
271-
.all()
272-
)
275+
query = query.filter(sa.or_(User.role == ROLE_OWNER, User.role == ROLE_ADMIN))
273276
else:
274-
users = query.filter_by(tree=tree, role=ROLE_OWNER).all()
277+
query = query.filter_by(role=ROLE_OWNER)
278+
users = query.all()
275279
return [user.email for user in users if user.email]
276280

277281

0 commit comments

Comments
 (0)