[z3-checkins] r41925 - z3/deliverance/DeliveranceVHoster/trunk/dvhoster

ianb at codespeak.net ianb at codespeak.net
Fri Apr 6 00:33:35 CEST 2007


Author: ianb
Date: Fri Apr  6 00:33:34 2007
New Revision: 41925

Modified:
   z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py
   z3/deliverance/DeliveranceVHoster/trunk/dvhoster/model.py
Log:
Rename some classes in dvhost.model to make more sense.  Add some docstrings too

Modified: z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py
==============================================================================
--- z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py	(original)
+++ z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py	Fri Apr  6 00:33:34 2007
@@ -10,7 +10,7 @@
 from wsgifilter import proxyapp
 from wsgifilter import relocateresponse
 from deliverance.wsgimiddleware import DeliveranceMiddleware
-from dvhoster.model import DataProvider, ProviderApp
+from dvhoster.model import DomainInfoSet, DomainInfoApp
 from dvhoster import current_environ
 from dvhoster.debuginterp import Renderer
 from dvhoster.util import load_func
@@ -42,7 +42,7 @@
             should_theme_uri = load_func(should_theme_uri, 'should_theme_uri')
         self.should_theme_uri = should_theme_uri
         self.app_conf = app_conf
-        self.provider = DataProvider(data_dir)
+        self.provider = DomainInfoSet(data_dir)
         self.rewrite_links = asbool(app_conf.get('rewrite_links', True))
         if app_conf.get('clean_environ_headers_regex'):
             self.clean_environ_headers_regex = re.compile(app_conf['clean_environ_headers_regex'])
@@ -69,7 +69,7 @@
         path_info = norm_path(environ.get('PATH_INFO', ''))
         if path_info.startswith('/.deliverance'):
             path_info_pop(environ)
-            subapp = ProviderApp(domain_info)
+            subapp = DomainInfoApp(domain_info)
             return subapp(environ, start_response)
 
         if domain_info.domain != domain:

Modified: z3/deliverance/DeliveranceVHoster/trunk/dvhoster/model.py
==============================================================================
--- z3/deliverance/DeliveranceVHoster/trunk/dvhoster/model.py	(original)
+++ z3/deliverance/DeliveranceVHoster/trunk/dvhoster/model.py	Fri Apr  6 00:33:34 2007
@@ -43,7 +43,16 @@
 </rules>
 '''
 
-class DataProvider(object):
+class DomainInfoSet(object):
+    """
+    Represents a set of DomainInfo objects.
+
+    Concretely, all domain info is in one directory, and this
+    represents that directory.  It creates new DomainInfo objects and
+    does some management around them.
+
+    This also handles aliases -- domains that point to other domains.
+    """
 
     def __init__(self, dir):
         self.dir = dir
@@ -52,12 +61,31 @@
             os.makedirs(self.dir)
 
     def alias_fn(self, alias):
+        """
+        Filename where an alias is kept.
+
+        Each alias is just the domain name plus ``-alias.txt``, and
+        contains the name of another domain name.
+        """
         return os.path.join(self.dir, alias+'-alias.txt')        
 
+    def normalize(self, domain_name):
+        """
+        Normalize a domain name (lower case, no funny characters).
+        """
+        domain_name = domain_name.strip().lower()
+        if not domain_re.search(domain_name):
+            raise ValueError(
+                'Bad domain name: %r' % domain_name)
+        return domain_name
+
     def domain(self, domain_name, aliases=()):
         """
-        Return the domain object for the given domain_name.  The
-        domain name given may not be the canonical domain.
+        Return the domain object for the given domain_name.
+
+        The domain name given may not be the canonical domain (that
+        is, you might get back and object with a different value for
+        ``.domain``).
         """
         domain_name = self.normalize(domain_name)
         alias_fn = self.alias_fn(domain_name)
@@ -75,17 +103,7 @@
         dir = os.path.join(self.dir, domain_name)
         if not os.path.exists(dir):
             os.mkdir(dir)
-        return DomainDataProvider(self, domain_name, dir)
-
-    def normalize(self, domain_name):
-        """
-        Normalize a domain name (lower case, no funny characters).
-        """
-        domain_name = domain_name.strip().lower()
-        if not domain_re.search(domain_name):
-            raise ValueError(
-                'Bad domain name: %r' % domain_name)
-        return domain_name
+        return DomainInfo(self, domain_name, dir)
 
     def add_alias(self, alias, domain):
         """
@@ -138,12 +156,15 @@
         os.rename(old_dir, new_dir)
         return self.domain(new_domain_name)
 
-class DomainDataProvider(object):
+class DomainInfo(object):
+    """
+    Represents the information about a single domain.
+    """
 
-    def __init__(self, provider, domain_name, base_dir):
+    def __init__(self, domain_set, domain_name, base_dir):
         self._domain_name = domain_name
         self.base_dir = base_dir
-        self.provider = provider
+        self.domain_set = domain_set
 
     def __repr__(self):
         return '<%s %s for %s in %r>' % (
@@ -153,6 +174,9 @@
             self.base_dir)
 
     def initialize(self):
+        """
+        Create the directory and basic files for this domain.
+        """
         for dir in [self.base_dir, self.rule_dir,
                     self.static_dir]:
             if not os.path.exists(dir):
@@ -195,9 +219,9 @@
                 dropped.remove(new_alias)
                 added.remove(new_alias)
         for alias in dropped:
-            self.provider.remove_alias(alias, self.domain)
+            self.domain_set.remove_alias(alias, self.domain)
         for alias in added:
-            self.provider.add_alias(alias, self.domain)
+            self.domain_set.add_alias(alias, self.domain)
     
     aliases = descriptors.watcher(
         descriptors.line_converter(persist.file_property('aliases.txt', default='')),
@@ -215,12 +239,12 @@
     def domain__set(self, new_domain):
         aliases = self.aliases
         old_domain = self.domain
-        new_obj = self.provider.rename_domain(self.domain, new_domain)
+        new_obj = self.domain_set.rename_domain(self.domain, new_domain)
         # Clone new object as self:
         self.__dict__.update(new_obj.__dict__)
         for alias in aliases:
-            self.provider.remove_alias(alias, domain=old_domain)
-            self.provider.add_alias(alias, new_domain)
+            self.domain_set.remove_alias(alias, domain=old_domain)
+            self.domain_set.add_alias(alias, new_domain)
 
     domain = property(domain__get, domain__set)
 
@@ -299,7 +323,11 @@
             assert header_value_re.search(value), (
                 "Header value invalid: %r" % value)
 
-class ProviderApp(server.ApplicationWrapper):
+class DomainInfoApp(server.ApplicationWrapper):
+    """
+    Provides the ``/.deliverance/`` web/REST API for a single
+    DomainInfo object.
+    """
 
     theme_uri = server.Setter(
         validator=validators.URL())


More information about the z3-checkins mailing list