Changeset - a7f50911a945
[Not reviewed]
beta
0 3 0
Marcin Kuzminski - 15 years ago 2010-11-25 22:16:29
marcin@python-works.com
Models code cleanups
3 files changed with 93 insertions and 35 deletions:
0 comments (0 inline, 0 general)
rhodecode/model/__init__.py
Show inline comments
 
"""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):
 

	
rhodecode/model/db.py
Show inline comments
 
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 @@ 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()
 

	
 

	
rhodecode/model/permission.py
Show inline comments
 
#!/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 @@ class PermissionModel(BaseModel):
 

	
 

	
 
            self.sa.commit()
 
        except:
 
        except (DatabaseError,):
 
            log.error(traceback.format_exc())
 
            self.sa.rollback()
 
            raise
0 comments (0 inline, 0 general)