Added tags in API (view them and edit them)
authorRomain Porte <microjoe@microjoe.org>
Sat, 11 Nov 2017 18:23:30 +0000 (19:23 +0100)
committerBoris Bobrov <breton@cynicmansion.ru>
Sat, 11 Nov 2017 21:07:53 +0000 (00:07 +0300)
mediagoblin/db/models.py

index f4644b9ff9281b804427012893bea3f225a44a8f..3b85b07aa9405cf965e79ac44c6eb11337cd6137 100644 (file)
@@ -43,6 +43,7 @@ from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, \
 from mediagoblin.tools.files import delete_media_files
 from mediagoblin.tools.common import import_component
 from mediagoblin.tools.routing import extract_url_arguments
+from mediagoblin.tools.text import convert_to_tag_list_of_dicts
 
 import six
 from six.moves.urllib.parse import urljoin
@@ -770,7 +771,6 @@ class MediaEntry(Base, MediaEntryMixin, CommentingMixin):
                 "self": {
                     "href": public_id,
                 },
-
             }
         }
 
@@ -786,6 +786,12 @@ class MediaEntry(Base, MediaEntryMixin, CommentingMixin):
         if self.location:
             context["location"] = self.get_location.serialize(request)
 
+        # Always show tags, even if empty list
+        if self.tags:
+            context["tags"] = [tag['name'] for tag in self.tags]
+        else:
+            context["tags"] = []
+
         if show_comments:
             comments = [
                 l.comment().serialize(request) for l in self.get_comments()]
@@ -833,6 +839,9 @@ class MediaEntry(Base, MediaEntryMixin, CommentingMixin):
         if "location" in data:
             License.create(data["location"], self)
 
+        if "tags" in data:
+            self.tags = convert_to_tag_list_of_dicts(', '.join(data["tags"]))
+
         return True
 
 class FileKeynames(Base):