changeset 128:9deb6f1d5b90

Implemented file history.
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 03 May 2010 21:59:01 +0200
parents 20dc7a5eb748
children 42d46deb124d
files pylons_app/controllers/files.py pylons_app/templates/files.html pylons_app/templates/files/files.html pylons_app/templates/files/files_browser.html pylons_app/templates/files/files_source.html
diffstat 5 files changed, 130 insertions(+), 121 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/controllers/files.py	Mon May 03 19:07:54 2010 +0200
+++ b/pylons_app/controllers/files.py	Mon May 03 21:59:01 2010 +0200
@@ -22,4 +22,18 @@
         
         c.files_list = c.changeset.get_node(f_path)
         
-        return render('/files.html')
+        c.file_history = self._get_history(repo, c.files_list, f_path)
+        return render('files/files.html')
+
+
+    def _get_history(self, repo, node, f_path):
+        from vcs.nodes import NodeKind
+        if not node.kind is NodeKind.FILE:
+            return []
+        changesets = list(node.history)
+        changesets.reverse()
+        hist_l = []
+        for chs in changesets:
+            n_desc = 'r%s:%s' % (chs.revision, chs._short)
+            hist_l.append((chs._short, n_desc,))
+        return hist_l
--- a/pylons_app/templates/files.html	Mon May 03 19:07:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-<%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('files_home',repo_name=c.repo_name))}
-    /
-    ${_('files')}
-</%def>
-<%def name="page_nav()">
-        <form action="log">
-            <dl class="search">
-                <dt><label>Search: </label></dt>
-                <dd><input type="text" name="rev" /></dd>
-            </dl>
-        </form>
-
-		${self.menu('files')}     
-</%def>
-<%def name="css()">
-<link rel="stylesheet" href="/css/monoblue_custom.css" type="text/css" />
-<link rel="stylesheet" href="/css/pygments.css" type="text/css" />
-</%def>
-<%def name="main()">
-
-    <h2 class="no-link no-border">${_('Files')}</h2>
-	<div id="files_data">
-		<h2>${_('File')}: ${h.files_breadcrumbs(c.repo_name,c.cur_rev,c.files_list.path)}</h2>
-		%if c.files_list.is_dir():
-        <table class="code-browser">
-            <thead>
-                <tr>
-                    <th class="width-50 lefted">${_('Name')}</th>
-                    <th class="width-10 righted">${_('Size')}</th>
-                    <th class="width-10 righted">${_('Revision')}</th>
-                    <th class="width-15 righted">${_('Last modified')}</th>
-                    <th class="width-15 righted">${_('Last commiter')}</th>
-                </tr>
-            </thead>
-            	<tr>
-            		% if c.files_list.parent:
-	            		<td>
-	            			${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.files_list.parent),class_="browser-dir")}
-	            		</td>
-	            		<td></td>
-	            		<td></td>
-	            		<td></td>
-	            		<td></td>
-            		%endif
-            	</tr>
-					<%def name="file_class(node)">
-						%if node.is_file():
-							<%return "browser-file" %>
-						%else:
-							<%return "browser-dir"%>
-						%endif
-					</%def>
-			
-
-	            %for cnt,node in enumerate(c.files_list):
-					<tr class="parity${cnt%2}">
-	
-	                    <td>
-							${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_=file_class(node))}
-	                    </td>
-	                    <td>
-	                        %if node.is_file():
-	                    		${h.filesizeformat(node.size)}
-	                    	%endif
-	                    </td>
-	                    <td>
-	                    	%if node.is_file():
-	                    		${node.last_changeset.revision}
-	                    	%endif
-	                    </td>
-	                    <td>
-	                    	%if node.is_file():
-	                    		${node.last_changeset.date}
-	                    	%endif
-	                    </td>
-	                    <td>
-	                    	%if node.is_file():
-	                    		${node.last_changeset.author}
-	                    	%endif                    
-	                    	
-	                    </td>
-					</tr>
-				%endfor
-			</table>
-			%else:
-			<table class="info-table">
-				<tr>
-					<td>r70:17ecc1c97401</td>
-					<td>374 loc</td>
-					<td>12.5 KB</td>
-					<td>
-						<a href="/marcinkuzminski/vcs/history/vcs/backends/hg.py">history</a> / 
-						<a href="/marcinkuzminski/vcs/annotate/17ecc1c97401/vcs/backends/hg.py">annotate</a> / 
-						<a href="/marcinkuzminski/vcs/raw/17ecc1c97401/vcs/backends/hg.py">raw</a> / 
-						<form class="source-view-form" method="get" action="/marcinkuzminski/vcs/diff/vcs/backends/hg.py">
-							
-							<input type="hidden" value="17ecc1c97401" name="diff2">
-								<select class="smaller" name="diff1">
-									<option>history</option>							
-								</select>
-								<input type="submit" class="smaller" value="diff">
-							
-						</form>
-					</td>
-				</tr>
-			</table>			
-				<div id="body" class="codeblock">
-				${h.pygmentize(c.files_list.content,linenos=True,anchorlinenos=True,cssclass="code-highlight")}
-				</div>				
-			%endif
-	</div>
-</%def>    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/templates/files/files.html	Mon May 03 21:59:01 2010 +0200
@@ -0,0 +1,38 @@
+<%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('files_home',repo_name=c.repo_name))}
+    /
+    ${_('files')}
+</%def>
+<%def name="page_nav()">
+        <form action="log">
+            <dl class="search">
+                <dt><label>Search: </label></dt>
+                <dd><input type="text" name="rev" /></dd>
+            </dl>
+        </form>
+
+		${self.menu('files')}     
+</%def>
+<%def name="css()">
+<link rel="stylesheet" href="/css/monoblue_custom.css" type="text/css" />
+<link rel="stylesheet" href="/css/pygments.css" type="text/css" />
+</%def>
+<%def name="main()">
+
+    <h2 class="no-link no-border">${_('Files')}</h2>
+	<div id="files_data">
+		<h2>${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cur_rev,c.files_list.path)}</h2>
+			%if c.files_list.is_dir():
+				<%include file='files_browser.html'/>
+			%else:
+				<%include file='files_source.html'/>			
+			%endif
+	</div>
+</%def>    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/templates/files/files_browser.html	Mon May 03 21:59:01 2010 +0200
@@ -0,0 +1,57 @@
+<%def name="file_class(node)">
+	%if node.is_file():
+		<%return "browser-file" %>
+	%else:
+		<%return "browser-dir"%>
+	%endif
+</%def>
+		
+<table class="code-browser">
+         <thead>
+             <tr>
+                 <th class="width-50 lefted">${_('Name')}</th>
+                 <th class="width-10 righted">${_('Size')}</th>
+                 <th class="width-10 righted">${_('Revision')}</th>
+                 <th class="width-15 righted">${_('Last modified')}</th>
+                 <th class="width-15 righted">${_('Last commiter')}</th>
+             </tr>
+         </thead>
+         	<tr>
+         		% if c.files_list.parent:
+          		<td>
+          			${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.files_list.parent),class_="browser-dir")}
+          		</td>
+          		<td></td>
+          		<td></td>
+          		<td></td>
+          		<td></td>
+         		%endif
+         	</tr>
+    %for cnt,node in enumerate(c.files_list):
+		<tr class="parity${cnt%2}">
+             <td>
+				${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_=file_class(node))}
+             </td>
+             <td>
+                %if node.is_file():
+             		${h.filesizeformat(node.size)}
+             	%endif
+             </td>
+             <td>
+             	%if node.is_file():
+             		${node.last_changeset.revision}
+             	%endif
+             </td>
+             <td>
+             	%if node.is_file():
+             		${node.last_changeset.date}
+             	%endif
+             </td>
+             <td>
+             	%if node.is_file():
+             		${node.last_changeset.author}
+             	%endif                    
+             </td>
+		</tr>
+	%endfor
+</table>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/templates/files/files_source.html	Mon May 03 21:59:01 2010 +0200
@@ -0,0 +1,20 @@
+<dl class="overview">
+	<dt>${_('Revision')}</dt>
+	<dd>r${c.files_list.changeset.revision}:${c.files_list.changeset._short}</dd>
+	<dt>${_('Size')}</dt>
+	<dd>${h.filesizeformat(c.files_list.size)}</dd>
+	<dt>${_('Options')}</dt>
+	<dd>history  / annotate  / raw  </dd>
+	<dt>${_('History')}</dt>
+	<dd>
+		${h.form(h.url.current())}
+		${h.hidden('diff2',c.files_list.changeset._short)}
+		${h.select('diff1','',c.file_history)}
+		${h.submit('diff','diff')}
+		${h.end_form()}
+	</dd>
+					
+</dl>		
+<div id="body" class="codeblock">
+	${h.pygmentize(c.files_list.content,linenos=True,anchorlinenos=True,cssclass="code-highlight")}
+</div>
\ No newline at end of file