mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-23 18:11:09 +00:00
Move fav notifications to model
This commit is contained in:
parent
106d442a0b
commit
74d39c3e24
3 changed files with 30 additions and 23 deletions
|
@ -288,13 +288,6 @@ def handle_favorite(activity):
|
||||||
if fav.user.local:
|
if fav.user.local:
|
||||||
return
|
return
|
||||||
|
|
||||||
status_builder.create_notification(
|
|
||||||
fav.status.user,
|
|
||||||
'FAVORITE',
|
|
||||||
related_user=fav.user,
|
|
||||||
related_status=fav.status,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@app.task
|
@app.task
|
||||||
def handle_unfavorite(activity):
|
def handle_unfavorite(activity):
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
''' like/fav/star a status '''
|
''' like/fav/star a status '''
|
||||||
|
from django.apps import apps
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
|
@ -22,6 +23,35 @@ class Favorite(ActivityMixin, BookWyrmModel):
|
||||||
self.user.save(broadcast=False)
|
self.user.save(broadcast=False)
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
if self.status.user.local and self.status.user != self.user:
|
||||||
|
notification_model = apps.get_model(
|
||||||
|
'bookwyrm.Notification', require_ready=True)
|
||||||
|
if notification_model.objects.filter(
|
||||||
|
user=self.status.user, related_user=self.user,
|
||||||
|
related_status=self.status, notification_type='FAVORITE'
|
||||||
|
).exists():
|
||||||
|
return
|
||||||
|
notification_model.objects.create(
|
||||||
|
user=self.status.user,
|
||||||
|
notification_type='FAVORITE',
|
||||||
|
related_user=self.user,
|
||||||
|
related_status=self.status
|
||||||
|
)
|
||||||
|
|
||||||
|
def delete(self, *args, **kwargs):
|
||||||
|
''' delete and delete notifications '''
|
||||||
|
# check for notification
|
||||||
|
if self.status.user.local:
|
||||||
|
notification_model = apps.get_model(
|
||||||
|
'bookwyrm.Notification', require_ready=True)
|
||||||
|
notification = notification_model.objects.filter(
|
||||||
|
user=self.status.user, related_user=self.user,
|
||||||
|
related_status=self.status, notification_type='FAVORITE'
|
||||||
|
).first()
|
||||||
|
if notification:
|
||||||
|
notification.delete()
|
||||||
|
super().delete(*args, **kwargs)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
''' can't fav things twice '''
|
''' can't fav things twice '''
|
||||||
unique_together = ('user', 'status')
|
unique_together = ('user', 'status')
|
||||||
|
|
|
@ -26,13 +26,6 @@ class Favorite(View):
|
||||||
# you already fav'ed that
|
# you already fav'ed that
|
||||||
return HttpResponseBadRequest()
|
return HttpResponseBadRequest()
|
||||||
|
|
||||||
if status.user.local:
|
|
||||||
create_notification(
|
|
||||||
status.user,
|
|
||||||
'FAVORITE',
|
|
||||||
related_user=request.user,
|
|
||||||
related_status=status
|
|
||||||
)
|
|
||||||
return redirect(request.headers.get('Referer', '/'))
|
return redirect(request.headers.get('Referer', '/'))
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,15 +45,6 @@ class Unfavorite(View):
|
||||||
return HttpResponseNotFound()
|
return HttpResponseNotFound()
|
||||||
|
|
||||||
favorite.delete()
|
favorite.delete()
|
||||||
|
|
||||||
# check for notification
|
|
||||||
if status.user.local:
|
|
||||||
notification = models.Notification.objects.filter(
|
|
||||||
user=status.user, related_user=request.user,
|
|
||||||
related_status=status, notification_type='FAVORITE'
|
|
||||||
).first()
|
|
||||||
if notification:
|
|
||||||
notification.delete()
|
|
||||||
return redirect(request.headers.get('Referer', '/'))
|
return redirect(request.headers.get('Referer', '/'))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue