[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