aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2012-01-22 17:11:43 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2012-01-28 13:53:55 +0100
commit3e907d5516d50fc4a75e7ccb4e687db924ec9ff6 (patch)
tree6f4c3b880006ed0e5a391086b09587dcd31912f5
parent3c43cfc9f91b487d52ff7868f821fe920f676d90 (diff)
downloadmediagoblin-3e907d5516d50fc4a75e7ccb4e687db924ec9ff6.tar.lz
mediagoblin-3e907d5516d50fc4a75e7ccb4e687db924ec9ff6.tar.xz
mediagoblin-3e907d5516d50fc4a75e7ccb4e687db924ec9ff6.zip
Let some code support "media without slug"
The upcoming SQL database will allow having media without a slug again. This might especially be useful for API support, where the uploaded image (media) does not have *any* information to generate a slug from. This code change mostly allows the sql backend to have no slug in its model and improves some parts to properly handle that. It specifically does not have any web frontend support to edit/create MediaEntries with no slug.
-rw-r--r--mediagoblin/db/mixin.py21
-rw-r--r--mediagoblin/db/sql/models.py2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html2
3 files changed, 11 insertions, 14 deletions
diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py
index d587ccb4..254dbcff 100644
--- a/mediagoblin/db/mixin.py
+++ b/mediagoblin/db/mixin.py
@@ -63,6 +63,10 @@ class MediaEntryMixin(object):
def main_mediafile(self):
pass
+ @property
+ def slug_or_id(self):
+ return (self.slug or self._id)
+
def url_for_self(self, urlgen, **extra_args):
"""
Generate an appropriate url for ourselves
@@ -71,18 +75,11 @@ class MediaEntryMixin(object):
"""
uploader = self.get_uploader
- if self.get('slug'):
- return urlgen(
- 'mediagoblin.user_pages.media_home',
- user=uploader.username,
- media=self.slug,
- **extra_args)
- else:
- return urlgen(
- 'mediagoblin.user_pages.media_home',
- user=uploader.username,
- media=unicode(self._id),
- **extra_args)
+ return urlgen(
+ 'mediagoblin.user_pages.media_home',
+ user=uploader.username,
+ media=self.slug_or_id,
+ **extra_args)
def get_fail_exception(self):
"""
diff --git a/mediagoblin/db/sql/models.py b/mediagoblin/db/sql/models.py
index 95147d50..6232fff8 100644
--- a/mediagoblin/db/sql/models.py
+++ b/mediagoblin/db/sql/models.py
@@ -72,7 +72,7 @@ class MediaEntry(Base, MediaEntryMixin):
id = Column(Integer, primary_key=True)
uploader = Column(Integer, ForeignKey('users.id'), nullable=False)
title = Column(Unicode, nullable=False)
- slug = Column(Unicode, nullable=False)
+ slug = Column(Unicode)
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
description = Column(UnicodeText) # ??
description_html = Column(UnicodeText) # ??
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index cbe26cbf..9df3dfbc 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -127,7 +127,7 @@
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home.view_comment',
comment = comment._id,
user = media.get_uploader.username,
- media = media.slug) }}#comment">
+ media = media.slug_or_id) }}#comment">
{{ comment.created.strftime("%I:%M%p %Y-%m-%d") }}
</a>
</div>