changeset 759:a7f50911a945 beta

Models code cleanups
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 25 Nov 2010 22:16:29 +0100
parents 6a31e64acabd
children fb7a3b291e64
files rhodecode/model/__init__.py rhodecode/model/db.py rhodecode/model/permission.py
diffstat 3 files changed, 93 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/__init__.py	Thu Nov 25 22:06:18 2010 +0100
+++ b/rhodecode/model/__init__.py	Thu Nov 25 22:16:29 2010 +0100
@@ -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 <marcin@python-works.com>    
+    :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):
 
--- a/rhodecode/model/db.py	Thu Nov 25 22:06:18 2010 +0100
+++ b/rhodecode/model/db.py	Thu Nov 25 22:16:29 2010 +0100
@@ -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 <marcin@python-works.com>    
+    :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 @@
     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 @@
 
     def update_lastlogin(self):
         """Update user lastlogin"""
-        import datetime
 
         try:
             session = Session.object_session(self)
@@ -68,7 +96,7 @@
             session.add(self)
             session.commit()
             log.debug('updated user %s lastlogin', self.username)
-        except Exception:
+        except (DatabaseError,):
             session.rollback()
 
 
--- a/rhodecode/model/permission.py	Thu Nov 25 22:06:18 2010 +0100
+++ b/rhodecode/model/permission.py	Thu Nov 25 22:16:29 2010 +0100
@@ -1,8 +1,14 @@
-#!/usr/bin/env python
-# encoding: utf-8
-# Model for permissions
-# Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
+# -*- coding: utf-8 -*-
+"""
+    package.rhodecode.model.permission
+    ~~~~~~~~~~~~~~
 
+    permissions model for RhodeCode
+    :created_on: Aug 20, 2010
+    :author: marcink
+    :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>    
+    :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 @@
 
 
             self.sa.commit()
-        except:
+        except (DatabaseError,):
             log.error(traceback.format_exc())
             self.sa.rollback()
             raise