Use transaction decorator on group accept

This commit is contained in:
Mouse Reeve 2021-12-10 12:03:18 -08:00
parent 08a8f37a0b
commit 73e09f8d18
1 changed files with 20 additions and 21 deletions

View File

@ -150,31 +150,30 @@ class GroupMemberInvitation(models.Model):
notification_type=notification_type, notification_type=notification_type,
) )
@transaction.atomic
def accept(self): def accept(self):
"""turn this request into the real deal""" """turn this request into the real deal"""
GroupMember.from_request(self)
with transaction.atomic(): model = apps.get_model("bookwyrm.Notification", require_ready=True)
GroupMember.from_request(self) # tell the group owner
model.objects.create(
user=self.group.user,
related_user=self.user,
related_group=self.group,
notification_type="ACCEPT",
)
model = apps.get_model("bookwyrm.Notification", require_ready=True) # let the other members know about it
# tell the group owner for membership in self.group.memberships.all():
model.objects.create( member = membership.user
user=self.group.user, if member not in (self.user, self.group.user):
related_user=self.user, model.objects.create(
related_group=self.group, user=member,
notification_type="ACCEPT", related_user=self.user,
) related_group=self.group,
notification_type="JOIN",
# let the other members know about it )
for membership in self.group.memberships.all():
member = membership.user
if member not in (self.user, self.group.user):
model.objects.create(
user=member,
related_user=self.user,
related_group=self.group,
notification_type="JOIN",
)
def reject(self): def reject(self):
"""generate a Reject for this membership request""" """generate a Reject for this membership request"""