Fix problem with migration - OAuth

This commit is contained in:
Jessica Tallon 2013-07-22 17:17:01 +01:00
parent 617bff1830
commit 8e3bf97821
3 changed files with 9 additions and 10 deletions

View File

@ -25,6 +25,8 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import and_ from sqlalchemy.sql import and_
from migrate.changeset.constraint import UniqueConstraint from migrate.changeset.constraint import UniqueConstraint
from mediagoblin.db.extratypes import JSONEncoded
from mediagoblin.db.migration_tools import RegisterMigration, inspect_table from mediagoblin.db.migration_tools import RegisterMigration, inspect_table
from mediagoblin.db.models import MediaEntry, Collection, User, MediaComment from mediagoblin.db.models import MediaEntry, Collection, User, MediaComment
@ -382,7 +384,7 @@ def pw_hash_nullable(db):
# oauth1 migrations # oauth1 migrations
class Client_v0(Base): class Client_v0(declarative_base()):
""" """
Model representing a client - Used for API Auth Model representing a client - Used for API Auth
""" """
@ -407,7 +409,7 @@ class Client_v0(Base):
else: else:
return "<Client {0}>".format(self.id) return "<Client {0}>".format(self.id)
class RequestToken_v0(Base): class RequestToken_v0(declarative_base()):
""" """
Model for representing the request tokens Model for representing the request tokens
""" """
@ -415,7 +417,7 @@ class RequestToken_v0(Base):
token = Column(Unicode, primary_key=True) token = Column(Unicode, primary_key=True)
secret = Column(Unicode, nullable=False) secret = Column(Unicode, nullable=False)
client = Column(Unicode, ForeignKey(Client.id)) client = Column(Unicode, ForeignKey(Client_v0.id))
user = Column(Integer, ForeignKey(User.id), nullable=True) user = Column(Integer, ForeignKey(User.id), nullable=True)
used = Column(Boolean, default=False) used = Column(Boolean, default=False)
authenticated = Column(Boolean, default=False) authenticated = Column(Boolean, default=False)
@ -424,7 +426,7 @@ class RequestToken_v0(Base):
created = Column(DateTime, nullable=False, default=datetime.datetime.now) created = Column(DateTime, nullable=False, default=datetime.datetime.now)
updated = Column(DateTime, nullable=False, default=datetime.datetime.now) updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
class AccessToken_v0(Base): class AccessToken_v0(declarative_base()):
""" """
Model for representing the access tokens Model for representing the access tokens
""" """
@ -433,12 +435,12 @@ class AccessToken_v0(Base):
token = Column(Unicode, nullable=False, primary_key=True) token = Column(Unicode, nullable=False, primary_key=True)
secret = Column(Unicode, nullable=False) secret = Column(Unicode, nullable=False)
user = Column(Integer, ForeignKey(User.id)) user = Column(Integer, ForeignKey(User.id))
request_token = Column(Unicode, ForeignKey(RequestToken.token)) request_token = Column(Unicode, ForeignKey(RequestToken_v0.token))
created = Column(DateTime, nullable=False, default=datetime.datetime.now) created = Column(DateTime, nullable=False, default=datetime.datetime.now)
updated = Column(DateTime, nullable=False, default=datetime.datetime.now) updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
class NonceTimestamp_v0(Base): class NonceTimestamp_v0(declarative_base()):
""" """
A place the timestamp and nonce can be stored - this is for OAuth1 A place the timestamp and nonce can be stored - this is for OAuth1
""" """

View File

@ -1,5 +1,4 @@
import wtforms import wtforms
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
class AuthorizeForm(wtforms.Form): class AuthorizeForm(wtforms.Form):
""" Form used to authorize the request token """ """ Form used to authorize the request token """

View File

@ -15,8 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
from oauthlib.common import Request from oauthlib.common import Request
from oauthlib.oauth1 import (AuthorizationEndpoint, RequestValidator, from oauthlib.oauth1 import RequestValidator
RequestTokenEndpoint, AccessTokenEndpoint)
from mediagoblin.db.models import NonceTimestamp, Client, RequestToken, AccessToken from mediagoblin.db.models import NonceTimestamp, Client, RequestToken, AccessToken
@ -110,7 +109,6 @@ class GMGRequestValidator(RequestValidator):
return client.secret return client.secret
def get_access_token_secret(self, client_key, token, request): def get_access_token_secret(self, client_key, token, request):
client = Client.query.filter_by(id=client_key).first()
access_token = AccessToken.query.filter_by(token=token).first() access_token = AccessToken.query.filter_by(token=token).first()
return access_token.secret return access_token.secret