Refactored more into the web interface.
authorSteve Losh <steve@stevelosh.com>
Sat, 7 Feb 2009 17:39:19 +0000 (12:39 -0500)
committerSteve Losh <steve@stevelosh.com>
Sat, 7 Feb 2009 17:39:19 +0000 (12:39 -0500)
cfbe.py
web.py

diff --git a/cfbe.py b/cfbe.py
index 7ace04c3fc3fe79297e0c62518d97a4d2a6084c3..817f41f2af98db446007385a4a609b9d4584d555 100755 (executable)
--- a/cfbe.py
+++ b/cfbe.py
@@ -2,21 +2,11 @@
 
 import cherrypy
 from cherryflavoredbugseverywhere import web
-from jinja2 import Environment, FileSystemLoader
-from datetime import datetime
 from optparse import OptionParser
 from os import path
 
 module_dir = path.dirname(path.abspath(web.__file__))
-
-def datetimeformat(value, format='%B %d, %Y at %I:%M %p'):
-    """Takes a timestamp and revormats it into a human-readable string."""
-    return datetime.fromtimestamp(value).strftime(format)
-
-
-template_root = path.join(module_dir, 'templates')
-env = Environment(loader=FileSystemLoader(template_root))
-env.filters['datetimeformat'] = datetimeformat
+template_dir = path.join(module_dir, 'templates')
 
 def build_parser():
     """Builds and returns the command line option parser."""
@@ -40,5 +30,5 @@ def parse_arguments():
 config = path.join(module_dir, 'cfbe.config')
 options = parse_arguments()
 
-WebInterface = web.WebInterface(path.abspath(options['bug_root']))
+WebInterface = web.WebInterface(path.abspath(options['bug_root']), template_dir)
 cherrypy.quickstart(WebInterface, '/', config)
diff --git a/web.py b/web.py
index 0e884932043e5ca54c05416cd126fcf9d462e4b0..0833884a3a376210846f39e81a3959a5fdc0a597 100644 (file)
--- a/web.py
+++ b/web.py
@@ -1,14 +1,22 @@
 import cherrypy
 from libbe import bugdir
+from jinja2 import Environment, FileSystemLoader
+from datetime import datetime
+
+def datetimeformat(value, format='%B %d, %Y at %I:%M %p'):
+    """Takes a timestamp and revormats it into a human-readable string."""
+    return datetime.fromtimestamp(value).strftime(format)
 
 class WebInterface:
     """The web interface to CFBE."""
     
-    def __init__(self, bug_root):
+    def __init__(self, bug_root, template_root):
         """Initialize the bug repository for this web interface."""
         self.bug_root = bug_root
         self.bd = bugdir.BugDir(root=self.bug_root)
         self.repository_name = self.bd.root.split('/')[-1]
+        self.env = Environment(loader=FileSystemLoader(template_root))
+        env.filters['datetimeformat'] = datetimeformat
     
     def get_common_information(self):
         """Returns a dict of common information that most pages will need."""
@@ -65,7 +73,7 @@ class WebInterface:
         if target != '':
             label += ' Currently Unschdeuled' if target == 'None' else ' Scheduled for %s' % (target,)
         
-        template = env.get_template('list.html')
+        template = self.env.get_template('list.html')
         bugs = self.filter_bugs(status, assignee, target)
         
         common_info = self.get_common_information()
@@ -85,7 +93,7 @@ class WebInterface:
         
         bug = self.bd.bug_from_shortname(id)
         
-        template = env.get_template('bug.html')
+        template = self.env.get_template('bug.html')
         common_info = self.get_common_information()
         return template.render(bug=bug, bd=self.bd, 
                                assignees=common_info['possible_assignees'],