changeset 752:89b9037d68b7 beta

fixed Example celery config to ampq, fixed session problems on models and celery, implemented one base model as a parent for other
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 24 Nov 2010 17:15:33 +0100
parents ff881ec6a140
children ee801aa6292c
files celeryconfig.py rhodecode/lib/celerylib/tasks.py rhodecode/model/__init__.py rhodecode/model/permission.py rhodecode/model/repo.py rhodecode/model/scm.py rhodecode/model/settings.py rhodecode/model/user.py
diffstat 8 files changed, 35 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/celeryconfig.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/celeryconfig.py	Wed Nov 24 17:15:33 2010 +0100
@@ -14,8 +14,10 @@
 CELERY_IMPORTS = ("rhodecode.lib.celerylib.tasks",)
 
 ## Result store settings.
-CELERY_RESULT_BACKEND = "database"
-CELERY_RESULT_DBURI = dict(config.items('app:main'))['sqlalchemy.db1.url']
+CELERY_RESULT_BACKEND = "amqp"
+CELERY_AMQP_TASK_RESULT_EXPIRES = 18000  # 5 hours.
+
+#CELERY_RESULT_DBURI = dict(config.items('app:main'))['sqlalchemy.db1.url']
 CELERY_RESULT_SERIALIZER = 'json'
 
 
--- a/rhodecode/lib/celerylib/tasks.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/lib/celerylib/tasks.py	Wed Nov 24 17:15:33 2010 +0100
@@ -280,7 +280,7 @@
     from rhodecode.model.repo import RepoModel
     from vcs import get_backend
     log = create_repo_fork.get_logger()
-    repo_model = RepoModel()
+    repo_model = RepoModel(get_session())
     repo_model.create(form_data, cur_user, just_db=True, fork=True)
     repo_name = form_data['repo_name']
     repos_path = get_repos_path()
--- a/rhodecode/model/__init__.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/model/__init__.py	Wed Nov 24 17:15:33 2010 +0100
@@ -21,3 +21,12 @@
 #engine = engine_from_config(config, 'sqlalchemy.')
 #init_model(engine)
 # DO SOMETHING
+
+
+class BaseModel(object):
+
+    def __init__(self, sa=None):
+        if sa is not None:
+            self.sa = sa
+        else:
+            self.sa = meta.Session()
--- a/rhodecode/model/permission.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/model/permission.py	Wed Nov 24 17:15:33 2010 +0100
@@ -20,21 +20,18 @@
 """
 Created on Aug 20, 2010
 Model for permissions
-@author: marcink
+:author: marcink
 """
 
+from rhodecode.model import BaseModel
 from rhodecode.model.db import User, Permission, UserToPerm, RepoToPerm
 from rhodecode.model.caching_query import FromCache
-from rhodecode.model.meta import Session
 import logging
 import traceback
 log = logging.getLogger(__name__)
 
 
-class PermissionModel(object):
-
-    def __init__(self):
-        self.sa = Session()
+class PermissionModel(BaseModel):
 
     def get_permission(self, permission_id, cache=False):
         perm = self.sa.query(Permission)
