diff options
-rw-r--r-- | mediagoblin/db/base.py | 8 | ||||
-rw-r--r-- | mediagoblin/db/models.py | 15 | ||||
-rw-r--r-- | mediagoblin/moderation/tools.py | 2 | ||||
-rw-r--r-- | mediagoblin/notifications/__init__.py | 5 | ||||
-rw-r--r-- | mediagoblin/templates/mediagoblin/user_pages/media.html | 11 | ||||
-rw-r--r-- | mediagoblin/tests/test_api.py | 2 | ||||
-rw-r--r-- | mediagoblin/tests/test_misc.py | 6 |
7 files changed, 25 insertions, 24 deletions
diff --git a/mediagoblin/db/base.py b/mediagoblin/db/base.py index 0f17a3a8..c59b0ebf 100644 --- a/mediagoblin/db/base.py +++ b/mediagoblin/db/base.py @@ -96,7 +96,7 @@ class GMGTableBase(object): # cause issues if it isn't. See #5382. # Import here to prevent cyclic imports. from mediagoblin.db.models import CollectionItem, GenericModelReference, \ - Report, Notification + Report, Notification, Comment # Some of the models don't have an "id" field which means they can't be # used with GMR, these models won't be in collections because they @@ -123,6 +123,12 @@ class GMGTableBase(object): ) notifications.delete() + # Delete this as a comment + comments = Comment.query.filter_by( + comment_id=gmr.id + ) + comments.delete() + # Set None on reports found reports = Report.query.filter_by( object_id=gmr.id diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index 3f36f227..5393f679 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -609,7 +609,7 @@ class MediaEntry(Base, MediaEntryMixin, CommentingMixin): else: query = query.order_by(Comment.added.desc()) - return FakeCursor(query, lambda c:c.comment()) + return query def url_to_prev(self, urlgen): """get the next 'newer' entry by this user""" @@ -778,7 +778,7 @@ class MediaEntry(Base, MediaEntryMixin, CommentingMixin): if show_comments: comments = [ - comment.serialize(request) for comment in self.get_comments()] + l.comment().serialize(request) for l in self.get_comments()] total = len(comments) context["replies"] = { "totalItems": total, @@ -1008,17 +1008,6 @@ class TextComment(Base, TextCommentMixin, CommentingMixin): cascade="all, delete-orphan")) deletion_mode = Base.SOFT_DELETE - def soft_delete(self, *args, **kwargs): - # Find the GMR for this model. - gmr = GenericModelReference.query.filter_by( - obj_pk=self.id, - model_type=self.__tablename__ - ).first() - - # Delete the Comment object for this comment - Comment.query.filter_by(comment_id=gmr.id).delete() - return super(TextComment, self).soft_delete(*args, **kwargs) - def serialize(self, request): """ Unserialize to python dictionary for API """ target = self.get_reply_to() diff --git a/mediagoblin/moderation/tools.py b/mediagoblin/moderation/tools.py index 73afd051..36d89d71 100644 --- a/mediagoblin/moderation/tools.py +++ b/mediagoblin/moderation/tools.py @@ -69,7 +69,7 @@ def take_punitive_actions(request, form, report, user): if u'delete' in form.action_to_resolve.data and \ report.is_comment_report(): deleted_comment = report.obj() - Session.delete(deleted_comment) + deleted_comment.delete() form.resolution_content.data += \ _(u"\n{mod} deleted the comment.").format( mod=request.user.username) diff --git a/mediagoblin/notifications/__init__.py b/mediagoblin/notifications/__init__.py index 3ed9ba79..9d2f2b78 100644 --- a/mediagoblin/notifications/__init__.py +++ b/mediagoblin/notifications/__init__.py @@ -75,6 +75,11 @@ def mark_comment_notification_seen(comment_id, user): obj_pk=comment.id, model_type=comment.__tablename__ ).first() + + # If there is no GMR, there is no notification + if comment_gmr == None: + return + notification = Notification.query.filter_by( user_id=user.id, object_id=comment_gmr.id diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html index 1a35414f..48a91ab7 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media.html @@ -123,7 +123,8 @@ {% endif %} <ul style="list-style:none"> {% for comment in comments %} - {% set comment_author = comment.get_actor %} + {% set comment_object = comment.comment() %} + {% set comment_author = comment_object.get_actor %} <li id="comment-{{ comment.id }}" {%- if pagination.active_id == comment.id %} class="comment_wrapper comment_active"> @@ -143,15 +144,15 @@ user=media.get_actor.username, media=media.slug_or_id) }}#comment" class="comment_whenlink"> - <span title='{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}'> - {%- trans formatted_time=timesince(comment.created) -%} + <span title='{{- comment_object.created.strftime("%I:%M%p %Y-%m-%d") -}}'> + {%- trans formatted_time=timesince(comment_object.created) -%} {{ formatted_time }} ago {%- endtrans -%} </span></a>: </div> <div class="comment_content"> {% autoescape False -%} - {{ comment.content_html }} + {{ comment_object.content_html }} {%- endautoescape %} </div> <div> @@ -159,7 +160,7 @@ <a href="{{ request.urlgen('mediagoblin.user_pages.media_home.report_comment', user=media.get_actor.username, media=media.slug_or_id, - comment=comment.id) }}"> + comment=comment_object.id) }}"> {% trans %}Report{% endtrans %}</a> {% endif %} </div> diff --git a/mediagoblin/tests/test_api.py b/mediagoblin/tests/test_api.py index 33b93208..90873cb9 100644 --- a/mediagoblin/tests/test_api.py +++ b/mediagoblin/tests/test_api.py @@ -317,7 +317,7 @@ class TestAPI(object): # Find the objects in the database media = MediaEntry.query.filter_by(public_id=data["object"]["id"]).first() - comment = media.get_comments()[0] + comment = media.get_comments()[0].comment() # Tests that it matches in the database assert comment.actor == self.user.id diff --git a/mediagoblin/tests/test_misc.py b/mediagoblin/tests/test_misc.py index 34235209..5500a0d7 100644 --- a/mediagoblin/tests/test_misc.py +++ b/mediagoblin/tests/test_misc.py @@ -64,13 +64,13 @@ def test_user_deletes_other_comments(test_app): usr_cnt1 = User.query.count() med_cnt1 = MediaEntry.query.count() - cmt_cnt1 = TextComment.query.count() + cmt_cnt1 = Comment.query.count() User.query.get(user_a.id).delete(commit=False) usr_cnt2 = User.query.count() med_cnt2 = MediaEntry.query.count() - cmt_cnt2 = TextComment.query.count() + cmt_cnt2 = Comment.query.count() # One user deleted assert usr_cnt2 == usr_cnt1 - 1 @@ -83,7 +83,7 @@ def test_user_deletes_other_comments(test_app): usr_cnt2 = User.query.count() med_cnt2 = MediaEntry.query.count() - cmt_cnt2 = TextComment.query.count() + cmt_cnt2 = Comment.query.count() # All users gone assert usr_cnt2 == usr_cnt1 - 2 |