Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion forum/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
Openedx forum app.
"""

__version__ = "0.5.1"
__version__ = "0.5.2"
22 changes: 14 additions & 8 deletions forum/api/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from django.http import HttpRequest
from forum.backend import get_backend
from forum.backends.mysql.api import MySQLBackend
from forum.constants import FORUM_DEFAULT_PAGE, FORUM_DEFAULT_PER_PAGE
from forum.serializers.thread import ThreadSerializer
from forum.serializers.users import UserSerializer
Expand Down Expand Up @@ -137,14 +138,19 @@ def retire_user(
user = backend.get_user(user_id)
if not user:
raise ForumV2RequestError(f"user not found with id: {user_id}")
backend.update_user(
user_id,
data={
"email": "",
"username": retired_username,
"read_states": [],
},
)

# Prepare update data
data = {
"username": retired_username,
"read_states": [],
}

# MongoDB backend owns user data and should blank email during retirement
# MySQL backend shares auth_user with LMS - LMS manages email field
if not isinstance(backend, MySQLBackend):
data["email"] = ""

backend.update_user(user_id, data=data)
Comment thread
Alam-2U marked this conversation as resolved.
backend.unsubscribe_all(user_id)
backend.retire_all_content(user_id, retired_username)

Expand Down
9 changes: 6 additions & 3 deletions forum/backends/mysql/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1359,7 +1359,7 @@ def replace_username(user_id: str, username: str) -> None:
try:
user = User.objects.get(id=user_id)
user.username = username
user.save()
user.save(update_fields=["username"])
except User.DoesNotExist as exc:
raise ValueError("User does not exist") from exc

Expand Down Expand Up @@ -2439,8 +2439,10 @@ def update_user(user_id: str, data: dict[str, Any]) -> int:
except ObjectDoesNotExist:
return 0

user_fields_to_update = []
if "username" in data:
user.username = data["username"]
user_fields_to_update.append("username")
Comment thread
Alam-2U marked this conversation as resolved.
# MySQL backend does not update auth_user.email (LMS manages it)
if "default_sort_key" in data:
forum_user.default_sort_key = data["default_sort_key"]
Expand All @@ -2451,7 +2453,8 @@ def update_user(user_id: str, data: dict[str, Any]) -> int:
# Then delete ReadState records
user_read_states.delete()

user.save()
if user_fields_to_update:
user.save(update_fields=user_fields_to_update)
forum_user.save()
return 1

Expand All @@ -2461,7 +2464,7 @@ def replace_username_in_all_content(user_id: str, username: str) -> None:
try:
user = User.objects.get(pk=user_id)
user.username = username
user.save()
user.save(update_fields=["username"])

# Update author_username in all content
Comment.objects.filter(author=user).update(author_username=username)
Expand Down
Loading