--- a/rhodecode/model/repo.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/model/repo.py	Wed Nov 24 17:15:33 2010 +0100
@@ -21,12 +21,12 @@
 model for handling repositories actions
 :author: marcink
 """
-from vcs.backends import get_repo, get_backend
+from vcs.backends import get_backend
 from datetime import datetime
 from pylons import app_globals as g
 from rhodecode.model.db import Repository, RepoToPerm, User, Permission, \
     Statistics
-from rhodecode.model.meta import Session
+from rhodecode.model import BaseModel
 from rhodecode.model.user import UserModel
 from rhodecode.model.caching_query import FromCache
 import logging
@@ -35,10 +35,7 @@
 import traceback
 log = logging.getLogger(__name__)
 
-class RepoModel(object):
-
-    def __init__(self):
-        self.sa = Session()
+class RepoModel(BaseModel):
 
     def get(self, repo_id, cache=False):
         repo = self.sa.query(Repository)\
@@ -57,7 +54,7 @@
         if cache:
             repo = repo.options(FromCache("sql_cache_short",
                                           "get_repo_%s" % repo_name))
-        return repo.scalar()        
+        return repo.scalar()
 
     def get_users_js(self):
 
@@ -75,14 +72,14 @@
             #update permissions
             for username, perm in form_data['perms_updates']:
                 r2p = self.sa.query(RepoToPerm)\
-                        .filter(RepoToPerm.user == UserModel()\
+                        .filter(RepoToPerm.user == UserModel(self.sa)\
                                 .get_by_username(username, cache=False))\
                         .filter(RepoToPerm.repository == \
                                 self.get_by_repo_name(repo_name))\
                         .one()
 
                 r2p.permission_id = self.sa.query(Permission).filter(
-                                                Permission.permission_name == 
+                                                Permission.permission_name ==
                                                 perm).one().permission_id
                 self.sa.add(r2p)
 
@@ -90,7 +87,7 @@
             for username, perm in form_data['perms_new']:
                 r2p = RepoToPerm()
                 r2p.repository = self.get_by_repo_name(repo_name)
-                r2p.user = UserModel().get_by_username(username, cache=False)
+                r2p.user = UserModel(self.sa).get_by_username(username, cache=False)
 
                 r2p.permission_id = self.sa.query(Permission).filter(
                                         Permission.permission_name == perm)\
@@ -144,7 +141,7 @@
             #create default permission
             repo_to_perm = RepoToPerm()
             default = 'repository.read'
-            for p in UserModel().get_by_username('default', cache=False).user_perms:
+            for p in UserModel(self.sa).get_by_username('default', cache=False).user_perms:
                 if p.permission.permission_name.startswith('repository.'):
                     default = p.permission.permission_name
                     break
@@ -156,7 +153,8 @@
                     .one().permission_id
 
             repo_to_perm.repository_id = new_repo.repo_id
-            repo_to_perm.user_id = UserModel().get_by_username('default', cache=False).user_id
+            repo_to_perm.user_id = UserModel(self.sa)\
+                .get_by_username('default', cache=False).user_id
 
             self.sa.add(repo_to_perm)
             self.sa.commit()
--- a/rhodecode/model/scm.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/model/scm.py	Wed Nov 24 17:15:33 2010 +0100
@@ -28,7 +28,7 @@
 from rhodecode.lib import helpers as h
 from rhodecode.lib.auth import HasRepoPermissionAny
 from rhodecode.lib.utils import get_repos, make_ui, action_logger
-from rhodecode.model import meta
+from rhodecode.model import BaseModel
 from rhodecode.model.db import Repository, User, RhodeCodeUi, CacheInvalidation, \
     UserFollowing
 from rhodecode.model.caching_query import FromCache
@@ -54,14 +54,11 @@
         self.repo_id = repo_id
 
 
-class ScmModel(object):
+class ScmModel(BaseModel):
     """
     Mercurial Model
     """
 
-    def __init__(self):
-        self.sa = meta.Session()
-
     @LazyProperty
     def repos_path(self):
         """
--- a/rhodecode/model/settings.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/model/settings.py	Wed Nov 24 17:15:33 2010 +0100
@@ -20,10 +20,11 @@
 """
 Created on Nov 17, 2010
 Model for RhodeCode
-@author: marcink
+:author: marcink
 """
+
 from rhodecode.lib import helpers as h
-from rhodecode.model import meta
+from rhodecode.model import BaseModel
 from rhodecode.model.caching_query import FromCache
 from rhodecode.model.db import  RhodeCodeSettings
 from sqlalchemy.orm import joinedload
@@ -32,15 +33,11 @@
 
 log = logging.getLogger(__name__)
 
-class SettingsModel(object):
+class SettingsModel(BaseModel):
     """
     Settings model
     """
 
-    def __init__(self):
-        self.sa = meta.Session()
-
-
     def get(self, settings_key, cache=False):
         r = self.sa.query(RhodeCodeSettings)\
             .filter(RhodeCodeSettings.app_settings_name == settings_key).scalar()
--- a/rhodecode/model/user.py	Wed Nov 24 04:04:13 2010 +0100
+++ b/rhodecode/model/user.py	Wed Nov 24 17:15:33 2010 +0100
@@ -24,9 +24,9 @@
 """
 
 from pylons.i18n.translation import _
+from rhodecode.model import BaseModel
 from rhodecode.model.caching_query import FromCache
 from rhodecode.model.db import User
-from rhodecode.model.meta import Session
 from rhodecode.lib.exceptions import *
 
 import logging
@@ -36,10 +36,7 @@
 
 
 
-class UserModel(object):
-
-    def __init__(self):
-        self.sa = Session()
+class UserModel(BaseModel):
 
     def get(self, user_id, cache=False):
         user = self.sa.query(User)