# HG changeset patch # User Marcin Kuzminski # Date 2010-11-25 21:16:29 # Node ID a7f50911a945718e259acc745f1f34f5cbd775a6 # Parent 6a31e64acabdea7baeb2dd20dd3af16125038003 Models code cleanups diff --git a/rhodecode/model/__init__.py b/rhodecode/model/__init__.py --- a/rhodecode/model/__init__.py +++ b/rhodecode/model/__init__.py @@ -1,27 +1,52 @@ -"""The application's model objects""" +# -*- coding: utf-8 -*- +""" + package.rhodecode.model.__init__ + ~~~~~~~~~~~~~~ + The application's model objects + + :created_on: Nov 25, 2010 + :author: marcink + :copyright: (C) 2009-2010 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. + + + :example: + from paste.deploy import appconfig + from pylons import config + from sqlalchemy import engine_from_config + from rhodecode.config.environment import load_environment + + conf = appconfig('config:development.ini', relative_to = './../../') + load_environment(conf.global_conf, conf.local_conf) + + engine = engine_from_config(config, 'sqlalchemy.') + init_model(engine) + #RUN YOUR CODE HERE + +""" +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 +# of the License or (at your opinion) any later version of the license. +# +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + import logging from rhodecode.model import meta log = logging.getLogger(__name__) def init_model(engine): """Call me before using any of the tables or classes in the model""" - log.info("INITIALIZING DB MODELS") + log.info("initializing db models for %s", engine) meta.Base.metadata.bind = engine - #meta.Base2.metadata.bind = engine2 - -#THIS IS A TEST FOR EXECUTING SCRIPT AND LOAD PYLONS APPLICATION GLOBALS -#from paste.deploy import appconfig -#from pylons import config -#from sqlalchemy import engine_from_config -#from rhodecode.config.environment import load_environment -# -#conf = appconfig('config:development.ini', relative_to = './../../') -#load_environment(conf.global_conf, conf.local_conf) -# -#engine = engine_from_config(config, 'sqlalchemy.') -#init_model(engine) -# DO SOMETHING - class BaseModel(object): diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -1,9 +1,38 @@ -from rhodecode.model.meta import Base +# -*- coding: utf-8 -*- +""" + package.rhodecode.model.db + ~~~~~~~~~~~~~~ + + Database Models for RhodeCode + :created_on: Apr 08, 2010 + :author: marcink + :copyright: (C) 2009-2010 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. +""" +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 +# of the License or (at your opinion) any later version of the license. +# +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +import logging +import datetime + from sqlalchemy import * +from sqlalchemy.exc import DatabaseError from sqlalchemy.orm import relation, backref from sqlalchemy.orm.session import Session -from vcs.utils.lazy import LazyProperty -import logging + +from rhodecode.model.meta import Base + log = logging.getLogger(__name__) class RhodeCodeSettings(Base): @@ -51,7 +80,7 @@ class User(Base): repositories = relation('Repository') user_followers = relation('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all') - @LazyProperty + @property def full_contact(self): return '%s %s <%s>' % (self.name, self.lastname, self.email) @@ -60,7 +89,6 @@ class User(Base): def update_lastlogin(self): """Update user lastlogin""" - import datetime try: session = Session.object_session(self) @@ -68,7 +96,7 @@ class User(Base): session.add(self) session.commit() log.debug('updated user %s lastlogin', self.username) - except Exception: + except (DatabaseError,): session.rollback() diff --git a/rhodecode/model/permission.py b/rhodecode/model/permission.py --- a/rhodecode/model/permission.py +++ b/rhodecode/model/permission.py @@ -1,8 +1,14 @@ -#!/usr/bin/env python -# encoding: utf-8 -# Model for permissions -# Copyright (C) 2009-2010 Marcin Kuzminski +# -*- coding: utf-8 -*- +""" + package.rhodecode.model.permission + ~~~~~~~~~~~~~~ + permissions model for RhodeCode + :created_on: Aug 20, 2010 + :author: marcink + :copyright: (C) 2009-2010 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. +""" # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; version 2 @@ -17,17 +23,16 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -""" -Created on Aug 20, 2010 -Model for permissions -:author: marcink -""" + +import logging +import traceback + +from sqlalchemy.exc import DatabaseError from rhodecode.model import BaseModel from rhodecode.model.db import User, Permission, UserToPerm, RepoToPerm from rhodecode.model.caching_query import FromCache -import logging -import traceback + log = logging.getLogger(__name__) @@ -90,7 +95,7 @@ class PermissionModel(BaseModel): self.sa.commit() - except: + except (DatabaseError,): log.error(traceback.format_exc()) self.sa.rollback() raise