Author: jhammel
Date: 2008-08-29 12:01:04 -0400 (Fri, 29 Aug 2008)
New Revision: 20160

Modified:
   trac/install/TracLegos/traclegos/templates/project-details.html
   trac/install/TracLegos/traclegos/web.py
Log:
MODIFIED: improvements to display of repository options;  now to link them in

Modified: trac/install/TracLegos/traclegos/templates/project-details.html
===================================================================
--- trac/install/TracLegos/traclegos/templates/project-details.html     
2008-08-29 15:22:51 UTC (rev 20159)
+++ trac/install/TracLegos/traclegos/templates/project-details.html     
2008-08-29 16:01:04 UTC (rev 20160)
@@ -21,20 +21,23 @@
 <div py:if="repositories">
   <h2>Source Repository</h2>
 
-  <p py:for="repository in repositories">
-  <input type="radio" name="repository" 
value="${repository.__class__.__name__}"/>
-  ${repository.description}<py:if test="len(repository.options)">:
-
-  <py:choose test="len(repository.options)">
-  <py:when test="1"><input type="text"/>
-  </py:choose>
+  <p py:for="index, repository in enumerate(repositories)" 
+     py:with="options = [option for option in repository.options if
+  option.name not in excluded_fields.get(repository.name, ())]">
+  <input type="radio" 
+        py:attrs="{'checked': not index and 'true' or None }"
+        name="repository" value="${repository.name}"/>
+  ${repository.description}<py:if test="len(options)">:
+  <py:choose test="len(options)">
+  <py:when test="1"><input type="text"/></py:when>
   <py:otherwise>
   <ul>
-    <li py:for="option in repository.options">
+    <li py:for="option in options">
     <input type="text"/>
     </li>
   </ul>
   </py:otherwise>
+  </py:choose>
   </py:if>
   </p>
     

Modified: trac/install/TracLegos/traclegos/web.py
===================================================================
--- trac/install/TracLegos/traclegos/web.py     2008-08-29 15:22:51 UTC (rev 
20159)
+++ trac/install/TracLegos/traclegos/web.py     2008-08-29 16:01:04 UTC (rev 
20160)
@@ -25,8 +25,10 @@
 
     # default values for instance variables 
     # (settable through **kw to __init__)
+    # XXX this looks like the wrong pattern here, maybe
     defaults = {'directory': None, 
-                'available_templates': None }
+                'available_templates': None,
+                'available_repositories': None }
 
     def __init__(self, **kw):
         for key in self.defaults:
@@ -54,7 +56,21 @@
         # steps of project creation
         self.steps = [ 'create-project', 'project-details', 
'project-variables' ]
 
+        # available SCM repositories
         self.repositories = available_repositories()
+        if self.available_repositories is None:
+            self.available_repositories = ['NoRepository'] + [ name for name 
in self.repositories.keys() if name is not 'NoRepository' ]
+            
+        else:
+            for name in self.repositories.keys():
+                if name not in self.available_repositories:
+                    del self.repositories[name]
+                    
+        # known fields for repositories
+        # XXX could add these via the paste .ini file
+        self.repository_fields = {}
+        self.repository_fields['SVNSync'] = { 'directory': 
os.path.join(self.directory, '%(project)s', 'mirror')}
+        self.repository_fields['NewSVN'] = { 'directory': 
os.path.join(self.directory, '%(project)s', 'svn') }
 
         # TODO: pop project-details if this is an empty step
 
@@ -198,7 +214,10 @@
         svn repo, mailing lists (TODO)
         """
         data = {'project': req.GET['project'],
-                'repositories': self.repositories } # TODO: databases
+                'repositories': [ self.repositories[name] for name in 
self.available_repositories ],
+                'excluded_fields': dict((key, value.keys()) for key, value in 
self.repository_fields.items())} 
+
+        # TODO: databases
         return data
 
     def validateProjectDetails(self, req):



--
To unsubscribe send an email with subject "unsubscribe" to [EMAIL PROTECTED]  
Please contact [EMAIL PROTECTED] for questions.

Reply via email to