Another .one -> .find_one

Same idea as in the previous commit.
Joar caught this one.

To reproduce
1. Create a user with an all-decimal ObjectId in mongo
2. Login using that user, while mongodb is enabled.
3. Switch instance to sql.
4. Restart.
5. Refresh any page.

This will error, because no user with that object id exists
any more.

While around, improved logging.
This commit is contained in:
Elrond 2012-03-13 00:17:06 +01:00
parent 84812db59d
commit cc9f9a1dd3

View File

@ -14,8 +14,12 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
from mediagoblin.db.util import ObjectId, InvalidId from mediagoblin.db.util import ObjectId, InvalidId
_log = logging.getLogger(__name__)
def setup_user_in_request(request): def setup_user_in_request(request):
""" """
Examine a request and tack on a request.user parameter if that's Examine a request and tack on a request.user parameter if that's
@ -30,12 +34,12 @@ def setup_user_in_request(request):
except InvalidId: except InvalidId:
user = None user = None
else: else:
user = request.db.User.one({'_id': oid}) user = request.db.User.find_one({'_id': oid})
if not user: if not user:
# Something's wrong... this user doesn't exist? Invalidate # Something's wrong... this user doesn't exist? Invalidate
# this session. # this session.
print "Killing session for %r" % request.session['user_id'] _log.warn("Killing session for user id %r", request.session['user_id'])
request.session.invalidate() request.session.invalidate()
request.user = user request.user = user