# 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 . from sqlalchemy import Column, Integer, Unicode, ForeignKey from sqlalchemy.orm import relationship, backref from mediagoblin.db.models import User from mediagoblin.db.base import Base class OpenIDUserURL(Base): __tablename__ = "openid__user_urls" id = Column(Integer, primary_key=True) openid_url = Column(Unicode, nullable=False) user_id = Column(Integer, ForeignKey(User.id), nullable=False) # OpenID's are owned by their user, so do the full thing. user = relationship(User, backref=backref('openid_urls', cascade='all, delete-orphan')) # OpenID Store Models class Nonce(Base): __tablename__ = "openid__nonce" server_url = Column(Unicode, primary_key=True) timestamp = Column(Integer, primary_key=True) salt = Column(Unicode, primary_key=True) def __unicode__(self): return f'Nonce: {self.server_url!r}, {self.salt!r}' class Association(Base): __tablename__ = "openid__association" server_url = Column(Unicode, primary_key=True) handle = Column(Unicode, primary_key=True) secret = Column(Unicode) issued = Column(Integer) lifetime = Column(Integer) assoc_type = Column(Unicode) def __unicode__(self): return f'Association: {self.server_url!r}, {self.handle!r}' MODELS = [ OpenIDUserURL, Nonce, Association ]