changeset 74:cdf4fda66dd9

Started summary page. Added filters to templates. used by n,self.f.filtername prefixed by n to disable other filters. Few other fixes found
author Marcin Kuzminski <marcin@python-blog.com>
date Mon, 12 Apr 2010 10:29:18 +0200
parents 55d7f2502dfb
children 99afa4d28e2b
files pylons_app/config/routing.py pylons_app/controllers/hg.py pylons_app/lib/filters.py pylons_app/model/hg_model.py pylons_app/templates/base/base.html pylons_app/templates/summary.html
diffstat 6 files changed, 123 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/config/routing.py	Sun Apr 11 22:57:16 2010 +0200
+++ b/pylons_app/config/routing.py	Mon Apr 12 10:29:18 2010 +0200
@@ -28,7 +28,9 @@
     with map.submapper(path_prefix='/_admin', controller='admin') as m:
         m.connect('admin_home', '/', action='index')#main page
         m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}', action='add_repo')
-        
+    
+    
+    map.connect('summary_home', '/{repo_name}/_summary', controller='hg', action='view')    
     map.connect('hg', '/{path_info:.*}', controller='hg',
                 action="view", path_info='/')
 
--- a/pylons_app/controllers/hg.py	Sun Apr 11 22:57:16 2010 +0200
+++ b/pylons_app/controllers/hg.py	Mon Apr 12 10:29:18 2010 +0200
@@ -39,6 +39,10 @@
 
     def view(self, *args, **kwargs):
         #TODO: reimplement this not tu use hgwebdir
+        
+        vcs_impl = self._get_vcs_impl(request.environ) 
+        if vcs_impl:
+            return vcs_impl
         response = g.hgapp(request.environ, self.start_response)
         
         http_accept = request.environ.get('HTTP_ACCEPT', False)
@@ -63,3 +67,18 @@
 
 
         return template.render(g=g, c=c, session=session, h=h)
+    
+    
+    
+    
+    def _get_vcs_impl(self, environ):
+        path_info = environ['PATH_INFO']
+        c.repo_name = path_info.split('/')[-2]
+        action = path_info.split('/')[-1]
+        if not action.startswith('_'):
+            return False
+        else:
+            hg_model = HgModel()
+            c.repo_info = hg_model.get_repo(c.repo_name)
+            c.repo_changesets = c.repo_info.get_changesets(10)
+            return render('/summary.html')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/lib/filters.py	Mon Apr 12 10:29:18 2010 +0200
@@ -0,0 +1,11 @@
+from mercurial import util
+
+capitalize = lambda x: x.capitalize()
+date = lambda x: util.datestr(x)
+email = util.email
+hgdate = lambda x: "%d %d" % x
+isodate = lambda x: util.datestr(x, '%Y-%m-%d %H:%M %1%2')
+isodatesec = lambda x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2')
+localdate = lambda x: (x[0], util.makedate()[1])
+rfc822date = lambda context, x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2")
+rfc3339date = lambda x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2")
--- a/pylons_app/model/hg_model.py	Sun Apr 11 22:57:16 2010 +0200
+++ b/pylons_app/model/hg_model.py	Mon Apr 12 10:29:18 2010 +0200
@@ -12,7 +12,7 @@
 from pylons import tmpl_context as c, app_globals as g, session, request, config
 from pylons.controllers.util import abort
 try:
-    from vcs.backends.hg import get_repositories
+    from vcs.backends.hg import get_repositories, MercurialRepository
 except ImportError:
     print 'You have to import vcs module'
 from mercurial.templatefilters import age
@@ -53,3 +53,8 @@
             tmp_d['repo_archives'] = mercurial_repo._get_archive_list()
             
             yield tmp_d
+
+    def get_repo(self, repo_name):
+        path = g.paths[0][1]
+        repo = MercurialRepository(os.path.join(path, repo_name), g.baseui)
+        return repo
--- a/pylons_app/templates/base/base.html	Sun Apr 11 22:57:16 2010 +0200
+++ b/pylons_app/templates/base/base.html	Mon Apr 12 10:29:18 2010 +0200
@@ -1,4 +1,7 @@
 ## -*- coding: utf-8 -*-
+##filters definition
+<%namespace name="f" module="pylons_app.lib.filters" inheritable="True"/>
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/templates/summary.html	Mon Apr 12 10:29:18 2010 +0200
@@ -0,0 +1,81 @@
+<%inherit file="base/base.html"/>
+
+<%def name="title()">
+    ${_('Repository managment')}
+</%def>
+<%def name="breadcrumbs()">
+    ${h.link_to(u'Home',h.url('/'))}
+    / 
+    ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
+    /
+    ${_('summary')}
+</%def>
+<%def name="page_nav()">
+        <form action="{url}log">
+            {sessionvars%hiddenformentry}
+            <dl class="search">
+                <dt><label>Search: </label></dt>
+                <dd><input type="text" name="rev" /></dd>
+            </dl>
+        </form>
+
+        <ul class="page-nav">
+            <li class="current">summary</li>
+            <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+            <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+            <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+            <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+            <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+        </ul>
+</%def>
+<%def name="main()">
+
+    <h2 class="no-link no-border">${_('Mercurial Repository Overview')}</h2>
+    <dl class="overview">
+        <dt>name</dt>
+        <dd>${c.repo_info.name}</dd>
+        <dt>description</dt>
+        <dd>${c.repo_info.description}</dd>
+        <dt>contact</dt>
+        <dd>${c.repo_info.contact}</dd>
+        <dt>last change</dt>
+        <dd>${c.repo_info.last_change|n,self.f.rfc822date}</dd>
+    </dl>
+
+    <h2><a href="{url}shortlog{sessionvars%urlparameter}">Changes</a></h2>
+    <table>
+	%for cnt,cs in enumerate(c.repo_changesets):
+		<tr class="parity${cnt%2}">
+			<td>${cs.date}</td>
+			<td>${cs.author}</td>
+			<td>${cs.message}</td>
+			<td class="nowrap">
+			${h.link_to(u'changset')}
+			|
+			${h.link_to(u'files')}
+			</td>
+		</tr>
+	%endfor
+        <tr class="light">
+            <td colspan="4"><a class="list" href="{url}shortlog{sessionvars%urlparameter}">...</a></td>
+        </tr>
+    </table>
+
+    <h2><a href="{url}tags{sessionvars%urlparameter}">Tags</a></h2>
+    <table>
+{tags}
+        <tr class="light">
+            <td colspan="3"><a class="list" href="{url}tags{sessionvars%urlparameter}">...</a></td>
+        </tr>
+    </table>
+
+    <h2 class="no-link">Branches</h2>
+    <table>
+    {branches%branchentry}
+        <tr class="light">
+          <td colspan="4"><a class="list"  href="#">...</a></td>
+        </tr>
+    </table>
+
+</%def>    
\ No newline at end of file