comparison rhodecode/model/db.py @ 1460:b50348816a80 beta

Added more advanced hook management into rhodecode admin settings
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 09 Sep 2011 20:30:14 +0300
parents 88d13c1c6a55
children ad5a543a9b2f
comparison
equal deleted inserted replaced
1459:6691d4097344 1460:b50348816a80
123 return Session.query(cls) 123 return Session.query(cls)
124 124
125 @classmethod 125 @classmethod
126 def get(cls, id_): 126 def get(cls, id_):
127 return Session.query(cls).get(id_) 127 return Session.query(cls).get(id_)
128 128
129 @classmethod
130 def delete(cls, id_):
131 obj = Session.query(cls).get(id_)
132 Session.delete(obj)
133 Session.commit()
134
129 135
130 class RhodeCodeSettings(Base, BaseModel): 136 class RhodeCodeSettings(Base, BaseModel):
131 __tablename__ = 'rhodecode_settings' 137 __tablename__ = 'rhodecode_settings'
132 __table_args__ = (UniqueConstraint('app_settings_name'), {'extend_existing':True}) 138 __table_args__ = (UniqueConstraint('app_settings_name'), {'extend_existing':True})
133 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 139 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
179 return fd 185 return fd
180 186
181 187
182 class RhodeCodeUi(Base, BaseModel): 188 class RhodeCodeUi(Base, BaseModel):
183 __tablename__ = 'rhodecode_ui' 189 __tablename__ = 'rhodecode_ui'
184 __table_args__ = {'extend_existing':True} 190 __table_args__ = (UniqueConstraint('ui_key'), {'extend_existing':True})
191
192 HOOK_UPDATE = 'changegroup.update'
193 HOOK_REPO_SIZE = 'changegroup.repo_size'
194 HOOK_PUSH = 'pretxnchangegroup.push_logger'
195 HOOK_PULL = 'preoutgoing.pull_logger'
196
185 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 197 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
186 ui_section = Column("ui_section", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 198 ui_section = Column("ui_section", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
187 ui_key = Column("ui_key", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 199 ui_key = Column("ui_key", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
188 ui_value = Column("ui_value", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 200 ui_value = Column("ui_value", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
189 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True) 201 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True)
190 202
191 203
192 @classmethod 204 @classmethod
193 def get_by_key(cls, key): 205 def get_by_key(cls, key):
194 return Session.query(cls).filter(cls.ui_key == key) 206 return Session.query(cls).filter(cls.ui_key == key)
207
208
209 @classmethod
210 def get_builtin_hooks(cls):
211 q = cls.query()
212 q = q.filter(cls.ui_key.in_([cls.HOOK_UPDATE,
213 cls.HOOK_REPO_SIZE,
214 cls.HOOK_PUSH, cls.HOOK_PULL]))
215 return q.all()
216
217 @classmethod
218 def get_custom_hooks(cls):
219 q = cls.query()
220 q = q.filter(~cls.ui_key.in_([cls.HOOK_UPDATE,
221 cls.HOOK_REPO_SIZE,
222 cls.HOOK_PUSH, cls.HOOK_PULL]))
223 q = q.filter(cls.ui_section == 'hooks')
224 return q.all()
225
226 @classmethod
227 def create_or_update_hook(cls, key, val):
228 new_ui = cls.get_by_key(key).scalar() or cls()
229 new_ui.ui_section = 'hooks'
230 new_ui.ui_active = True
231 new_ui.ui_key = key
232 new_ui.ui_value = val
233
234 Session.add(new_ui)
235 Session.commit()
195 236
196 237
197 class User(Base, BaseModel): 238 class User(Base, BaseModel):
198 __tablename__ = 'users' 239 __tablename__ = 'users'
199 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'extend_existing':True}) 240 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'extend_existing':True})