run Black on changed code
This commit is contained in:
@ -82,7 +82,10 @@ class BookWyrmModel(models.Model):
|
||||
return True
|
||||
|
||||
# you can see groups of which you are a member
|
||||
if hasattr(self, "memberships") and self.memberships.filter(user=viewer).exists():
|
||||
if (
|
||||
hasattr(self, "memberships")
|
||||
and self.memberships.filter(user=viewer).exists()
|
||||
):
|
||||
return True
|
||||
|
||||
# you can see objects which have a group of which you are a member
|
||||
|
@ -6,14 +6,15 @@ from bookwyrm.settings import DOMAIN
|
||||
from .base_model import BookWyrmModel
|
||||
from . import fields
|
||||
from .relationship import UserBlocks
|
||||
|
||||
# from .user import User
|
||||
|
||||
|
||||
class Group(BookWyrmModel):
|
||||
"""A group of users"""
|
||||
|
||||
name = fields.CharField(max_length=100)
|
||||
user = fields.ForeignKey(
|
||||
"User", on_delete=models.PROTECT)
|
||||
user = fields.ForeignKey("User", on_delete=models.PROTECT)
|
||||
description = fields.TextField(blank=True, null=True)
|
||||
privacy = fields.PrivacyField()
|
||||
|
||||
@ -21,26 +22,22 @@ class Group(BookWyrmModel):
|
||||
"""don't want the user to be in there in this case"""
|
||||
return f"https://{DOMAIN}/group/{self.id}"
|
||||
|
||||
|
||||
class GroupMember(models.Model):
|
||||
"""Users who are members of a group"""
|
||||
|
||||
created_date = models.DateTimeField(auto_now_add=True)
|
||||
updated_date = models.DateTimeField(auto_now=True)
|
||||
group = models.ForeignKey(
|
||||
"Group",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="memberships"
|
||||
"Group", on_delete=models.CASCADE, related_name="memberships"
|
||||
)
|
||||
user = models.ForeignKey(
|
||||
"User",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="memberships"
|
||||
)
|
||||
"User", on_delete=models.CASCADE, related_name="memberships"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=["group", "user"], name="unique_membership"
|
||||
)
|
||||
models.UniqueConstraint(fields=["group", "user"], name="unique_membership")
|
||||
]
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
@ -76,32 +73,25 @@ class GroupMember(models.Model):
|
||||
|
||||
class GroupMemberInvitation(models.Model):
|
||||
"""adding a user to a group requires manual confirmation"""
|
||||
|
||||
created_date = models.DateTimeField(auto_now_add=True)
|
||||
group = models.ForeignKey(
|
||||
"Group",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="user_invitations"
|
||||
"Group", on_delete=models.CASCADE, related_name="user_invitations"
|
||||
)
|
||||
user = models.ForeignKey(
|
||||
"User",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="group_invitations"
|
||||
)
|
||||
"User", on_delete=models.CASCADE, related_name="group_invitations"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=["group", "user"], name="unique_invitation"
|
||||
)
|
||||
models.UniqueConstraint(fields=["group", "user"], name="unique_invitation")
|
||||
]
|
||||
|
||||
def save(self, *args, **kwargs): # pylint: disable=arguments-differ
|
||||
"""make sure the membership doesn't already exist"""
|
||||
# if there's an invitation for a membership that already exists, accept it
|
||||
# without changing the local database state
|
||||
if GroupMember.objects.filter(
|
||||
user=self.user,
|
||||
group=self.group
|
||||
).exists():
|
||||
if GroupMember.objects.filter(user=self.user, group=self.group).exists():
|
||||
self.accept()
|
||||
return
|
||||
|
||||
@ -138,7 +128,7 @@ class GroupMemberInvitation(models.Model):
|
||||
GroupMember.from_request(self)
|
||||
|
||||
model = apps.get_model("bookwyrm.Notification", require_ready=True)
|
||||
# tell the group owner
|
||||
# tell the group owner
|
||||
model.objects.create(
|
||||
user=self.group.user,
|
||||
related_user=self.user,
|
||||
@ -148,7 +138,7 @@ class GroupMemberInvitation(models.Model):
|
||||
|
||||
# let the other members know about it
|
||||
for membership in self.group.memberships.all():
|
||||
member = membership.user
|
||||
member = membership.user
|
||||
if member != self.user and member != self.group.user:
|
||||
model.objects.create(
|
||||
user=member,
|
||||
|
@ -14,12 +14,7 @@ from .group import GroupMember
|
||||
|
||||
CurationType = models.TextChoices(
|
||||
"Curation",
|
||||
[
|
||||
"closed",
|
||||
"open",
|
||||
"curated",
|
||||
"group"
|
||||
],
|
||||
["closed", "open", "curated", "group"],
|
||||
)
|
||||
|
||||
|
||||
@ -70,11 +65,14 @@ class List(OrderedCollectionMixin, BookWyrmModel):
|
||||
if self.user == viewer:
|
||||
return
|
||||
# group members can edit items in group lists
|
||||
is_group_member = GroupMember.objects.filter(group=self.group, user=viewer).exists()
|
||||
is_group_member = GroupMember.objects.filter(
|
||||
group=self.group, user=viewer
|
||||
).exists()
|
||||
if is_group_member:
|
||||
return
|
||||
super().raise_not_editable(viewer)
|
||||
|
||||
|
||||
class ListItem(CollectionItemMixin, BookWyrmModel):
|
||||
"""ok"""
|
||||
|
||||
@ -119,14 +117,17 @@ class ListItem(CollectionItemMixin, BookWyrmModel):
|
||||
user=membership.user,
|
||||
related_user=self.user,
|
||||
related_list_item=self,
|
||||
notification_type="ADD"
|
||||
)
|
||||
notification_type="ADD",
|
||||
)
|
||||
|
||||
def raise_not_deletable(self, viewer):
|
||||
"""the associated user OR the list owner can delete"""
|
||||
if self.book_list.user == viewer:
|
||||
return
|
||||
# group members can delete items in group lists
|
||||
is_group_member = GroupMember.objects.filter(group=self.book_list.group, user=viewer).exists()
|
||||
is_group_member = GroupMember.objects.filter(
|
||||
group=self.book_list.group, user=viewer
|
||||
).exists()
|
||||
if is_group_member:
|
||||
return
|
||||
super().raise_not_deletable(viewer)
|
||||
|
Reference in New Issue
Block a user