From f58addfa68cba0478e90eb5b0391d4db64e36132 Mon Sep 17 00:00:00 2001 From: xiez Date: Wed, 8 Aug 2012 22:53:20 +0800 Subject: [PATCH] Modify message reply notification --- group/models.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/group/models.py b/group/models.py index afa8c966de..df11f11d0c 100644 --- a/group/models.py +++ b/group/models.py @@ -37,20 +37,23 @@ def msgreply_save_handler(sender, instance, **kwargs): m = re.match(at_pattern, reply_msg) if m: nickname_or_emailprefix = m.group()[1:] - p = get_first_object_or_none(\ - Profile.objects.filter(nickname=nickname_or_emailprefix)) - if p: - to_user = p.user - else: - # Match email prefix in group members. - group_members = get_group_members(group_msg.group_id) - for m in group_members: - if m.user_name.startswith(nickname_or_emailprefix): - to_user = m.user_name - break - - if to_user and to_user != from_email: - # Send notification to the user if user replies someone else' + for member in get_group_members(group_msg.group_id): + # For every group member, get his username and nickname if + # it exists, check whether match. + username = member.user_name + if username == from_email: + continue + + p = get_first_object_or_none(\ + Profile.objects.filter(user=username)) + nickname = p.nickname if p else '' + if nickname == nickname_or_emailprefix or \ + username.split('@')[0] == nickname_or_emailprefix: + to_user = username + break + + if to_user: + # Send notification to the user if he replies someone else' # message. try: UserNotification.objects.get(to_user=to_user, @@ -61,6 +64,4 @@ def msgreply_save_handler(sender, instance, **kwargs): msg_type='grpmsg_reply', detail=group_msg.id) n.save() - - - +