mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-06-26 17:00:39 +00:00
Fixes follow request notifications
Since the main way to interact with them is by approving them in the notification, I didn't group them
This commit is contained in:
parent
e54c563865
commit
7fe722b595
|
@ -3,7 +3,7 @@ from django.db import models, transaction
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from .base_model import BookWyrmModel
|
from .base_model import BookWyrmModel
|
||||||
from . import Boost, Favorite, GroupMemberInvitation, ImportJob, ListItem, Report
|
from . import Boost, Favorite, GroupMemberInvitation, ImportJob, ListItem, Report
|
||||||
from . import Status, User
|
from . import Status, User, UserFollowRequest
|
||||||
|
|
||||||
|
|
||||||
class Notification(BookWyrmModel):
|
class Notification(BookWyrmModel):
|
||||||
|
@ -257,3 +257,34 @@ def notify_user_on_list_item_add(sender, instance, created, *args, **kwargs):
|
||||||
for membership in instance.book_list.group.memberships.all():
|
for membership in instance.book_list.group.memberships.all():
|
||||||
if membership.user != instance.user:
|
if membership.user != instance.user:
|
||||||
Notification.notify_list_item(membership.user, instance)
|
Notification.notify_list_item(membership.user, instance)
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(models.signals.post_save, sender=UserFollowRequest)
|
||||||
|
@transaction.atomic
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
def notify_user_on_follow(sender, instance, created, *args, **kwargs):
|
||||||
|
"""Someone added to your list"""
|
||||||
|
if not created or not instance.user_object.local:
|
||||||
|
return
|
||||||
|
|
||||||
|
manually_approves = instance.user_object.manually_approves_followers
|
||||||
|
if manually_approves:
|
||||||
|
# don't group notifications
|
||||||
|
notification = Notification.objects.filter(
|
||||||
|
user=instance.user_object,
|
||||||
|
related_users=instance.user_subject,
|
||||||
|
notification_type=Notification.FOLLOW_REQUEST,
|
||||||
|
).first()
|
||||||
|
if not notification:
|
||||||
|
notification = Notification.objects.create(
|
||||||
|
user=instance.user_object, notification_type=Notification.FOLLOW_REQUEST
|
||||||
|
)
|
||||||
|
notification.related_users.set([instance.user_subject])
|
||||||
|
notification.read = False
|
||||||
|
notification.save()
|
||||||
|
else:
|
||||||
|
Notification.notify(
|
||||||
|
instance.user_object,
|
||||||
|
instance.user_subject,
|
||||||
|
notification_type=Notification.FOLLOW,
|
||||||
|
)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
""" defines relationships between users """
|
""" defines relationships between users """
|
||||||
from django.apps import apps
|
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db import models, transaction, IntegrityError
|
from django.db import models, transaction, IntegrityError
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
@ -148,16 +147,6 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship):
|
||||||
if not manually_approves:
|
if not manually_approves:
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
model = apps.get_model("bookwyrm.Notification", require_ready=True)
|
|
||||||
notification_type = (
|
|
||||||
model.FOLLOW_REQUEST if manually_approves else model.FOLLOW
|
|
||||||
)
|
|
||||||
model.notify(
|
|
||||||
self.user_object,
|
|
||||||
self.user_subject,
|
|
||||||
notification_type=notification_type,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_accept_reject_id(self, status):
|
def get_accept_reject_id(self, status):
|
||||||
"""get id for sending an accept or reject of a local user"""
|
"""get id for sending an accept or reject of a local user"""
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,10 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block description %}
|
{% block description %}
|
||||||
{% trans "sent you a follow request" %}
|
{% blocktrans trimmed %}
|
||||||
|
<a href="{{ related_user_link }}">{{ related_user }}</a> sent you a follow request
|
||||||
|
{% endblocktrans %}
|
||||||
<div class="row shrink">
|
<div class="row shrink">
|
||||||
{% include 'snippets/follow_request_buttons.html' with user=notification.related_user %}
|
{% include 'snippets/follow_request_buttons.html' with user=notification.related_users.first %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Loading…
Reference in a new issue