diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-04 22:13:19 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-22 18:41:06 +0100 |
commit | c47a03b909ecd97cab5b144d0cab007b62b92a90 (patch) | |
tree | 7ca2811d3eaa50c322f78cd281e773b3cece5e86 /mediagoblin/db/sql/models.py | |
parent | 02ede85826e0cede55a3ae23b16508bf606cbb45 (diff) | |
download | mediagoblin-c47a03b909ecd97cab5b144d0cab007b62b92a90.tar.lz mediagoblin-c47a03b909ecd97cab5b144d0cab007b62b92a90.tar.xz mediagoblin-c47a03b909ecd97cab5b144d0cab007b62b92a90.zip |
Proper url_to_{prev,next} for SQL
Uses complete sqlalchemy syntax now.
Diffstat (limited to 'mediagoblin/db/sql/models.py')
-rw-r--r-- | mediagoblin/db/sql/models.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/mediagoblin/db/sql/models.py b/mediagoblin/db/sql/models.py index d5573a56..57444c2c 100644 --- a/mediagoblin/db/sql/models.py +++ b/mediagoblin/db/sql/models.py @@ -23,6 +23,7 @@ from sqlalchemy import ( UniqueConstraint) from sqlalchemy.orm import relationship from sqlalchemy.orm.collections import attribute_mapped_collection +from sqlalchemy.sql.expression import desc from sqlalchemy.ext.associationproxy import association_proxy from mediagoblin.db.sql.extratypes import PathTupleWithSlashes @@ -116,6 +117,26 @@ class MediaEntry(Base, MediaEntryMixin): return MediaComment.query.filter_by( media_entry=self.id).order_by(order_col) + def url_to_prev(self, urlgen): + """get the next 'newer' entry by this user""" + media = MediaEntry.query.filter( + (MediaEntry.uploader == self.uploader) + & (MediaEntry.state == 'processed') + & (MediaEntry.id > self.id)).order_by(MediaEntry.id).first() + + if media is not None: + return media.url_for_self(urlgen) + + def url_to_next(self, urlgen): + """get the next 'older' entry by this user""" + media = MediaEntry.query.filter( + (MediaEntry.uploader == self.uploader) + & (MediaEntry.state == 'processed') + & (MediaEntry.id < self.id)).order_by(desc(MediaEntry.id)).first() + + if media is not None: + return media.url_for_self(urlgen) + class MediaFile(Base): __tablename__ = "mediafiles" |