diff --git a/kallithea/model/db.py b/kallithea/model/db.py --- a/kallithea/model/db.py +++ b/kallithea/model/db.py @@ -1483,7 +1483,7 @@ class Repository(Base, BaseModel): class RepoGroup(Base, BaseModel): __tablename__ = 'groups' __table_args__ = ( - CheckConstraint('group_id != group_parent_id'), + CheckConstraint('group_id != group_parent_id', name='ck_groups_no_self_parent'), _table_args_default_dict, ) __mapper_args__ = {'order_by': 'group_name'} @@ -1900,7 +1900,7 @@ class UserGroupUserGroupToPerm(Base, Bas __tablename__ = 'user_group_user_group_to_perm' __table_args__ = ( UniqueConstraint('target_user_group_id', 'user_group_id', 'permission_id'), - CheckConstraint('target_user_group_id != user_group_id'), + CheckConstraint('target_user_group_id != user_group_id', name='ck_user_group_user_group_to_perm_no_self_target'), _table_args_default_dict, ) @@ -2012,8 +2012,8 @@ class Statistics(Base, BaseModel): class UserFollowing(Base, BaseModel): __tablename__ = 'user_followings' __table_args__ = ( - UniqueConstraint('user_id', 'follows_repository_id'), - UniqueConstraint('user_id', 'follows_user_id'), + UniqueConstraint('user_id', 'follows_repository_id', name='uq_user_followings_user_repo'), + UniqueConstraint('user_id', 'follows_user_id', name='uq_user_followings_user_user'), _table_args_default_dict, ) diff --git a/kallithea/model/meta.py b/kallithea/model/meta.py --- a/kallithea/model/meta.py +++ b/kallithea/model/meta.py @@ -40,3 +40,18 @@ Base = declarative_base() #to use cache use this in query #.options(FromCache("sqlalchemy_cache_type", "cachekey")) + + +# Define naming conventions for foreign keys, primary keys, indexes, +# check constraints, and unique constraints, respectively. +Base.metadata.naming_convention = { + 'fk': 'fk_%(table_name)s_%(column_0_name)s', + 'pk': 'pk_%(table_name)s', + 'ix': 'ix_%(column_0_label)s', + 'ck': 'ck_%(table_name)s_%(column_0_name)s', + 'uq': 'uq_%(table_name)s_%(column_0_name)s', +} +# For custom CheckConstraints (not those autogenerated e.g. for Boolean +# types), a name should be given explicitly, since "column_0" is here a +# rather vague notion. A custom name is also necesarry if the generated +# name is very long, since MySQL limits identifiers to 64 characters. diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -43,7 +43,7 @@ requirements = [ "Beaker==1.6.4", "WebHelpers==1.3", "formencode>=1.2.4,<=1.2.6", - "SQLAlchemy>=0.7.10,<1.1", + "SQLAlchemy>=1.0,<1.1", "Mako>=0.9.0,<=1.0.0", "pygments>=1.5", "whoosh>=2.4.0,<=2.5.7",