diff --git a/mediagoblin/admin/views.py b/mediagoblin/admin/views.py
index d0665151..073b1e25 100644
--- a/mediagoblin/admin/views.py
+++ b/mediagoblin/admin/views.py
@@ -16,7 +16,7 @@
from werkzeug.exceptions import Forbidden
-from mediagoblin.db.util import DESCENDING
+from mediagoblin.db.sql.models import MediaEntry
from mediagoblin.decorators import require_active_login
from mediagoblin.tools.response import render_to_response
@@ -29,15 +29,15 @@ def admin_processing_panel(request):
if not request.user.is_admin:
raise Forbidden()
- processing_entries = request.db.MediaEntry.find(
- {'state': u'processing'}).sort('created', DESCENDING)
+ processing_entries = MediaEntry.query.filter_by(state = u'processing').\
+ order_by(MediaEntry.created.desc())
# Get media entries which have failed to process
- failed_entries = request.db.MediaEntry.find(
- {'state': u'failed'}).sort('created', DESCENDING)
+ failed_entries = MediaEntry.query.filter_by(state = u'failed').\
+ order_by(MediaEntry.created.desc())
- processed_entries = request.db.MediaEntry.find(
- {'state': u'processed'}).sort('created', DESCENDING).limit(10)
+ processed_entries = MediaEntry.query.filter_by(state = u'processed').\
+ order_by(MediaEntry.created.desc()).limit(10)
# Render to response
return render_to_response(
diff --git a/mediagoblin/db/sql/base.py b/mediagoblin/db/sql/base.py
index 2dceca75..3530011e 100644
--- a/mediagoblin/db/sql/base.py
+++ b/mediagoblin/db/sql/base.py
@@ -18,9 +18,6 @@
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker, object_session
from sqlalchemy.orm.query import Query
-from sqlalchemy.sql.expression import desc
-from mediagoblin.db.sql.fake import DESCENDING
-
def _get_query_model(query):
cols = query.column_descriptions
@@ -29,10 +26,8 @@ def _get_query_model(query):
class GMGQuery(Query):
- def sort(self, key, direction):
+ def sort(self, key):
key_col = getattr(_get_query_model(self), key)
- if direction is DESCENDING:
- key_col = desc(key_col)
return self.order_by(key_col)
diff --git a/mediagoblin/db/sql/fake.py b/mediagoblin/db/sql/fake.py
deleted file mode 100644
index 51c5127b..00000000
--- a/mediagoblin/db/sql/fake.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-
-
-"""
-This module contains some fake classes and functions to
-calm the rest of the code base. Or provide super minimal
-implementations.
-
-Currently:
-- DESCENDING "constant"
-"""
-
-
-DESCENDING = object() # a unique object for this "constant"
diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py
index b7e93134..ef3abf9b 100644
--- a/mediagoblin/db/util.py
+++ b/mediagoblin/db/util.py
@@ -15,6 +15,5 @@
# along with this program. If not, see .
#TODO: check now after mongo removal if we can't rip out a layer of abstraction
-from mediagoblin.db.sql.fake import DESCENDING
from mediagoblin.db.sql.util import atomic_update, check_media_slug_used, \
media_entries_for_tag_slug, check_collection_slug_used
diff --git a/mediagoblin/listings/views.py b/mediagoblin/listings/views.py
index 3064096c..80182124 100644
--- a/mediagoblin/listings/views.py
+++ b/mediagoblin/listings/views.py
@@ -14,8 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from mediagoblin.db.util import media_entries_for_tag_slug, DESCENDING
-
+from mediagoblin.db.sql.models import MediaEntry
+from mediagoblin.db.util import media_entries_for_tag_slug
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
from mediagoblin.decorators import uses_pagination
@@ -45,7 +45,7 @@ def tag_listing(request, page):
tag_slug = request.matchdict[u'tag']
cursor = media_entries_for_tag_slug(request.db, tag_slug)
- cursor = cursor.sort('created', DESCENDING)
+ cursor = cursor.order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
media_entries = pagination()
@@ -71,7 +71,7 @@ def tag_atom_feed(request):
tag_slug = request.matchdict[u'tag']
cursor = media_entries_for_tag_slug(request.db, tag_slug)
- cursor = cursor.sort('created', DESCENDING)
+ cursor = cursor.order_by(MediaEntry.created.desc())
cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
"""
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index 78c020ac..1e5ea3a3 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -18,7 +18,6 @@ import logging
import datetime
from mediagoblin import messages, mg_globals
-from mediagoblin.db.util import DESCENDING
from mediagoblin.db.sql.models import (MediaEntry, Collection, CollectionItem,
User)
from mediagoblin.tools.response import render_to_response, render_404, redirect
@@ -56,7 +55,7 @@ def user_home(request, page):
cursor = MediaEntry.query.\
filter_by(uploader = user.id,
- state = u'processed').sort('created', DESCENDING)
+ state = u'processed').order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
media_entries = pagination()
@@ -449,7 +448,7 @@ def atom_feed(request):
cursor = MediaEntry.query.filter_by(
uploader = user.id,
state = u'processed').\
- sort('created', DESCENDING).\
+ order_by(MediaEntry.created.desc()).\
limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
"""
diff --git a/mediagoblin/views.py b/mediagoblin/views.py
index 9d34750b..14fbc4e6 100644
--- a/mediagoblin/views.py
+++ b/mediagoblin/views.py
@@ -15,17 +15,17 @@
# along with this program. If not, see .
from mediagoblin import mg_globals
+from mediagoblin.db.sql.models import MediaEntry
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
-from mediagoblin.db.util import DESCENDING
from mediagoblin.decorators import uses_pagination
@uses_pagination
def root_view(request, page):
- cursor = request.db.MediaEntry.find(
- {u'state': u'processed'}).sort('created', DESCENDING)
+ cursor = MediaEntry.query.filter_by(state=u'processed').\
+ order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
media_entries = pagination()