changeset 1276:88e750527c7c beta

small rewrite for injecting rhodecode_extras into ui. instead of injecting to hgweb instance, inject to ui and pass to hgweb. It's simpler and more readable.
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 23 Apr 2011 15:52:32 +0200
parents 2723276285ae
children cf2a67b91ffc
files rhodecode/lib/middleware/simplehg.py
diffstat 1 files changed, 14 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/middleware/simplehg.py	Sat Apr 23 15:17:42 2011 +0200
+++ b/rhodecode/lib/middleware/simplehg.py	Sat Apr 23 15:52:32 2011 +0200
@@ -174,15 +174,17 @@
         return app(environ, start_response)
 
     def __make_app(self):
-        """Make an wsgi application using hgweb, and my generated baseui
-        instance
+        """
+        Make an wsgi application using hgweb, and inject generated baseui
+        instance, additionally inject some extras into ui object
         """
+        self.__inject_extras(self.baseui, self.extras)
+        return hgweb(str(self.repo_path), baseui=self.baseui)
 
-        hgserve = hgweb(str(self.repo_path), baseui=self.baseui)
-        return  self.__load_web_settings(hgserve, self.extras)
 
     def __check_permission(self, action, user, repo_name):
-        """Checks permissions using action (push/pull) user and repository
+        """
+        Checks permissions using action (push/pull) user and repository
         name
 
         :param action: push or pull action
@@ -206,7 +208,8 @@
         return True
 
     def __get_repository(self, environ):
-        """Get's repository name out of PATH_INFO header
+        """
+        Get's repository name out of PATH_INFO header
 
         :param environ: environ where PATH_INFO is stored
         """
@@ -224,7 +227,8 @@
         return UserModel().get_by_username(username, cache=True)
 
     def __get_action(self, environ):
-        """Maps mercurial request commands into a clone,pull or push command.
+        """
+        Maps mercurial request commands into a clone,pull or push command.
         This should always return a valid command string
 
         :param environ:
@@ -249,16 +253,14 @@
         push requests"""
         invalidate_cache('get_repo_cached_%s' % repo_name)
 
-    def __load_web_settings(self, hgserve, extras={}):
-        #set the global ui for hgserve instance passed
-        hgserve.repo.ui = self.baseui
+    def __inject_extras(self, baseui, extras={}):
 
         hgrc = os.path.join(self.repo_path, '.hg', 'hgrc')
 
         #inject some additional parameters that will be available in ui
         #for hooks
         for k, v in extras.items():
-            hgserve.repo.ui.setconfig('rhodecode_extras', k, v)
+            baseui.setconfig('rhodecode_extras', k, v)
 
         repoui = make_ui('file', hgrc, False)
 
@@ -266,6 +268,4 @@
             #overwrite our ui instance with the section from hgrc file
             for section in ui_sections:
                 for k, v in repoui.configitems(section):
-                    hgserve.repo.ui.setconfig(section, k, v)
-
-        return hgserve
+                    baseui.repo.ui.setconfig(section, k, v)