Files
@ 3a567e329fb6
Branch filter:
Location: kallithea/pylons_app/model/db.py - annotation
3a567e329fb6
8.1 KiB
text/x-python
updated whoosh deps,
fixed templates, changelog and changeset stylings
changed 8 letter password into 6 letter passwords required
fixed templates, changelog and changeset stylings
changed 8 letter password into 6 letter passwords required
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | b2c38dee135a d66a7fa7689b 3ada2f409c1c d66a7fa7689b 0e5455fda8fd d66a7fa7689b d66a7fa7689b d66a7fa7689b 3ada2f409c1c 1ef52a70f3b7 1ef52a70f3b7 55377fdc1fc6 1ef52a70f3b7 55377fdc1fc6 55377fdc1fc6 1ef52a70f3b7 1ef52a70f3b7 1ef52a70f3b7 1ef52a70f3b7 1ef52a70f3b7 1ef52a70f3b7 1ef52a70f3b7 1ef52a70f3b7 b27d32cb3157 b27d32cb3157 b27d32cb3157 a0116e944da1 3ada2f409c1c 6b934c9607e7 0e5455fda8fd b2c38dee135a b2c38dee135a b2c38dee135a 3a66e7421a99 c6526b7531e9 c6526b7531e9 c6526b7531e9 c6526b7531e9 c6526b7531e9 a0116e944da1 3ed2d46a2ca7 37a832dc4a82 0e5455fda8fd 0e5455fda8fd 0e5455fda8fd 0e5455fda8fd 37a832dc4a82 3ed2d46a2ca7 d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b d66a7fa7689b 6b934c9607e7 d66a7fa7689b d66a7fa7689b d66a7fa7689b 1b6d7662d6e2 a0116e944da1 3ada2f409c1c 3ada2f409c1c 29370bb76fa6 0e5455fda8fd 29370bb76fa6 29370bb76fa6 b2c38dee135a b2c38dee135a 3d6d548ad3cc a0116e944da1 29370bb76fa6 a0116e944da1 a0116e944da1 a26f48ad7a8a a26f48ad7a8a a26f48ad7a8a 0e5455fda8fd 5da4ef115006 0e5455fda8fd 29370bb76fa6 5da4ef115006 f5c1eec9f376 5da4ef115006 3ed2d46a2ca7 3ed2d46a2ca7 3ed2d46a2ca7 a0116e944da1 c6526b7531e9 c6526b7531e9 29370bb76fa6 c6526b7531e9 b18f89d6d17f b18f89d6d17f 37a832dc4a82 37a832dc4a82 29370bb76fa6 f5c1eec9f376 29370bb76fa6 a26f48ad7a8a f5c1eec9f376 29370bb76fa6 29370bb76fa6 a26f48ad7a8a 29370bb76fa6 29370bb76fa6 29370bb76fa6 a26f48ad7a8a f5c1eec9f376 f5c1eec9f376 f5c1eec9f376 27f801e03489 f5c1eec9f376 f5c1eec9f376 f5c1eec9f376 f5c1eec9f376 f5c1eec9f376 f5c1eec9f376 f5c1eec9f376 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 2256c78afe53 f5c1eec9f376 | from pylons_app.model.meta import Base
from sqlalchemy import *
from sqlalchemy.orm import relation, backref
from sqlalchemy.orm.session import Session
from vcs.utils.lazy import LazyProperty
import logging
log = logging.getLogger(__name__)
class HgAppSettings(Base):
__tablename__ = 'hg_app_settings'
__table_args__ = (UniqueConstraint('app_settings_name'), {'useexisting':True})
app_settings_id = Column("app_settings_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
app_settings_name = Column("app_settings_name", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
app_settings_value = Column("app_settings_value", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
class HgAppUi(Base):
__tablename__ = 'hg_app_ui'
__table_args__ = {'useexisting':True}
ui_id = Column("ui_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
ui_section = Column("ui_section", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
ui_key = Column("ui_key", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
ui_value = Column("ui_value", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
ui_active = Column("ui_active", BOOLEAN(), nullable=True, unique=None, default=True)
class User(Base):
__tablename__ = 'users'
__table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True})
user_id = Column("user_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
username = Column("username", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
password = Column("password", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
active = Column("active", BOOLEAN(), nullable=True, unique=None, default=None)
admin = Column("admin", BOOLEAN(), nullable=True, unique=None, default=False)
name = Column("name", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
lastname = Column("lastname", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
email = Column("email", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
last_login = Column("last_login", DATETIME(timezone=False), nullable=True, unique=None, default=None)
user_log = relation('UserLog')
user_perms = relation('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id")
@LazyProperty
def full_contact(self):
return '%s %s <%s>' % (self.name, self.lastname, self.email)
def __repr__(self):
return "<User('id:%s:%s')>" % (self.user_id, self.username)
def update_lastlogin(self):
"""Update user lastlogin"""
import datetime
try:
session = Session.object_session(self)
self.last_login = datetime.datetime.now()
session.add(self)
session.commit()
log.debug('updated user %s lastlogin', self.username)
except Exception:
session.rollback()
class UserLog(Base):
__tablename__ = 'user_logs'
__table_args__ = {'useexisting':True}
user_log_id = Column("user_log_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
user_id = Column("user_id", INTEGER(), ForeignKey(u'users.user_id'), nullable=False, unique=None, default=None)
user_ip = Column("user_ip", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
repository = Column("repository", TEXT(length=None, convert_unicode=False, assert_unicode=None), ForeignKey(u'repositories.repo_name'), nullable=False, unique=None, default=None)
action = Column("action", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
action_date = Column("action_date", DATETIME(timezone=False), nullable=True, unique=None, default=None)
revision = Column('revision', TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
user = relation('User')
class Repository(Base):
__tablename__ = 'repositories'
__table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},)
repo_id = Column("repo_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
repo_name = Column("repo_name", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
user_id = Column("user_id", INTEGER(), ForeignKey(u'users.user_id'), nullable=False, unique=False, default=None)
private = Column("private", BOOLEAN(), nullable=True, unique=None, default=None)
description = Column("description", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
user = relation('User')
repo_to_perm = relation('RepoToPerm', cascade='all')
def __repr__(self):
return "<Repository('id:%s:%s')>" % (self.repo_id, self.repo_name)
class Permission(Base):
__tablename__ = 'permissions'
__table_args__ = {'useexisting':True}
permission_id = Column("permission_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
permission_name = Column("permission_name", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
permission_longname = Column("permission_longname", TEXT(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
def __repr__(self):
return "<Permission('%s:%s')>" % (self.permission_id, self.permission_name)
class RepoToPerm(Base):
__tablename__ = 'repo_to_perm'
__table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True})
repo_to_perm_id = Column("repo_to_perm_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
user_id = Column("user_id", INTEGER(), ForeignKey(u'users.user_id'), nullable=False, unique=None, default=None)
permission_id = Column("permission_id", INTEGER(), ForeignKey(u'permissions.permission_id'), nullable=False, unique=None, default=None)
repository_id = Column("repository_id", INTEGER(), ForeignKey(u'repositories.repo_id'), nullable=False, unique=None, default=None)
user = relation('User')
permission = relation('Permission')
repository = relation('Repository')
class UserToPerm(Base):
__tablename__ = 'user_to_perm'
__table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True})
user_to_perm_id = Column("user_to_perm_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
user_id = Column("user_id", INTEGER(), ForeignKey(u'users.user_id'), nullable=False, unique=None, default=None)
permission_id = Column("permission_id", INTEGER(), ForeignKey(u'permissions.permission_id'), nullable=False, unique=None, default=None)
user = relation('User')
permission = relation('Permission')
class Statistics(Base):
__tablename__ = 'statistics'
__table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True})
stat_id = Column("stat_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
repository_id = Column("repository_id", INTEGER(), ForeignKey(u'repositories.repo_id'), nullable=False, unique=True, default=None)
stat_on_revision = Column("stat_on_revision", INTEGER(), nullable=False)
commit_activity = Column("commit_activity", BLOB(), nullable=False)#JSON data
commit_activity_combined = Column("commit_activity_combined", BLOB(), nullable=False)#JSON data
languages = Column("languages", BLOB(), nullable=False)#JSON data
repository = relation('Repository')
|