示例#1
0
def register_extensions(app):
    sqlalchemy_utils.force_instant_defaults()
    sqlalchemy_utils.force_auto_coercion()
    DB.init_app(app)
    CORS.init_app(app)
    MIGRATE.init_app(app, DB)
    SOCKETIO.init_app(app)
    JWT.init_app(app)
    JWT._set_error_handler_callbacks(REST)
示例#2
0
# | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
# | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the              |
# | GNU General Public License for more details.                              |
# |                                                                           |
# | You should have received a copy of the GNU General Public License         |
# | along with this program. If not, see <http://www.gnu.org/licenses/>.      |
# +---------------------------------------------------------------------------+

from flask_cors import CORS
import logging
logging.getLogger('flask_cors').level = logging.DEBUG
cross_origin_resource_sharing = CORS()

from sqlalchemy_utils import force_auto_coercion, force_instant_defaults
force_auto_coercion()
force_instant_defaults()

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

from . import api
from . import projects


def init_app(app):
    """
    Application extensions initialization.
    """

    EXTENSIONS = (cross_origin_resource_sharing, api, projects, db)
# encoding: utf-8
# pylint: disable=invalid-name,wrong-import-position
"""
Extensions setup
================
"""

from sqlalchemy_utils import force_auto_coercion, force_instant_defaults
force_auto_coercion()
force_instant_defaults()

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

from flask_login import LoginManager
login_manager = LoginManager()

from flask_marshmallow import Marshmallow
marshmallow = Marshmallow()

from . import api

from .auth import OAuth2Provider
oauth2 = OAuth2Provider()


class AlembicDatabaseMigrationConfig(object):
    """
    Helper config holder that provides missing functions of Flask-Alembic
    package since we use custom invoke tasks instead.
    """
示例#4
0
MAX_WORD_LENGTH = 22
MAX_CLUE_LENGTH = 40


class User(BaseModel):
    id = Column(Integer, primary_key=True)
    language = Column(Enum(Language), nullable=False, default=DEFAULT_LANGUAGE)
    nickname = Column(String(MAX_NICKNAME_LENGTH))

    player = relationship("DuetPlayer",
                          cascade="save-update, merge, delete",
                          uselist=False,
                          back_populates="user")


force_instant_defaults(User)


class DuetPlayer(BaseModel):
    id = Column(Integer, ForeignKey("users.id"), primary_key=True)
    nickname = Column(String(MAX_NICKNAME_LENGTH), nullable=False)
    game_id = Column(UUIDType, ForeignKey("duet_games.id"), nullable=False)
    team = Column(Enum(duet.Team), nullable=False)

    user = relationship("User", lazy="joined", back_populates="player")
    game = relationship("DuetGame", back_populates="players")

    @validates("nickname")
    def trim_nickname(self, key, nickname: str) -> str:
        return nickname[:MAX_NICKNAME_LENGTH]