Fix #5431 - Typo in models
[mediagoblin.git] / mediagoblin / db / models.py
index 430d081d7ec9ef00cd913bab3eee06a494c0913b..3f36f2279273b15b4d0b722d1129d9473d8c6a89 100644 (file)
@@ -389,11 +389,14 @@ class LocalUser(User):
                 'admin' if self.has_privilege(u'admin') else 'user',
                 self.username)
 
+    def get_public_id(self, host):
+        return "acct:{0}@{1}".format(self.username, host)
+
     def serialize(self, request):
         user = {
-            "id": "acct:{0}@{1}".format(self.username, request.host),
+            "id": self.get_public_id(request.host),
             "preferredUsername": self.username,
-            "displayName": "{0}@{1}".format(self.username, request.host),
+            "displayName": self.get_public_id(request.host).split(":", 1)[1],
             "links": {
                 "self": {
                     "href": request.urlgen(
@@ -604,7 +607,7 @@ class MediaEntry(Base, MediaEntryMixin, CommentingMixin):
         if ascending:
             query = query.order_by(Comment.added.asc())
         else:
-            qury = query.order_by(Comment.added.desc())
+            query = query.order_by(Comment.added.desc())
         
         return FakeCursor(query, lambda c:c.comment())
  
@@ -1005,6 +1008,17 @@ 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()
@@ -1149,7 +1163,7 @@ class Collection(Base, CollectionMixin, CommentingMixin):
         # Get all serialized output in a list
         items = [i.serialize(request) for i in self.get_collection_items()]
         return {
-            "totalItems": self.items,
+            "totalItems": self.num_items,
             "url": self.url_for_self(request.urlgen, qualified=True),
             "items": items,
         }
@@ -1344,7 +1358,7 @@ class Report(Base):
     resolved = Column(DateTime)
     result = Column(UnicodeText)
     
-    object_id = Column(Integer, ForeignKey(GenericModelReference.id), nullable=False)
+    object_id = Column(Integer, ForeignKey(GenericModelReference.id), nullable=True)
     object_helper = relationship(GenericModelReference)
     obj = association_proxy("object_helper", "get_object",
                             creator=GenericModelReference.find_or_new)
@@ -1563,15 +1577,19 @@ class Graveyard(Base):
         )
 
     def serialize(self, request):
-        return {
+        deleted = UTC.localize(self.deleted).isoformat()
+        context = {
             "id": self.public_id,
             "objectType": self.object_type,
-            "actor": self.actor(),
-            "published": self.deleted,
-            "updated": self.deleted,
-            "deleted": self.deleted
+            "published": deleted,
+            "updated": deleted,
+            "deleted": deleted,
         }
 
+        if self.actor_id is not None:
+            context["actor"] = self.actor().serialize(request)
+
+        return context
 MODELS = [
     LocalUser, RemoteUser, User, MediaEntry, Tag, MediaTag, Comment, TextComment,
     Collection, CollectionItem, MediaFile, FileKeynames, MediaAttachmentFile,