Comment changes for federation

This adds a new Comment link table that is used to link between some
object and then the comment object, which can be more or less any
object in Mediagoblin. The MediaComment has been renamed to
TextComment as that more aptly describes what it is. There is
migrations for these changes.

There is also the conslidation of the Report tables into a single
Report table, the same with the Notification objects. This is because
both of them split out MediaEntry and Comment versions into their own
polymorphic versions from a base, this is no longer a meaningful
distinction as comments can be anything.
This commit is contained in:
Jessica Tallon
2015-10-20 12:24:54 +00:00
parent fd703bb4d0
commit 64a456a4e5
26 changed files with 760 additions and 350 deletions

View File

@@ -16,8 +16,8 @@
import logging
from mediagoblin.db.models import Notification, \
CommentNotification, CommentSubscription, User
from mediagoblin.db.models import Notification, CommentSubscription, User, \
Comment, GenericModelReference
from mediagoblin.notifications.task import email_notification_task
from mediagoblin.notifications.tools import generate_comment_message
@@ -37,10 +37,10 @@ def trigger_notification(comment, media_entry, request):
if comment.get_actor == subscription.user:
continue
cn = CommentNotification(
cn = Notification(
user_id=subscription.user_id,
subject_id=comment.id)
)
cn.obj = comment
cn.save()
if subscription.send_email:
@@ -61,9 +61,15 @@ def mark_notification_seen(notification):
def mark_comment_notification_seen(comment_id, user):
notification = CommentNotification.query.filter_by(
comment = Comment.query.get(comment_id).comment()
comment_gmr = GenericModelReference.query.filter_by(
obj_pk=comment.id,
model_type=comment.__tablename__
).first()
notification = Notification.query.filter_by(
user_id=user.id,
subject_id=comment_id).first()
object_id=comment_gmr.id
).first()
_log.debug(u'Marking {0} as seen.'.format(notification))

View File

@@ -20,7 +20,7 @@ from celery import registry
from celery.task import Task
from mediagoblin.tools.mail import send_email
from mediagoblin.db.models import CommentNotification
from mediagoblin.db.models import Notification
_log = logging.getLogger(__name__)
@@ -34,7 +34,7 @@ class EmailNotificationTask(Task):
the web server.
'''
def run(self, notification_id, message):
cn = CommentNotification.query.filter_by(id=notification_id).first()
cn = Notification.query.filter_by(id=notification_id).first()
_log.info(u'Sending notification email about {0}'.format(cn))
return send_email(

View File

@@ -57,7 +57,10 @@ def mark_all_comment_notifications_seen(request):
Marks all comment notifications seen.
"""
for comment in get_notifications(request.user.id):
mark_comment_notification_seen(comment.subject_id, request.user)
mark_comment_notification_seen(
comment.obj().get_comment_link().id,
request.user
)
if request.GET.get('next'):
return redirect(request, location=request.GET.get('next'))