aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/db/models.py18
-rw-r--r--mediagoblin/templates/mediagoblin/root.html3
-rw-r--r--mediagoblin/templates/mediagoblin/utils/object_gallery.html3
3 files changed, 20 insertions, 4 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index 1bc1da60..8e7889eb 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -117,6 +117,24 @@ class MediaEntry(Document):
if duplicate:
self['slug'] = "%s-%s" % (self['_id'], self['slug'])
+ def url_for_self(self, urlgen):
+ """
+ Generate an appropriate url for ourselves
+
+ Use a slug if we have one, else use our '_id'.
+ """
+ if self.get('slug'):
+ return urlgen(
+ 'mediagoblin.user_pages.media_home',
+ user=self['uploader']['username'],
+ media=self['slug'])
+ else:
+ return urlgen(
+ 'mediagoblin.user_pages.media_home',
+ user=self['uploader']['username'],
+ media=unicode(self['_id']))
+
+
REGISTER_MODELS = [MediaEntry, User]
diff --git a/mediagoblin/templates/mediagoblin/root.html b/mediagoblin/templates/mediagoblin/root.html
index a93a7c75..05926687 100644
--- a/mediagoblin/templates/mediagoblin/root.html
+++ b/mediagoblin/templates/mediagoblin/root.html
@@ -44,8 +44,7 @@
<ul>
{% for entry in media_entries %}
<li>
- <a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
- user= entry.uploader.username, m_id= entry._id) }}">
+ <a href="{{ entry.url_for_self(request.urlgen) }}">
<img src="{{ request.app.public_store.file_url(
entry['media_files']['thumb']) }}" /></a>
</li>
diff --git a/mediagoblin/templates/mediagoblin/utils/object_gallery.html b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
index 8ae337f5..30497f47 100644
--- a/mediagoblin/templates/mediagoblin/utils/object_gallery.html
+++ b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
@@ -22,8 +22,7 @@
<ul>
{% for entry in media_entries %}
<li>
- <a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
- user= entry.uploader.username, m_id= entry._id) }}">
+ <a href="{{ entry.url_for_self(request.urlgen) }}">
<img src="{{ request.app.public_store.file_url(
entry['media_files']['thumb']) }}" /></a>
</li>