[Blends-commit] [SCM] website branch, master, updated. 463a251d23006f1d131b5c71f66639b6ddde1580

Ole Streicher olebole at debian.org
Wed Mar 9 20:41:58 UTC 2016


The following commit has been merged in the master branch:
commit 463a251d23006f1d131b5c71f66639b6ddde1580
Author: Ole Streicher <olebole at debian.org>
Date:   Wed Mar 9 21:31:13 2016 +0100

    Merge webtools and webtools_py3 templates

diff --git a/webtools/templates/bugs.xhtml b/webtools/templates/bugs.xhtml
index f68499e..a16b922 100644
--- a/webtools/templates/bugs.xhtml
+++ b/webtools/templates/bugs.xhtml
@@ -108,7 +108,7 @@
                           <span py:otherwise=""><a href="${pkgbug['vcs_browser']}">${vcslocation}</a></span>
 			</span>
                         <span class="bugsmaintainer" id="bugsmaintainer" py:choose="">
-                          <span py:when="pkgbug.has_key('maintainer_email')"><a href="mailto:${pkgbug['maintainer_email']}">${pkgbug['maintainer_name']}</a></span>
+                          <span py:when="'maintainer_email' in pkgbug"><a href="mailto:${pkgbug['maintainer_email']}">${pkgbug['maintainer_name']}</a></span>
                           <span py:otherwise="">unknown maintainer</span>
 			</span>
 		      </div>
@@ -149,7 +149,7 @@
 </tr>
 </table>
 <div class="footnote">
-  <address>${updatetimestamp}</address>
+  <address>Last update: ${timestamp}</address>
 </div>
 </body>
 </html>
diff --git a/webtools/templates/debian-astro_idx.xhtml b/webtools/templates/debian-astro_idx.xhtml
index 4a36a65..5762b0f 100644
--- a/webtools/templates/debian-astro_idx.xhtml
+++ b/webtools/templates/debian-astro_idx.xhtml
@@ -48,31 +48,31 @@
 	<h2>Featured packages</h2>
 	<py:for each="fp_row in [['stellarium', 'glueviz'], ['saods9', 'splash']]">
 	  <div class="line">
-		<py:for each="pkg_name in fp_row">
-		  <div class="col50">
-			<table>
-			  <tr>
-				<td style="border-top-style: none; width:150px;">
-				  <img src="${PackageByName[pkg_name].icon}" alt="" style="width:150px;" />
-				</td>
-				<td style="vertical-align:top; border-top-style: none;">
-				  <p style="margin-bottom:0;">
-					<strong>${PackageByName[pkg_name].pkg.capitalize()}:</strong>
-					<span py:choose="">
-					  <span py:when="PackageByName[pkg_name].desc.has_key(lang)">${PackageByName[pkg_name].desc[lang]['short']}</span>
-					  <span py:otherwise="">${PackageByName[pkg_name].desc['en']['short']}</span>
-					</span>
-					
-				  </p>
-				  <p style="margin-bottom:0;">
-					<a href="${PackageByName[pkg_name].properties['homepage']}">Home page</a>
-					- <a href="tasks/${PackageByName[pkg_name].taskname}#${PackageByName[pkg_name].pkg}">More...</a>
-				  </p>
-				</td>
-			  </tr>
-			</table>
-		  </div>
-		</py:for>
+	    <py:for each="pkg_name in fp_row">
+	      <div class="col50">
+		<table>
+		  <tr>
+		    <td style="border-top-style: none; width:150px;">
+		      <img src="${PackageByName[pkg_name].icon}" alt="" style="width:150px;" />
+		    </td>
+		    <td style="vertical-align:top; border-top-style: none;">
+		      <p style="margin-bottom:0;">
+			<strong>${PackageByName[pkg_name].pkg.capitalize()}:</strong>
+			<span py:choose="">
+			  <span py:when="lang in PackageByName[pkg_name].desc">${PackageByName[pkg_name].desc[lang].get('short', '')}</span>
+			  <span py:otherwise="">${PackageByName[pkg_name].desc['en'].get('short', '')}</span>
+			</span>
+			
+		      </p>
+		      <p style="margin-bottom:0;">
+			<a href="${PackageByName[pkg_name].properties['homepage']}">Home page</a>
+			- <a href="tasks/${PackageByName[pkg_name].taskname}#${PackageByName[pkg_name].pkg}">More...</a>
+		      </p>
+		    </td>
+		  </tr>
+		</table>
+	      </div>
+	    </py:for>
 	  </div>
 	</py:for>
 	
@@ -109,12 +109,12 @@
       <p>${howtosetlang}</p>
       <address>${updatetimestamp}</address>
       <p>
-	The Debian Astro logo was created by
-	<a href="http://www.mariahammerstrom.com">Maria Hammerstrøm</a>
-	and is under the license
-	<a href="http://www.gnu.org/copyleft/lgpl.html">LGPL-3</a> or
-	<a href="http://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a>
-	by your choice.
+       The Debian Astro logo was created by
+       <a href="http://www.mariahammerstrom.com">Maria Hammerstrøm</a>
+       and is under the license
+       <a href="http://www.gnu.org/copyleft/lgpl.html">LGPL-3</a> or
+       <a href="http://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a>
+       by your choice.
       </p>
     </div>
   </body>
diff --git a/webtools/templates/packagelist.xhtml b/webtools/templates/packagelist.xhtml
index 14a1830..c42f9f0 100644
--- a/webtools/templates/packagelist.xhtml
+++ b/webtools/templates/packagelist.xhtml
@@ -43,11 +43,11 @@
       <py:for each="task in taskskeys">
 	<a name="${task}" id="${task}"/>
 	<h2><a href="${task}" name="${task}" id="${task}">${tasks[task].metapkg.PrintedName.capitalize()} - <span py:choose="">
-	<span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['short']}</span>
+	<span py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['short']}</span>
 	<span py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</span>
 	</span></a></h2>
 	<p py:choose="">
-	  <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['long']}</span>
+	  <span py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['long']}</span>
 	  <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}</span>
 	</p>
 	<py:for each="pstatus in dependencies[task]">
@@ -63,7 +63,7 @@
                   </span>
 		  </dt>
 		  <dd><span py:choose="">
-		    <span py:when="project.desc.has_key(lang)">${project.desc[lang]['short']}</span>
+		    <span py:when="lang in project.desc">${project.desc[lang]['short']}</span>
 		    <span py:otherwise="">${project.desc['en']['short']}</span>
 		  </span>
 		  </dd>
diff --git a/webtools/templates/packages.xhtml b/webtools/templates/packages.xhtml
index e84465f..fd2764d 100644
--- a/webtools/templates/packages.xhtml
+++ b/webtools/templates/packages.xhtml
@@ -496,7 +496,7 @@ function show_fulldesc(hash) {
 		      <dt>Enhancements</dt>
 		      <dd>
 			<ul class="desc-inline">
-			  <py:for each="enh in sorted(project.properties['Enhances'].keys())">
+			  <py:for each="enh in sorted(project.properties['Enhances'])">
 			    <li>
 			      <a href="${project.properties['Enhances'][enh]}">${enh}</a>
 			    </li>
diff --git a/webtools/templates/tasks.xhtml b/webtools/templates/tasks.xhtml
index 32dec2f..61963b8 100644
--- a/webtools/templates/tasks.xhtml
+++ b/webtools/templates/tasks.xhtml
@@ -6,7 +6,6 @@
 <head>
 <title>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages</title>
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<meta charset="utf-8" />
 <link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
 </head>
 <body>
@@ -30,11 +29,11 @@
 			<div class="row">
 				<div class="pkgname">${tasks[task].metapkg.PrintedName.capitalize()}</div>
 				<div class="pkgdesc" py:choose="">
-				  <div py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['short']}</div>
+				  <div py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['short']}</div>
 				  <div py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</div>
 				</div>
 				<p><span py:choose="">
-	           <span py:when="tasks[task].metapkg.desc.has_key(lang)">${tasks[task].metapkg.desc[lang]['long']}
+	           <span py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['long']}
                      <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.pkg}">${fixtranslation}</a></div>
                    </span>
 	           <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}
@@ -81,10 +80,10 @@
 	   <td class="project-name">
 	     <a name="${project.pkg}" id="${project.pkg}"/>
 	     <div class="pkgname">${project.pkg.capitalize()}
-	       <span class="wnpp" py:if="project.properties.has_key('wnpp')"> - <a href="http://bugs.debian.org/${project.properties['wnpp']}">wnpp</a></span>
+	       <span class="wnpp" py:if="'wnpp' in project.properties"> - <a href="http://bugs.debian.org/${project.properties['wnpp']}">wnpp</a></span>
 	     </div>
 	     <div class="pkgdesc" py:choose="">
-	           <div py:when="project.desc.has_key(lang)">${project.desc[lang]['short']}</div>
+	           <div py:when="lang in project.desc">${project.desc[lang]['short']}</div>
 	           <div py:otherwise="">${project.desc['en']['short']}</div>
 	     </div>
 	     <div py:choose="project.properties['homepage']">
@@ -92,7 +91,7 @@
                 <span py:otherwise=""><a href="${project.properties['homepage']}">${project.properties['homepage']}</a></span>
              </div>
 	     <div py:if="project.responsible != None">${maintainer[pstatus]}:
-               ${project.responsible} <span py:if="project.properties.has_key('changed_by')">(${project.properties['changed_by']})</span>
+               ${project.responsible} <span py:if="'changed_by' in project.properties">(${project.properties['changed_by']})</span>
              </div>
 	   </td>
 	   <td py:if="project.component and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'" class="project-info">
@@ -139,23 +138,23 @@
              </div>
 	     <div py:if="project.properties['vcs-browser'] != '#'">
 	       <span py:choose="">
-		 <span py:when="project.properties.has_key('vcs-url')"><a href="${project.properties['vcs-browser']}" title="${project.properties['vcs-url']}">${project.properties['vcs-type']}</a></span>
+		 <span py:when="'vcs-url' in project.properties"><a href="${project.properties['vcs-browser']}" title="${project.properties['vcs-url']}">${project.properties['vcs-type']}</a></span>
 		 <span py:otherwise=""><a href="${project.properties['vcs-browser']}">${project.properties['vcs-type']}</a></span>
 	       </span>
 	     </div>
             <div py:if="lang != 'en' and project.component == 'main' and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'">
 	       <div py:choose="">
-	           <div class="trans" py:when="project.desc.has_key(lang)"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">${fixtranslation}</a></div>
+	           <div class="trans" py:when="lang in project.desc"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">${fixtranslation}</a></div>
 	           <div class="trans-missing" py:otherwise=""><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.pkg}">${translatedesc}</a></div>
                </div>
             </div>
-            <div class="language" py:if="project.properties.has_key('language') and project.component != 'main'">Language: ${project.properties['language']}</div>
+            <div class="language" py:if="'language' in project.properties and project.component != 'main'">Language: ${project.properties['language']}</div>
             <div py:if="project.version != [] and (project.pkgstatus == 'new' or project.pkgstatus == 'pkgvcs')">Version: ${project.version[0]}</div>
            </td>
          </tr>
          <tr>
            <td colspan="2" class="project-description"><span py:choose="">
-	           <span py:when="project.desc.has_key(lang)">${project.desc[lang]['long']}</span>
+	           <span py:when="lang in project.desc">${project.desc[lang]['long']}</span>
 	           <span py:otherwise="">${project.desc['en']['long']}</span>
 	         </span>
 	     <div class="enhanced-by" py:if="project.properties['Enhances'] != {}">
@@ -163,37 +162,37 @@
 		 <a href="${project.properties['Enhances'][enh]}">${enh}</a>
 	       </py:for>
 	     </div>
-	     <div class="registration" py:if="project.properties.has_key('registration')">
+	     <div class="registration" py:if="'registration' in project.properties">
 	       <span class="registrationlink" >Please register by following <a
 	       href="${project.properties['registration']}">this link</a></span> if you are using ${project.pkg}.
 	     </div>
 	     <div class="published"
-	     py:if="project.properties.has_key('published')">Please cite:
-	       <span class="authors" py:if="project.properties['published'].has_key('authors')">${project.properties['published']['authors']}:</span>
+	     py:if="'published' in project.properties">Please cite:
+	       <span class="authors" py:if="'authors' in project.properties['published']">${project.properties['published']['authors']}:</span>
 	       <span py:choose="">
-		 <span py:when="project.properties['published'].has_key('url')">
+		 <span py:when="'url' in project.properties['published']">
 		   <span py:choose="">
                      <span class="title"
-			   py:when="project.properties['published'].has_key('title')"><a href="${project.properties['published']['url']}">${project.properties['published']['title']}.</a></span>
+			   py:when="'title' in project.properties['published']"><a href="${project.properties['published']['url']}">${project.properties['published']['title']}.</a></span>
 		     <span py:otherwise=""><a href="${project.properties['published']['url']}">Link
 			 to publication</a></span>
 		   </span>
 		 </span>
-		 <span py:when="project.properties['published'].has_key('doi')">
+		 <span py:when="'doi' in project.properties['published']">
 		   <span py:choose="">
                      <span class="title"
-			   py:when="project.properties['published'].has_key('title')"><a href="http://dx.doi.org/${project.properties['published']['doi']}">${project.properties['published']['title']}.</a></span>
+			   py:when="'title' in project.properties['published']"><a href="http://dx.doi.org/${project.properties['published']['doi']}">${project.properties['published']['title']}.</a></span>
 		     <span py:otherwise=""><a href="http://dx.doi.org/${project.properties['published']['doi']}">Link
 			 to publication</a></span>
 		   </span>
 		 </span>
-		 <span py:otherwise=""><span class="title" py:if="project.properties['published'].has_key('title')">${project.properties['published']['title']}</span>
+		 <span py:otherwise=""><span class="title" py:if="'title' in project.properties['published']">${project.properties['published']['title']}</span>
 		 </span>
 	       </span>
-               <span py:if="project.properties['published'].has_key('pubmed')">(<a href="http://www.ncbi.nlm.nih.gov/pubmed/${project.properties['published']['pubmed']}">PubMed</a></span><span py:if="project.properties['published'].has_key('pubmed') and project.properties['published'].has_key('eprint')">,</span><span py:if="not project.properties['published'].has_key('pubmed') and project.properties['published'].has_key('eprint')">(</span><span py:if="project.properties['published'].has_key('eprint')"><a href="${project.properties['published']['eprint']}">eprint</a></span><span py:if="project.properties['published'].has_key('pubmed') or project.properties['published'].has_key('eprint')">)</span>
-	       <span class="journal" py:if="project.properties['published'].has_key('journal')">${project.properties['published']['journal']}</span>
-	       <span class="journal" py:if="project.properties['published'].has_key('volume')">${project.properties['published']['volume']}</span><span class="journal" py:if="project.properties['published'].has_key('number')">(${project.properties['published']['number']})</span><span class="journal" py:if="project.properties['published'].has_key('pages')">:${project.properties['published']['pages']}</span>
-	       <span class="year" py:if="project.properties['published'].has_key('year')">(${project.properties['published']['year']})</span>
+               <span py:if="'pubmed' in project.properties['published']">(<a href="http://www.ncbi.nlm.nih.gov/pubmed/${project.properties['published']['pubmed']}">PubMed</a></span><span py:if="'pubmed' in project.properties['published'] and 'eprint' in project.properties['published']">,</span><span py:if="'pubmed' not in project.properties['published'] and 'eprint' in project.properties['published']">(</span><span py:if="'eprint' in project.properties['published']"><a href="${project.properties['published']['eprint']}">eprint</a></span><span py:if="'pubmed' in project.properties['published'] or 'eprint' in project.properties['published']">)</span>
+	       <span class="journal" py:if="'journal' in project.properties['published']">${project.properties['published']['journal']}</span>
+	       <span class="journal" py:if="'volume' in project.properties['published']">${project.properties['published']['volume']}</span><span class="journal" py:if="'number' in project.properties['published']">(${project.properties['published']['number']})</span><span class="journal" py:if="'pages' in project.properties['published']">:${project.properties['published']['pages']}</span>
+	       <span class="year" py:if="'year' in project.properties['published']">(${project.properties['published']['year']})</span>
 	     </div>
 	   </td>
 	   <td py:if="project.component and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'" class="project-icon">
diff --git a/webtools/templates/tasks_idx.xhtml b/webtools/templates/tasks_idx.xhtml
index 5f85b54..5c63e98 100644
--- a/webtools/templates/tasks_idx.xhtml
+++ b/webtools/templates/tasks_idx.xhtml
@@ -81,7 +81,7 @@ table {
 	      </td>
 	      <td>
 		<span py:choose="">
-	          <span py:when="tasks[task].metapkg.desc.has_key(lang)">
+	          <span py:when="lang in tasks[task].metapkg.desc">
 		    ${tasks[task].metapkg.desc[lang]['short']}
 		  </span>
 	          <span py:otherwise="">
diff --git a/webtools_py3/templates b/webtools_py3/templates
new file mode 120000
index 0000000..9a5f02f
--- /dev/null
+++ b/webtools_py3/templates
@@ -0,0 +1 @@
+../webtools/templates
\ No newline at end of file
diff --git a/webtools_py3/templates/bugs.xhtml b/webtools_py3/templates/bugs.xhtml
deleted file mode 100644
index a16b922..0000000
--- a/webtools_py3/templates/bugs.xhtml
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-<head>
-<title>$projectname ${bugs_data[task]['title'].capitalize()} bugs</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
-</head>
-<body>
-<div style="text-align: center;">
-<a href="$projecturl"><span py:choose="logourl">
-	           <span py:when="None">${projectname} Project</span>
-	           <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
-                 </span>
-</a>
-</div>
-<div class="heading" py:if="projectadvertising">
-	<div class="tabBar" style="text-align: center;">$projectadvertising</div>
-</div>
-<table class="columns">
-<tr>
-	<td class="left">
-		<span class="section">Summary</span>
-		<div class="section">
-			<div class="sectionTop"/>
-			<div class="row">
-                            $bugsoftask
-			    <strong>${task}</strong>
-                        </div>
-			<div class="row">
-			    $totalbugs:
-			    <strong>${bugs_data[task]['nopenbugs']+bugs_data[task]['ndonebugs']}</strong>
-                        </div>
-			<div class="row">
-			    $openbugs:
-			    <strong>${bugs_data[task]['nopenbugs']}</strong>
-                        </div>
-			<div class="row">
-			    Fixed bugs:
-			    <strong>${bugs_data[task]['ndonebugs']}</strong>
-                        </div>
-		</div>
-
-		<span class="section">${othertasks}</span>
-		<div class="section">
-			<div class="sectionTop"/>
-			<div class="row">
-                            <div class="link"><a href="index.html">${bugslink}</a></div>
-                          <py:for each="t in sorted(bugs_data.iterkeys())">
-                            <div py:choose="t">
-                              <span py:when="task"
-                              class="curlink"><a href="${t}.html">${bugs_data[t]['title'].capitalize()}</a> ${bugs_data[t]['nopenbugs']} (${bugs_data[t]['weighttask']})</span>
-                              <span py:otherwise="" class="link ${bugs_data[t]['weightedclass']}"><a href="${t}.html">${bugs_data[t]['title'].capitalize()}</a> ${bugs_data[t]['nopenbugs']} (${bugs_data[t]['weighttask']})</span>
-                            </div>
-                          </py:for>
-                        </div>
-		</div>
-
-		<span class="section">${legend}</span>
-		<div class="section">
-		  <div class="sectionTop"/>
-		  <div class="row">
-		    <table>
-		      <tr><th>Severity</th><th>Dependent</th><th>Suggested</th></tr>
-                      <py:for each="s in severities">
-                        <tr>
-			  <td class="severity ${s}">${s}</td>
-			  <td class="bugid ${s}">${bugs_data[task]['depends']['severities'][s]}</td>
-			  <td class="bugid ${s}">${bugs_data[task]['suggests']['severities'][s]}</td>
-			</tr>
-                      </py:for>
-		    </table>
-                  </div>
-		</div>
-	</td>
-	<td class="main">
-		<div class="pageBody">
-
-<h1>Summary bugs page of task ${bugs_data[task]['title'].capitalize()}</h1>
-
-<div class="severitysummary">${bugs_data[task]['weightedsev']}<sup>*</sup></div>
-
-<span py:choose="">
-  <span py:when="bugs_data[task]['nopenbugs']+bugs_data[task]['ndonebugs'] != 0">
-    <py:for each="status in states">
-      <span py:choose="">
-	<span py:when="bugs_data[task][status] != {}">
-	  <h2>${headings[category[status]]}</h2>
-            <div class="severitylist" py:if="status != 'done' and bugs_data[task][status]['severitysummary'] != ''">
-                ${bugs_data[task][status]['severitysummary']}
-	    </div>
-	  <table class="${cssclass[category[status]]}">
-	    <py:for each="pkgbug in bugs_data[task][status]['sources']">
-	      <span py:if="len(pkgbug['bugs']) > 0">
-		<tr>
-		  <td class="bugid" colspan="3">
-		    <div class="bugsheadertable">
-		      <div class="bugsheadertr">
-			<span class="bugsheaderpackagetd" id="bugsheaderpackagetd"><a href="http://packages.qa.debian.org/${pkgbug['source'][0]}/${pkgbug['source']}.html">${pkgbug['source']}</a> (${len(pkgbug['bugs'])})</span>
-                        <span class="bugsheaderhomepagetd" id="bugsheaderhomepagetd" py:choose="pkgbug['homepage']">
-                          <span py:when="'#'">${nohomepage}</span>
-                          <span py:otherwise=""><a href="${pkgbug['homepage']}">Homepage: ${pkgbug['homepage']}</a></span>
-			</span>
-                        <span class="bugvcsbrowser" id="bugvcsbrowser" py:choose="pkgbug['vcs_browser']">
-                          <span py:when="'#'">${novcsbrowser}</span>
-                          <span py:otherwise=""><a href="${pkgbug['vcs_browser']}">${vcslocation}</a></span>
-			</span>
-                        <span class="bugsmaintainer" id="bugsmaintainer" py:choose="">
-                          <span py:when="'maintainer_email' in pkgbug"><a href="mailto:${pkgbug['maintainer_email']}">${pkgbug['maintainer_name']}</a></span>
-                          <span py:otherwise="">unknown maintainer</span>
-			</span>
-		      </div>
-                    </div>
-		  </td>
-		</tr>
-		<py:for each="bug in pkgbug['bugs']">
-		  <tr>
-		    <td class="bugid ${bug['severity']}"><a href="http://bugs.debian.org/${bug['id']}">${bug['id']}</a></td>
-		    <td class="summary ${bug['severity']}">${bug['title']}</td>
-		    <td class="severity ${bug['severity']}">${bug['tags']}</td>
-		  </tr>
-		</py:for>
-	      </span>
-	    </py:for>
-	  </table>
-	</span>
-	<span py:otherwise=""><h2>${nobugs[cat]}</h2></span>
-      </span>
-    </py:for>
-   </span>
-  <span py:otherwise=""><h2>$projectname
-  ${bugs_data[task]['title'].capitalize()} has no known nbugs = ${bugs_data[task]['nopenbugs']} ndone = ${bugs_data[task]['ndonebugs']}</h2></span>
-</span>
-<div class="footnotecontent">
-  <sup>*</sup>${weightexplanation}
-  <br />
-  ${weightdetails}:
-  <br />
-  <table class="footnotecontent">
-    <py:for each="s in severities">
-      <tr><td class="footnotecontent">${s}</td><td class="footnotecontent">${weight[s]}</td></tr>
-    </py:for>
-  </table>
-</div>
-		</div>
-	</td>
-</tr>
-</table>
-<div class="footnote">
-  <address>Last update: ${timestamp}</address>
-</div>
-</body>
-</html>
diff --git a/webtools_py3/templates/bugs_idx.xhtml b/webtools_py3/templates/bugs_idx.xhtml
deleted file mode 100644
index d9b3977..0000000
--- a/webtools_py3/templates/bugs_idx.xhtml
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-<head>
-<title>$projectname bugs</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
-</head>
-<body>
-<div style="text-align: center;">
-<a href="$projecturl"><span py:choose="logourl">
-	           <span py:when="None">${projectname} Project</span>
-	           <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
-                 </span>
-</a>
-</div>
-<div class="heading" py:if="projectadvertising">
-	<div class="tabBar" style="text-align: center;">$projectadvertising</div>
-</div>
-<table class="columns">
-<tr>
-	<td class="left">
-		<span class="section">$summary</span>
-		<div class="section">
-			<div class="sectionTop"></div>
-			<div class="row">${bugssummary}</div>
-		</div>
-		<span class="section">${legend}</span>
-		<div class="section">
-		  <div class="sectionTop"/>
-		  <div class="row">
-		    <table>
-		      <tr><th>Assessment</th><th>Limit</th></tr>
-                      <py:for each="a in assessments">
-                        <tr>
-			  <td class="${a[1]}">${a[1]}</td>
-			  <td class="${a[1]}">${a[0]}</td>
-			</tr>
-                      </py:for>
-		    </table>
-                  </div>
-		</div>
-	</td>
-	<td class="main">
-		<div class="pageBody">
-			<h1>$gtstrBugsPage</h1>
-			<p>$gtstrListOfBugspages</p>
-			<dl>
-                             <py:for each="task in sorted(bugs_data.iterkeys())">
-                                <dt class="${bugs_data[task]['weightedclass']}"><a href="${task}.html" name="${task}" id="${task}">${bugs_data[task]['title'].capitalize()} - ${bugs_data[task]['description']}</a> (${bugs_data[task]['weighttask']}<sup>*</sup>)</dt>
-				<dd>${bugs_data[task]['long_description']}</dd>
-                             </py:for>
-			</dl>
-<div class="footnotecontent">
-  <sup>*</sup>${weightexplanation}
-  <br />
-  ${weightdetails}:
-  <br />
-  <table class="footnotecontent">
-    <py:for each="s in severities">
-      <tr><td class="footnotecontent">${s}</td><td class="footnotecontent">${weight[s]}</td></tr>
-    </py:for>
-  </table>
-</div>
-		</div>
-	</td>
-</tr>
-</table>
-<div id="footer">
-  <address>${updatetimestamp}</address>
-</div>
-</body>
-</html>
diff --git a/webtools_py3/templates/debian-astro_idx.xhtml b/webtools_py3/templates/debian-astro_idx.xhtml
deleted file mode 100644
index cefd69b..0000000
--- a/webtools_py3/templates/debian-astro_idx.xhtml
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-  <head>
-    <title>$projectname Pure Blend</title>
-    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-    <meta name="robots" content="noindex" />
-    <link href="http://blends.debian.org/css/debhandheld.css" media="screen" rel="stylesheet" type="text/css" />
-    <link href="http://blends.debian.org//css/debian.css" rel="stylesheet" type="text/css" />
-    <link href="http://blends.debian.org//css/blends.css" rel="stylesheet" type="text/css" />
-    <link rel="shortcut icon" href="http://www.debian.org/favicon.ico" />
-  </head>
-  <body>
-    <div id="header">
-      <div id="upperheader">
-	<div id="logo">
-	  <a href="http://www.debian.org/" title="Debian Home">
-	    <img src= "http://www.debian.org/Pics/openlogo-50.png"
-			 alt="Debian" width="50" height= "61" /></a>
-	  </div>
-	  <p class="section">Pure Blend</p>
-	</div>
-	<div id="navbar">
-	  <ul> 
-	    <li><a href="index.html">$projectname</a></li>
-	    <li><a href="tasks">Packages</a></li>
-	    <li><a href="contact.html">Contact</a></li>
-	    <li><a href="contribute.html">Contribute</a></li>
-	  </ul>
-	</div>
-	<p id="breadcrumbs">
-	  <a href="http://blends.debian.org">Debian Pure Blends</a>
-	  / $projectname
-	</p>
-      </div><!-- end header -->
-      <div id="content">
-	<div id="splash">
-	  <h1 id="astro">$projectname</h1>
-	</div>
-	<p>
-	  $projectname is a "Debian Pure Blend" with the aim to develop a
-	  Debian based operating system that fits the requirements of both
-	  professional and hobby astronomers. It integrates a large number of
-	  <a href="tasks">software packages</a> covering telescope control,
-	  data reduction, presentation and other fields.
-	</p>
-
-	<h2>Featured packages</h2>
-	<py:for each="fp_row in [['stellarium', 'glueviz'], ['saods9', 'splash']]">
-	  <div class="line">
-	    <py:for each="pkg_name in fp_row">
-	      <div class="col50">
-		<table>
-		  <tr>
-		    <td style="border-top-style: none; width:150px;">
-		      <img src="${PackageByName[pkg_name].icon}" alt="" style="width:150px;" />
-		    </td>
-		    <td style="vertical-align:top; border-top-style: none;">
-		      <p style="margin-bottom:0;">
-			<strong>${PackageByName[pkg_name].pkg.capitalize()}:</strong>
-			<span py:choose="">
-			  <span py:when="lang in PackageByName[pkg_name].desc">${PackageByName[pkg_name].desc[lang]['short']}</span>
-			  <span py:otherwise="">${PackageByName[pkg_name].desc['en']['short']}</span>
-			</span>
-			
-		      </p>
-		      <p style="margin-bottom:0;">
-			<a href="${PackageByName[pkg_name].properties['homepage']}">Home page</a>
-			- <a href="tasks/${PackageByName[pkg_name].taskname}#${PackageByName[pkg_name].pkg}">More...</a>
-		      </p>
-		    </td>
-		  </tr>
-		</table>
-	      </div>
-	    </py:for>
-	  </div>
-	</py:for>
-	
-	<h2>Installation</h2>
-	<p>
-	  On an existing Debian Stretch installation, you can get the
-	  $projectname Pure Blend just by installing
-	  its <a href="tasks">metapackages</a>.  During
-	  the installation on a new system, this will be possible
-	  during the installation process.
-	</p>
-	<p>
-	  If you're new to Debian and you'd like to try the $projectname
-	  Pure Blend without installing it on your computer, or if you'd like
-	  to perform a fresh installation of Debian with all the astronomy
-	  software ready-to-go, you might find the live images useful. Images
-	  will be produced that can be run from DVDs or USB sticks on both 32-bit
-	  and 64-bit Intel architectures.
-	</p>
-	<p>
-	  <strong>Note:</strong> $projectname is not available under Debian
-	  Jessie. Our plan is to deliver the first version together with
-	  Debian Stretch.
-	</p>
-    </div>
-    <div id="footer">
-      <hr class="hidecss" />
-      <p>This page is also available in the following languages:</p>
-      <py:for each="l in languages">
-	<span py:if="lang != l" class="navpara">
-	  <a href="index.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
-	</span>
-      </py:for>
-      <p>
-	How to set
-	<a href="http://www.debian.org/intro/cn.${lang}.html">
-	  the default document language
-	</a>
-      </p>
-      <address>Last update: ${timestamp}</address>
-    </div>
-  </body>
-</html>
diff --git a/webtools_py3/templates/debian2ubuntu-termometer.sh b/webtools_py3/templates/debian2ubuntu-termometer.sh
deleted file mode 100755
index b2d084d..0000000
--- a/webtools_py3/templates/debian2ubuntu-termometer.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-sed \
-    -e 's%\(<title>$projectname\)\( Thermometer</title>\)%\1 packages in Ubuntu\2%' \
-    -e 's%\(<caption><h3>$projectname \)Package\( Thermometer</h3></caption>\)%\1 packages in Ubuntu\2%' \
-    -e 's%\(<th>stable</th><th>testing</th><th>unstable</th><th>stable-bpo</th>\)<th>experimental</th><th>UNRELEASED</th>%\1<th>precise</th><th>quantal</th><th>raring</th>%' \
-    -e 's%''${pkg.debianstatus}''%''${pkg.ubuntustatus}''%' \
-    -e 's%\(<td>${pkg.stable}</td><td>${pkg.testing}</td><td>${pkg.unstable}</td><td>${pkg.stable_bpo}</td>\)<td>${pkg.experimental}</td><td>${pkg.UNRELEASED}</td>%\1<td>${pkg.precise}</td><td>${pkg.quantal}</td><td>${pkg.raring}</td>%' \
-    -e 's%\(<div class="link"><a href=".\)u\(thermometer">\)Ubuntu\( Thermometer</a></div>\)%\1\2Debian\3%' \
-    thermometer.xhtml > uthermometer.xhtml
diff --git a/webtools_py3/templates/packagelist.xhtml b/webtools_py3/templates/packagelist.xhtml
deleted file mode 100644
index d184ebc..0000000
--- a/webtools_py3/templates/packagelist.xhtml
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-<head>
-<title>$projectname complete packagelist</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
-</head>
-<body>
-<div style="text-align: center;">
-<a href="$projecturl"><span py:choose="logourl">
-	           <span py:when="None">${projectname} Project</span>
-	           <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
-                 </span>
-</a>
-</div>
-<div class="heading" py:if="projectadvertising">
-	<div class="tabBar" style="text-align: center;">$projectadvertising</div>
-</div>
-<table class="columns">
-<tr>
-  <td class="left">
-    <span class="section">Summary</span>
-    <div class="section">
-      <div class="sectionTop"></div>
-      <div class="row">	The ${projectname} Pure Blend contains ${pkgcount} packages
-	which are grouped by metapackages. Each metapackage will cause
-	the installation of packages for a specific topic. The
-	following table lists the packages of ${projectname}.</div>
-    </div>
-  </td>
-  <td class="main">
-    <div class="pageBody">
-      <h1>Tasks page</h1>
-      <p>This list of the Tasks ${projectname} is made of:</p>
-      <h2>Table of contents</h2>
-      <ul>
-	<py:for each="task in taskskeys">
-	  <li><a href="#${task}">${tasks[task].metapkg.PrintedName.capitalize()}</a></li>
-	</py:for>
-      </ul>
-
-      <py:for each="task in taskskeys">
-	<a name="${task}" id="${task}"/>
-	<h2><a href="${task}" name="${task}" id="${task}">${tasks[task].metapkg.PrintedName.capitalize()} - <span py:choose="">
-	<span py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['short']}</span>
-	<span py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</span>
-	</span></a></h2>
-	<p py:choose="">
-	  <span py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['long']}</span>
-	  <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}</span>
-	</p>
-	<py:for each="pstatus in dependencies[task]">
-	  <h3>${headline[pstatus]}</h3>
-	  <dl>
-	  <py:for each="project in projects[task][pstatus]">
-		  <dt><span py:choose="project.properties['homepage']">
-		    <span py:when="'#'">${project.pkg.capitalize()}</span>
-		    <span py:otherwise=""><a href="${project.properties['homepage']}">${project.pkg.capitalize()}</a></span>
-		  </span>
-                  <span py:choose="">
-		    <span py:when="len(project.properties['stable_testing_version'])>0">(<py:for each="version in project.properties['stable_testing_version']">${version[3]} <a href="http://packages.debian.org/${version[0]}/${project.pkg}">${version[2]}</a></py:for>)</span>
-                  </span>
-		  </dt>
-		  <dd><span py:choose="">
-		    <span py:when="lang in project.desc">${project.desc[lang]['short']}</span>
-		    <span py:otherwise="">${project.desc['en']['short']}</span>
-		  </span>
-		  </dd>
-	    </py:for>
-	  </dl>
-	</py:for>
-      </py:for>
-    </div>
-  </td>
-</tr>
-</table>
-<div id="footer">
-  <hr class="hidecss" />
-<p>This page is also available in the following languages:</p>
-<py:for each="l in languages">
-  <span py:if="lang != l" class="navpara">
-    <a href="packagelist.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
-  </span>
-</py:for>
-<p>How to set <a href="http://www.debian.org/intro/cn.${lang}.html">the default document language</a></p>
-<address>Last update: ${timestamp}</address>
-</div>
-</body>
-</html>
diff --git a/webtools_py3/templates/packages.xhtml b/webtools_py3/templates/packages.xhtml
deleted file mode 100644
index dd244e0..0000000
--- a/webtools_py3/templates/packages.xhtml
+++ /dev/null
@@ -1,613 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-  <head>
-      <title>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages</title>
-    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-    <link href="http://www.debian.org/debhandheld.css" media="screen"
-	  rel="stylesheet" type="text/css" />
-    <link href="http://www.debian.org/debian.css" rel="stylesheet"
-	  type="text/css" />
-    <link href="http://blends.debian.org/css/blends.css" rel="stylesheet"
-	  type="text/css" />
-    <style type="text/css">
-/* <!-- */
-
-a.tooltip:hover {
-    cursor:pointer;
-}
-a.tooltip span {
-    z-index:10;
-    display:none;
-    padding:14px 20px;
-    margin-top:-30px;
-    margin-left:28px;
-    line-height:16px;
-    border-radius:4px;
-    box-shadow: 5px 5px 8px #CCC;
-}
-a.tooltip:hover span{
-    display:inline;
-    position:absolute;
-    color:#111;
-    border:1px solid #DCA;
-    background:#fffAF0;
-}
-.centered {
-  position: fixed !important;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-}
-
-table {
-    padding-bottom: 1.5em;
-}
-
-tr:first-child td.fullwidth {
-   border-top-style: none;
-}
-
-.pkgdesc-full {
-    background-image: none !important;// overwrite "splash" id setting for "splash" package in debian-astro
-}
-.pkgdesc-full td {
-    border-top-style: none;
-}
-.pkgdesc-full h3 {
-    margin: 1em;
-}
-dl.pkgdesc > dd p,ol,ul,pre {
-    margin-top:0;
-    margin-bottom: 0;
-    padding-bottom: 0.5em;
-}
-dl.pkgdesc > dt {
-    float: left;
-    font-weight: bold;
-    margin-top: 0;
-    margin-bottom: 0;
-    margin-left: 1em;
-    margin-right: 0;
-    padding-top: 0.5em;
-    width: 150px;
-}
-dl.pkgdesc > dt:after {
-    content: ':';
-}
-dl.pkgdesc > dt.screenshot:after {
-    content: '';
-}
-dl.pkgdesc > dt.screenshot img {
-    width: 100%;
-}
-
-dl.pkgdesc > dd {
-    margin-left: 2em;
-    padding-left: 150px;
-    padding-bottom: 0.5em;
-    padding-top: 0.5em;
-}
-dl.pkgdesc > dd::after {
-    clear: left;
-    content: '';
-    display: block;
-}
-.pkgdesc-short td:not(:last-child) {
-    width: 1px;
-    white-space: nowrap;
-}
-.pkgdesc-short td:first-child {
-    padding-left: 0.4em;
-    padding-right: 0;
-}
-a:hover:not(:link):not(:visited) {
-    color: grey;
-}
-tr.alternate-color {
-    background-color: #eee;
-}
-ul.desc-inline {
-    padding: 0;
-    margin: 0;
-    display: inline;
-}
-ul.desc-inline li {
-    display: inline;
-}
-
-ul.desc-inline li + li::before {
-    content: ' \2022\20';
-}
-dl.debtags {
-    padding: 0;
-    margin: 0;
-}
-dl.debtags dt, dl.debtags dd {
-    display: inline;
-    font-weight: normal;
-    margin: 0;
-}
-dl.debtags dt {
-    text-transform: capitalize;
-}
-dl.debtags dd + dt::before {
-    content: ' \2022\20';
-}
-dl.debtags dt:after {
-    content: ': ';
-}
-a.editlink {
-    float: left;
-    position: relative;
-    text-decoration: none;
-    padding-right: 0.5em;
-}
-/* --> */
-    </style>
-    <link rel="shortcut icon" href="http://www.debian.org/favicon.ico" />
-    <script type="text/javascript">
-/* <!-- */
-function toggle_visibility(id) {
-    var element = document.getElementById(id);
-    if (element) {
-        if (element.style.display == "none") {
-            element.style.display = "";
-        } else {
-            element.style.display = "none";
-        }
-    }
-}
-function show_fulldesc(hash) {
-    var full = document.getElementsByClassName("pkgdesc-full");
-    var l = full.length;
-    for (var i = 0; i < l; i++) {
-      if ((hash == "#all") | (hash == "#" + full[i].id)) {
-          full[i].style.display = "";
-      } else {
-        full[i].style.display = "none";
-      }
-    }
-}
-/* --> */
-  </script>
-  </head>
-  <body onload="show_fulldesc(window.location.hash)">
-    <div id="header">
-      <div id="upperheader">
-	<div id="logo">
-	  <a href="http://www.debian.org/" title="Debian Home">
-	    <img src= "http://www.debian.org/Pics/openlogo-50.png"
-		 alt="Debian" width="50" height= "61" /></a>
-	  </div>
-	  <p class="section">Pure Blend</p>
-	</div>
-	<div id="navbar">
-	  <ul>
-	    <li><a href="$projecturl">$projectname</a></li>
-	    <li><a href="../tasks">Packages</a></li>
-	    <li><a href="../contact.html">Contact</a></li>
-	    <li><a href="../contribute.html">Contribute</a></li>
-	  </ul>
-	</div>
-	<p id="breadcrumbs">
-	  <a href="http://blends.debian.org">Debian Pure Blends</a>
-	  / <a href="$projecturl">$projectname</a>
-	  / <a href="../tasks">Packages</a>
-	  / ${tasks[task].metapkg.PrintedName.capitalize()}
-	</p>
-      </div><!-- end header -->
-      <div id="content">
-	<small><p>
-	  <ul class="desc-inline">
-	    <li><a href="#all" onclick="show_fulldesc('#all');">Show all details</a></li>
-	    <li><a href="#" onclick="show_fulldesc('#');">Hide all details</a></li>
-	  </ul>
-	</p></small>
-	<h1>
-	  $projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages
-	</h1>
-	<em>
-	  <py:choose>
-	    <py:when test="lang in tasks[task].metapkg.desc">
-	      ${tasks[task].metapkg.desc[lang]['short']}
-	    </py:when>
-	    <py:otherwise>
-	      ${tasks[task].metapkg.desc['en']['short']}
-	    </py:otherwise>
-	  </py:choose>
-	</em>
-	<py:choose>
-	  <py:when test="lang in tasks[task].metapkg.desc">
-	    <a class="editlink" title="Fix translated description" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.pkg}" py:if="lang != 'en'">
-	      ✏
-	    </a>
-	    ${tasks[task].metapkg.desc[lang]['long']}
-	  </py:when>
-	  <py:otherwise>
-	    <a class="editlink" title="Translate description" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.pkg}" py:if="lang != 'en'">
-	      ✏
-	    </a>
-	    ${tasks[task].metapkg.desc['en']['long']}
-	  </py:otherwise>
-	</py:choose>
-	<table width="90%">
-	  <py:for each="pstatus in dependencies[task]">
-	    <tr>
-	      <td colspan="4" class="fullwidth">
-		<h2>
-		  <a id="${pstatus}-debs" name="${pstatus}-debs"/>
-		  ${headline[pstatus]}
-		</h2>
-	      </td>
-	    </tr>
-	    <tr class="header">
-	      <th></th>
-	      <th>Package</th>
-	      <th>Version</th>
-	      <th>Description</th>
-	    </tr>
-	    <py:for each="line, project in enumerate(projects[task][pstatus])">
-	      <tr id="${project.pkg}.short"
-		  class="pkgdesc-short ${'alternate-color' if line % 2 == 1
-			 else ''}">
-		<td>
-		  <a onclick="toggle_visibility('${project.pkg}');"
-		     style="cursor:pointer;" title="Click to toggle details">
-		    ▾
-		  </a>
-		</td>
-		<td style="text-transform:capitalize;">
-		  <a onclick="toggle_visibility('${project.pkg}');"
-		     style="cursor:pointer;" title="Click to toggle details">
-		    ${project.pkg}
-		  </a>
-		</td>
-		<td>
-		  <py:if test="project.version">
-		    <py:choose>
-		      <py:when test="isinstance(project.version[-1], str)">
-			${project.version[-1]}
-		      </py:when>
-		      <py:otherwise>
-			<a href="http://packages.debian.org/${project.version[-1]['release']}/${project.pkg}"
-			   title="Version ${project.version[-1]['version']} in ${project.version[-1]['release']}">
-			  ${project.version[-1]['version']}
-			</a>
-		      </py:otherwise>
-		    </py:choose>
-		  </py:if>
-		  <py:if test="project.outdated">
-		    <a class="tooltip">
-		      ↺
-		      <span>
-			New upstream version
-			<strong>${project.outdated['version']}</strong>
-			available
-		      </span>
-		    </a>
-		  </py:if>
-		  <py:if test="False">
-		    <a class="tooltip">
-		      ☠
-		      <span>XXX release critical bugs</span>
-		    </a>
-		  </py:if>
-		  <py:if test="False"> <!-- CI failures -->
-		    <a class="tooltip">
-		      ☹
-		      <span>CI test failure</span>
-		    </a>
-		  </py:if>
-		</td>
-		<td>
-		  <a onclick="toggle_visibility('${project.pkg}');"
-		     style="cursor:pointer;" title="Click to toggle details">
-		    <py:choose>
-	              <py:when test="lang in project.desc">${project.desc[lang]['short']}</py:when>
-	              <py:otherwise>${project.desc['en']['short']}</py:otherwise>
-		    </py:choose>
-		  </a>
-		</td>
-	      </tr>
-	      <tr id="${project.pkg}" style="display:none;"
-		  class="pkgdesc-full ${'alternate-color' if line % 2 == 1 else ''}">
-		<td colspan="4">
-		  <h3>
-		    ${project.pkg.capitalize()}:
-		    <py:choose>
-	              <py:when test="lang in project.desc">${project.desc[lang]['short']}</py:when>
-	              <py:otherwise>${project.desc['en']['short']}</py:otherwise>
-		    </py:choose>
-		  </h3>
-		  <dl class="pkgdesc">
-		    <py:choose>
-		      <py:when test="project.icon">
-			<dt class="screenshot">
-			  <a class="tooltip" href="http://screenshots.debian.net/package/${project.pkg}">
-			    <img src="${project.icon}" alt="Description:" />
-			    <span class="tooltip centered">
-			      <img src="${project.image}" />
-			      <table py:if="project.screenshots != []" class="versionclass">
-				<tr><th colspan="3"
-					class="versionclass"><strong>Other screenshots of package ${project.pkg}</strong></th></tr>
-				<tr><th class="version">Version</th><th class="archs">URL</th></tr>
-				<py:for each="screenshot in project.screenshots">
-				  <tr><td class="version">${screenshot['version']}</td><td class="archs"><a href="${screenshot['url']}">${screenshot['url']}</a></td></tr>
-				</py:for>
-			      </table>
-			    </span>
-			  </a>
-			</dt>
-		      </py:when>
-		      <py:otherwise>
-			<dt>Description</dt>
-		      </py:otherwise>
-		    </py:choose>
-		    <dd>
-		      <py:choose>
-			<py:when test="lang != 'en' and lang in project.desc">
-			  <a class="editlink" title="Fix translated description" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">
-			    ✏
-			  </a>
-			  ${project.desc[lang]['long']}
-			</py:when>
-			<py:otherwise>${project.desc['en']['long']}</py:otherwise>
-		      </py:choose>
-		    </dd>
-		    <py:if test="'published' in project.properties">
-		      <dt>Reference</dt>
-		      <dd>
-			<py:if test="'authors' in project.properties['published']">
-			  ${project.properties['published']['authors']}:
-			</py:if>
-			<py:choose>
-			  <py:when test="'url' in project.properties['published']">
-			    <py:choose>
-			      <py:when test="'title' in project.properties['published']">
-				<a href="${project.properties['published']['url']}">
-				  <em>${project.properties['published']['title']}.</em>
-				</a>
-			      </py:when>
-			      <py:otherwise>
-				<a href="${project.properties['published']['url']}">
-				  Link to publication
-				</a>
-			      </py:otherwise>
-			    </py:choose>
-			  </py:when>
-			  <py:when test="'doi' in project.properties['published']">
-			    <py:choose>
-			      <py:when test="'title' in project.properties['published']">
-				<a href="http://dx.doi.org/${project.properties['published']['doi']}">
-				  ${project.properties['published']['title']}.
-				</a>
-			      </py:when>
-			      <py:otherwise>
-				<a href="http://dx.doi.org/${project.properties['published']['doi']}">
-				  Link to publication</a>
-			      </py:otherwise>
-			    </py:choose>
-			  </py:when>
-			  <py:otherwise>
-			    <py:if test="'title' in project.properties['published']">
-			      ${project.properties['published']['title']}
-			    </py:if>
-			  </py:otherwise>
-			</py:choose>
-			<py:if test="'pubmed' in project.properties['published']">
-			  (<a href="http://www.ncbi.nlm.nih.gov/pubmed/${project.properties['published']['pubmed']}">PubMed</a></py:if><py:if test="'pubmed' in project.properties['published'] and 'eprint' in project.properties['published']">,</py:if><py:if test="'pubmed' not in project.properties['published'] and 'eprint' in project.properties['published']">(</py:if><py:if test="'eprint' in project.properties['published']"><a href="${project.properties['published']['eprint']}">eprint</a></py:if><py:if test="'pubmed' in project.properties['published'] or 'eprint' in project.properties['published']">)</py:if>
-			<py:if test="'journal' in project.properties['published']">${project.properties['published']['journal']}</py:if>
-			<py:if test="'volume' in project.properties['published']">${project.properties['published']['volume']}</py:if><py:if test="'number' in project.properties['published']">(${project.properties['published']['number']})</py:if><py:if test="'pages' in project.properties['published']">:${project.properties['published']['pages']}</py:if>
-			<py:if test="'year' in project.properties['published']">(${project.properties['published']['year']})</py:if>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.responsible != None">
-		      <dt>${maintainer[pstatus]}</dt>
-		      <dd>
-			<ul class="desc-inline">
-			  <li>${project.responsible}</li>
-			  <py:if test="project.properties.get('changed_by')">
-			    <li>${project.properties['changed_by']}</li>
-			  </py:if>
-			</ul>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.version != []">
-		      <dt>Versions</dt>
-		      <dd>
-			<ul class="desc-inline">
-			  <py:for each="version in project.version">
-			    <py:choose>
-			      <py:when test="isinstance(version, str)">
-			      <li>${version}</li>
-			      </py:when>
-			      <py:when test="'amd64' in version['archs'] or 'all' in version['archs']">
-				<li>
-				  ${version['version']}
-				  (<a href="https://packages.debian.org/${version['release']}/${project.pkg}">${version['release']}</a>)
-				</li>
-			      </py:when>
-			    </py:choose>
-			  </py:for>
-			  <py:if test="project.outdated">
-			    <li>
-			      <strong>${project.outdated['version']}</strong>
-			      (${project.outdated['release']})
-			    </li>
-			  </py:if>
-			</ul>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.debtags">
-		      <dt>Tags</dt>
-		      <dd>
-			<a class="editlink" title="Edit tags" href="https://debtags.debian.org/edit/${project.pkg}">
-			  ✏
-			</a>
-			<dl class="debtags desc-inline">
-			  <py:for each="debtag in project.debtags">
-			    <dt>${debtag['tag']}</dt>
-			    <dd>${debtag['value']}</dd>
-			  </py:for>
-			</dl>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.popcon and project.popcon['insts']">
-		      <dt>Popularity</dt>
-		      <dd>
-			<ul class="desc-inline">
-			  <py:if test="project.popcon['vote']">
-			    <li>${project.popcon['vote']} regular users</li>
-			  </py:if>
-			  <py:if test="project.popcon['recent']">
-			    <li>
-			      ${project.popcon['recent']} recent
-			    </li>
-			  </py:if>
-			  <li>
-			    ${project.popcon['insts']} total installations
-			    (of ${popconsubmit} submissions)
-			  </li>
-			</ul>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.properties['Enhances'] != {}">
-		      <dt>Enhancements</dt>
-		      <dd>
-			<ul class="desc-inline">
-			  <py:for each="enh in project.properties['Enhances'].keys()">
-			    <li>
-			      <a href="${project.properties['Enhances'][enh]}">${enh}</a>
-			    </li>
-			  </py:for>
-			</ul>
-		      </dd>
-		    </py:if>
-		    <dt>Debian</dt>
-		    <dd>
-		      <ul class="desc-inline">
-			<py:if test="'wnpp' in project.properties">
-			  <li>
-			    <a href="http://bugs.debian.org/${project.properties['wnpp']}">
-			      Announcement
-			    </a>
-			  </li>
-			</py:if>
-			<py:if test="project.pkgstatus == 'new'">
-			  <li>
-			    <a href="${project.properties['pkg-url']}">NEW entry</a>
-			  </li>
-			</py:if>
-			<py:if test="project.pkgstatus in ('official_high', 'official_low', 'non-free', 'experimental')">
-			  <li>
-			    <a href="https://tracker.debian.org/pkg/${project.pkg}">
-			      Maintainer page
-			    </a>
-			  </li>
-			</py:if>
-			<py:if test="project.pkgstatus in ('official_high', 'official_low', 'non-free', 'experimental')">
-			  <li>
-			    <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?repeatmerged=no&src=${project.pkg}">
-			      Bugs
-			    </a>
-			  </li>
-			</py:if>
-			<py:if test="project.properties['vcs-browser'] != '#'">
-			  <li>
-			    <py:choose>
-			      <py:when test="'vcs-url' in project.properties">
-				<a href="${project.properties['vcs-browser']}" title="${project.properties['vcs-url']}">
-				  ${project.properties['vcs-type']}
-				</a>
-			      </py:when>
-			      <py:otherwise>
-				<a href="${project.properties['vcs-browser']}">
-				  ${project.properties['vcs-type']}
-				</a>
-			      </py:otherwise>
-			    </py:choose>
-			  </li>
-			</py:if>
-		      </ul>
-		    </dd>
-		    <py:if test="'homepage' in project.properties and project.properties['homepage'] not in (None, '', '#')">
-		      <dt>Upstream</dt>
-		      <dd>
-			<ul class="desc-inline">
-			  <li>
-			    <a href="${project.properties['homepage']}">Home page</a>
-			  </li>
-			  <py:if test="'registration' in project.properties">
-			    <li>
-			      <a href="${project.properties['registration']}">
-				Registration
-			      </a>
-			    </li>
-			  </py:if>
-			</ul>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.remark">
-		      <dt>Remark</dt>
-		      <dd>
-			<py:if test="project.remark['short']">${project.remark['short']}</py:if>
-			<py:if test="project.remark['long']">${project.remark['long']}</py:if>
-		      </dd>
-		    </py:if>
-		    <py:if test="project.component == 'main'
-				 and project.pkgstatus in ('official_high', 'official_low', 'experimental')
-				 and (not project.icon or not project.debtags 
-				      or (lang != 'en' and lang not in project.desc))">
-		      <dt>Improve entry</dt>
-		      <dd>
-			<ul class="desc-inline">
-			  <li py:if="not project.icon">
-			    <a href="http://screenshots.debian.net/uploadfile?packagename=${project.pkg}">
-			      Upload Screenshot
-			    </a>
-			  </li>
-			  <li py:if="not project.debtags">
-			    <a href="https://debtags.debian.org/edit/${project.pkg}">
-			      Create tags
-			    </a>
-			  </li>
-			  <li py:if="lang != 'en' and lang not in project.desc">
-			    <a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.pkg}">
-			      Translate description
-			    </a>
-			  </li>
-			</ul>
-		      </dd>
-		    </py:if>
-		  </dl>
-		  <div style="position:relative;">
-		    <a style="position:absolute; right:0; bottom:1em; cursor:pointer;" onclick="toggle_visibility('${project.pkg}');"
-		       title="Click to close details">Close</a></div>
-		</td>
-	      </tr>
-	    </py:for>
-	  </py:for>
-	  <tr><td colspan="4" class="fullwidth" /></tr>
-	</table>
-      </div>
-      <div id="footer">
-	<hr class="hidecss" />
-	<p>This page is also available in the following languages:</p>
-	<py:for each="l in languages">
-	  <span py:if="lang != l" class="navpara">
-	    <a href="${task}.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
-	  </span>
-	</py:for>
-	<p>
-	  How to set
-	  <a href="http://www.debian.org/intro/cn.${lang}.html">
-	    the default document language
-	  </a>
-	</p>
-	<address>Last update: ${timestamp}</address>
-      </div>
-  </body>
-</html>
diff --git a/webtools_py3/templates/tasks.xhtml b/webtools_py3/templates/tasks.xhtml
deleted file mode 100644
index 64edd89..0000000
--- a/webtools_py3/templates/tasks.xhtml
+++ /dev/null
@@ -1,253 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-<head>
-<title>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<!--<meta charset="utf-8" />-->
-<link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
-</head>
-<body>
-<script type="text/javascript" src="/js/wz_tooltip.js"></script>
-<div style="text-align: center;">
-<a href="$projecturl"><span py:choose="logourl">
-	           <span py:when="None">${projectname} Project</span>
-	           <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
-                 </span>
-</a>
-</div>
-<div class="heading" py:if="projectadvertising">
-	<div class="tabBar" style="text-align: center;">$projectadvertising</div>
-</div>
-<table class="columns">
-<tr>
-	<td class="left">
-		<span class="section">Summary</span>
-		<div class="section">
-			<div class="sectionTop"/>
-			<div class="row">
-				<div class="pkgname">${tasks[task].metapkg.PrintedName.capitalize()}</div>
-				<div class="pkgdesc" py:choose="">
-				  <div py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['short']}</div>
-				  <div py:otherwise="">${tasks[task].metapkg.desc['en']['short']}</div>
-				</div>
-				<p><span py:choose="">
-	           <span py:when="lang in tasks[task].metapkg.desc">${tasks[task].metapkg.desc[lang]['long']}
-                     <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.pkg}">Fix translated description</a></div>
-                   </span>
-	           <span py:otherwise="">${tasks[task].metapkg.desc['en']['long']}
-                     <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.pkg}">Translate description</a></div>
-                   </span>
-                 </span></p>
-			</div>
-			<div class="row">
-				<p>Description
-				</p>
-				<p>For a better overview of the project's availability as a Debian package,
-				  each head row has a color code according to this scheme:</p>
-				<ul>
-				   <py:for each="pstatus in dependencies[task]">
-				     <li class="deb-${pstatus}"><a href="#${pstatus}-debs">${headline[pstatus]}</a></li>
-				   </py:for>
-				</ul>
-				<p>If you discover a project which looks like a good candidate for ${projectname}
-				  to you, or if you have prepared an unofficial Debian package, please do not hesitate to
-				  send a description of that project to the
-				  <a href="mailto:${projectlist}">${projectname} mailing list</a>.
-				</p>
-			</div>
-		</div>
-
-		<span class="section">Links to other tasks</span>
-		<div class="section">
-			<div class="sectionTop"/>
-			<div class="row">
-                            <div class="link"><a href="index">Index of all tasks</a></div>
-                          <py:for each="t in taskskeys">
-                            <div py:choose="t">
-                              <span py:when="task" class="curlink"><a href="${t}">${tasks[t].metapkg.PrintedName.capitalize()}</a></span>
-                              <span py:otherwise="" class="link"><a href="${t}">${tasks[t].metapkg.PrintedName.capitalize()}</a></span>
-                            </div>
-                          </py:for>
-                        </div>
-		</div>
-	</td>
-	<td class="main">
-		<div class="pageBody">
-			<h1>$projectname ${tasks[task].metapkg.PrintedName.capitalize()} packages</h1>
-<py:for each="pstatus in dependencies[task]">
-			<h2><a id="${pstatus}-debs" name="${pstatus}-debs"/>${headline[pstatus]}</h2>
-   <py:for each="project in projects[task][pstatus]">
-     <table class="project" summary="${project.pkg}">
-       <tbody>
-	 <tr class="deb-${pstatus}">
-	   <td class="project-name">
-	     <a name="${project.pkg}" id="${project.pkg}"/>
-	     <div class="pkgname">${project.pkg.capitalize()}
-	       <span class="wnpp" py:if="'wnpp' in project.properties"> - <a href="http://bugs.debian.org/${project.properties['wnpp']}">wnpp</a></span>
-	     </div>
-	     <div class="pkgdesc" py:choose="">
-	           <div py:when="lang in project.desc">${project.desc[lang]['short']}</div>
-	           <div py:otherwise="">${project.desc['en']['short']}</div>
-	     </div>
-	     <div py:choose="project.properties['homepage']">
-                <span py:when="'#'">Homepage not available</span>
-                <span py:otherwise=""><a href="${project.properties['homepage']}">${project.properties['homepage']}</a></span>
-             </div>
-	     <div py:if="project.responsible != None">${maintainer[pstatus]}:
-               ${project.responsible} <span py:if="'changed_by' in project.properties">(${project.properties['changed_by']})</span>
-             </div>
-	   </td>
-	   <td py:if="project.component and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'" class="project-info">
-	     <span py:if="project.version != []" class="tooltip" id="${project.pkg}-versions">
-	       <table class="versionclass">
-		 <tr><th colspan="3" class="versionclass"><strong>Versions of package ${project.pkg}</strong></th></tr>
-		 <tr><th class="release">Release</th><th class="version">Version</th><th class="archs">Architectures</th></tr>
-		 <py:for each="version in project.version">
-		   <tr><td class="release">${version['release']}</td><td class="version">${version['version']}</td><td class="archs">${version['archs']}</td></tr>
-		 </py:for>
-                 <tr py:if="project.outdated != {}"><td class="outdated">${project.outdated['release']}</td><td class="outdated">${project.outdated['version']}</td>
-                 </tr>
-	       </table>
-	     </span>
-	     <span py:if="project.debtags != []" class="tooltip" id="${project.pkg}-debtags">
-	       <table class="versionclass">
-		 <tr><th colspan="2" class="versionclass"><strong>Debtags of package ${project.pkg}:</strong></th></tr>
-		 <py:for each="debtag in project.debtags">
-		   <tr><td class="release">${debtag['tag']}</td><td class="version">${debtag['value']}</td></tr>
-		 </py:for>
-	       </table>
-	     </span>
-	     <div py:if="project.popcon != {}"
-	     class="popcon"><a href="http://qa.debian.org/popcon-png.php?packages=${project.pkg}%26show_vote=on%26show_recent=on%26want_legend=on">Popcon</a>:
-	     ${project.popcon['vote']} users (${project.popcon['recent']} upd.)<sup><a href="#popconexplanation">*</a></sup></div>
-	     <div py:if="project.version != []">
-	       <div py:choose="">
-		 <div py:when="project.outdated == {}" class="project-info" onmouseover="TagToTip('${project.pkg}-versions', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Versions and Archs</div>
-		 <div py:otherwise="" class="project-infomissing" onmouseover="TagToTip('${project.pkg}-versions', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Newer upstream!</div>
-	       </div>
-	     </div>
-	     <div py:choose="">
-	       <div py:when="project.debtags != []" class="project-info" onmouseover="TagToTip('${project.pkg}-debtags', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()"><a href="https://debtags.debian.org/edit/${project.pkg}">Edit Debtags</a></div>
-               <div py:otherwise="">
-		 <div class="project-infomissing"><a href="https://debtags.debian.org/edit/${project.pkg}">Go tagging</a></div>
-	       </div>
-	     </div>
-           </td>
-           <td class="project-license">
-             <em>License: ${project.properties['license']}</em>
-	     <div py:choose="project.properties['pkg-url']">
-                <span py:when="'#'">Debian package not available</span>
-                <span py:otherwise=""><a href="${project.properties['pkg-url']}">${pdolinkname[pstatus]}</a></span>
-             </div>
-	     <div py:if="project.properties['vcs-browser'] != '#'">
-	       <span py:choose="">
-		 <span py:when="'vcs-url' in project.properties"><a href="${project.properties['vcs-browser']}" title="${project.properties['vcs-url']}">${project.properties['vcs-type']}</a></span>
-		 <span py:otherwise=""><a href="${project.properties['vcs-browser']}">${project.properties['vcs-type']}</a></span>
-	       </span>
-	     </div>
-            <div py:if="lang != 'en' and project.component == 'main' and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'">
-	       <div py:choose="">
-	           <div class="trans" py:when="lang in project.desc"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">Fix translated description</a></div>
-	           <div class="trans-missing" py:otherwise=""><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.pkg}">Translate description</a></div>
-               </div>
-            </div>
-            <div class="language" py:if="'language' in project.properties and project.component != 'main'">Language: ${project.properties['language']}</div>
-            <div py:if="project.version != [] and (project.pkgstatus == 'new' or project.pkgstatus == 'pkgvcs')">Version: ${project.version[0]}</div>
-           </td>
-         </tr>
-         <tr>
-           <td colspan="2" class="project-description"><span py:choose="">
-	           <span py:when="lang in project.desc">${project.desc[lang]['long']}</span>
-	           <span py:otherwise="">${project.desc['en']['long']}</span>
-	         </span>
-	     <div class="enhanced-by" py:if="project.properties['Enhances'] != {}">
-	       The package is enhanced by the following packages: <py:for each="enh in project.properties['Enhances'].keys()">
-		 <a href="${project.properties['Enhances'][enh]}">${enh}</a>
-	       </py:for>
-	     </div>
-	     <div class="registration" py:if="'registration' in project.properties">
-	       <span class="registrationlink" >Please register by following <a
-	       href="${project.properties['registration']}">this link</a></span> if you are using ${project.pkg}.
-	     </div>
-	     <div class="published"
-	     py:if="'published' in project.properties">Please cite:
-	       <span class="authors" py:if="'authors' in project.properties['published']">${project.properties['published']['authors']}:</span>
-	       <span py:choose="">
-		 <span py:when="'url' in project.properties['published']">
-		   <span py:choose="">
-                     <span class="title"
-			   py:when="'title' in project.properties['published']"><a href="${project.properties['published']['url']}">${project.properties['published']['title']}.</a></span>
-		     <span py:otherwise=""><a href="${project.properties['published']['url']}">Link
-			 to publication</a></span>
-		   </span>
-		 </span>
-		 <span py:when="'doi' in project.properties['published']">
-		   <span py:choose="">
-                     <span class="title"
-			   py:when="'title' in project.properties['published']"><a href="http://dx.doi.org/${project.properties['published']['doi']}">${project.properties['published']['title']}.</a></span>
-		     <span py:otherwise=""><a href="http://dx.doi.org/${project.properties['published']['doi']}">Link
-			 to publication</a></span>
-		   </span>
-		 </span>
-		 <span py:otherwise=""><span class="title" py:if="'title' in project.properties['published']">${project.properties['published']['title']}</span>
-		 </span>
-	       </span>
-               <span py:if="'pubmed' in project.properties['published']">(<a href="http://www.ncbi.nlm.nih.gov/pubmed/${project.properties['published']['pubmed']}">PubMed</a></span><span py:if="'pubmed' in project.properties['published'] and 'eprint' in project.properties['published']">,</span><span py:if="'pubmed' not in project.properties['published'] and 'eprint' in project.properties['published']">(</span><span py:if="'eprint' in project.properties['published']"><a href="${project.properties['published']['eprint']}">eprint</a></span><span py:if="'pubmed' in project.properties['published'] or 'eprint' in project.properties['published']">)</span>
-	       <span class="journal" py:if="'journal' in project.properties['published']">${project.properties['published']['journal']}</span>
-	       <span class="journal" py:if="'volume' in project.properties['published']">${project.properties['published']['volume']}</span><span class="journal" py:if="'number' in project.properties['published']">(${project.properties['published']['number']})</span><span class="journal" py:if="'pages' in project.properties['published']">:${project.properties['published']['pages']}</span>
-	       <span class="year" py:if="'year' in project.properties['published']">(${project.properties['published']['year']})</span>
-	     </div>
-	   </td>
-	   <td py:if="project.component and project.pkgstatus != 'new' and project.pkgstatus != 'pkgvcs'" class="project-icon">
-	     <div py:choose="">
-	       <div py:when="project.icon != None">
-		 <span class="tooltip" id="${project.pkg}-screenshot">
-		   <img src="${project.image}" />
-		   <table py:if="project.screenshots != []" class="versionclass">
-		     <tr><th colspan="3"
-		     class="versionclass"><strong>Other screenshots of package ${project.pkg}</strong></th></tr>
-		     <tr><th class="version">Version</th><th class="archs">URL</th></tr>
-		     <py:for each="screenshot in project.screenshots">
-		       <tr><td class="version">${screenshot['version']}</td><td class="archs"><a href="${screenshot['url']}">${screenshot['url']}</a></td></tr>
-		     </py:for>
-		   </table>
-		 </span>
-                 <a href="http://screenshots.debian.net/package/${project.pkg}"><img class="icon" src="${project.icon}" width="300" alt="Screenshots of package ${project.pkg}" onmouseover="TagToTip('${project.pkg}-screenshot', FIX, ['${project.pkg}', 80, -100])" onmouseout="UnTip()" /></a>
-               </div>
-	       <div py:otherwise="" class="project-infomissing"><a href="http://screenshots.debian.net/uploadfile?packagename=${project.pkg}">Upload screenshot</a></div>
-             </div>
-           </td>
-         </tr>
-	 <tr py:if="project.remark">
-	   <td colspan="3" class="remark">
-	     <div py:if="project.remark['short']"><strong>Remark of ${projectname} team:</strong> ${project.remark['short']}</div>
-	     <div py:if="project.remark['long']">${project.remark['long']}</div>
-	   </td>
-	 </tr>
-       </tbody>
-     </table>
-   </py:for>
-</py:for>
-		</div>
-	</td>
-</tr>
-</table>
-<div class="footnotecontent" id="popconexplanation">
-  <sup>*</sup>Popularitycontest results: number of people who use this package regularly (number of people who upgraded this package recently) out of ${popconsubmit}
-</div>
-<div id="footer">
-  <hr class="hidecss" />
-<p>This page is also available in the following languages:</p>
-<py:for each="l in languages">
-  <span py:if="lang != l" class="navpara">
-    <a href="${task}.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
-  </span>
-</py:for>
-<p>How to set <a href="http://www.debian.org/intro/cn.${lang}.html">the default document language</a></p>
-<address>Last update: ${timestamp}</address>
-</div>
-</body>
-</html>
diff --git a/webtools_py3/templates/tasks_idx.xhtml b/webtools_py3/templates/tasks_idx.xhtml
deleted file mode 100644
index 8007084..0000000
--- a/webtools_py3/templates/tasks_idx.xhtml
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}"
-      xmlns:py="http://genshi.edgewall.org/">
-  <head>
-    <title>$projectname</title>
-    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-    <link href="http://www.debian.org/debhandheld.css" media="screen"
-	  rel="stylesheet" type="text/css" />
-    <link href="http://www.debian.org/debian.css" rel="stylesheet"
-	  type="text/css" />
-    <link href="http://blends.debian.org/css/blends.css" rel="stylesheet"
-	  type="text/css" />
-    <style type="text/css">
-/* <!-- */
-tr:nth-child(even) {
-    background-color: #eee;
-}
-table {
-    padding-bottom: 1.5em;
-}
-
-/* --> */
-    </style>
-    <link rel="shortcut icon" href="http://www.debian.org/favicon.ico" />
-  </head>
-  <body>
-    <div id="header">
-      <div id="upperheader">
-	<div id="logo">
-	  <a href="http://www.debian.org/" title="Debian Home">
-	    <img src= "http://www.debian.org/Pics/openlogo-50.png"
-		 alt="Debian" width="50" height= "61" /></a>
-	  </div>
-	  <p class="section">Pure Blend</p>
-	</div>
-	<div id="navbar">
-	  <span py:choose="">
-	    <span py:when="projectname == 'Debian Astro'">
-	      <ul>
-		<li><a href="$projecturl">$projectname</a></li>
-		<li><a href="../tasks">Packages</a></li>
-		<li><a href="../contact.html">Contact</a></li>
-		<li><a href="../contribute.html">Contribute</a></li>
-	      </ul>
-	    </span>
-	    <span py:otherwise="">
-	      <ul>
-		<li><a href="$projecturl">$projectname</a></li>
-		<li><a href="../tasks">Packages</a></li>
-		<li><a href="../bugs/">Bugs</a></li>
-		<li><a href="../thermometer/">Thermometer</a></li>
-		<li><a href="../maintstats/">Maintainer Stats</a></li>
-	      </ul>
-	    </span>
-	  </span>
-	</div>
-      <p id="breadcrumbs">
-	<a href="http://blends.debian.org">Debian Pure Blends</a>
-	/ <a href="$projecturl">$projectname</a>
-	/ Packages
-      </p>
-    </div><!-- end header -->
-    <div id="content">
-      <h1>$projectname Packages</h1>
-      <p>
-	The ${projectname} Pure Blend contains ${pkgcount} packages
-	which are grouped by metapackages. Each metapackage will cause
-	the installation of packages for a specific topic. The
-	following table lists the metapackages of ${projectname}.
-      </p>
-      <table>
-	<thead>
-	  <tr><th>Metapackage</th><th>Description</th></tr>
-	</thead>
-	<tbody>
-          <py:for each="task in taskskeys">
-	    <tr>
-	      <td style="text-transform:capitalize;">
-		<a href="${task}" name="${task}" id="${task}">
-		  ${tasks[task].metapkg.PrintedName}
-		</a>
-	      </td>
-	      <td>
-		<span py:choose="">
-	          <span py:when="lang in tasks[task].metapkg.desc">
-		    ${tasks[task].metapkg.desc[lang]['short']}
-		  </span>
-	          <span py:otherwise="">
-		    ${tasks[task].metapkg.desc['en']['short']}
-		  </span>
-		</span>
-	      </td>
-	    </tr>
-	  </py:for>
-	</tbody>
-      </table>
-    </div>
-    <div id="footer">
-      <hr class="hidecss" />
-      <p>This page is also available in the following languages:</p>
-      <py:for each="l in languages">
-	<span py:if="lang != l" class="navpara">
-	  <a href="index.${language_dict[l]['short']}.html" title="${language_dict[l]['title']}" hreflang="${language_dict[l]['htaccess']}" lang="${language_dict[l]['htaccess']}" rel="alternate">${language_dict[l]['printed']}</a>
-	</span>
-      </py:for>
-      <p>
-	How to set
-	<a href="http://www.debian.org/intro/cn.${lang}.html">
-	  the default document language
-	</a>
-      </p>
-      <address>Last update: ${timestamp}</address>
-    </div>
-  </body>
-</html>
diff --git a/webtools_py3/templates/thermometer.xhtml b/webtools_py3/templates/thermometer.xhtml
deleted file mode 100644
index 05607d9..0000000
--- a/webtools_py3/templates/thermometer.xhtml
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
-      xmlns:py="http://genshi.edgewall.org/">
-<head>
-<title>$projectname Thermometer</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
-</head>
-<body>
-<div style="text-align: center;">
-<a href="$projecturl"><span py:choose="logourl">
-           <span py:when="None">${projectname} Project</span>
-           <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
-     </span>
-</a>
-</div>
-<div class="heading" py:if="projectadvertising">
-    <div class="tabBar" style="text-align: center;">$projectadvertising</div>
-</div>
-<table class="columns">
-<tr>
-  <td class="left">
-    <span class="section">Summary</span>
-    <div class="section">
-      <div class="sectionTop"/>
-      <div class="row">A <a href="http://blends.alioth.debian.org/blends/">Debian Pure Blend</a> is a Debian
-	internal project which assembles a set of packages that might help users to solve certain tasks of
-	their work.  The list on the right shows the tasks of ${projectname}.</div>
-    </div>
-    <span class="section">Links</span>
-    <div class="section">
-      <div class="sectionTop"/>
-      <div class="row">
-        <div class="link"><a href="$homepage">$projectname</a></div>
-        <div py:if="ubuntuhome">
-          <div py:if="projectubuntu">
-            <div class="link"><a href="$ubuntuhome">$projectubuntu</a></div>
-          </div>
-        </div>
-        <div class="link"><a href="$uthermometer">Ubuntu Thermometer</a></div>
-        <div class="sectionTop"/>
-        <div class="link"><a href="../tasks">Tasks of $projectname</a></div>
-        <div class="link"><a href="../tasks/packagelist">Package list</a></div>
-        <div class="link"><a href="../bugs">Bugs of $projectname</a></div>
-      </div>
-    </div>
-    <span class="section">Color legend</span>
-    <div class="section">
-      <div class="sectionTop"/>
-      <div class="row">
-        <table class='pkg'>
-          <py:for each="leg in legend">
-            <tr class='${leg[0]}'><td class='${leg[0]}'>${leg[1]}</td></tr>
-          </py:for>
-        </table>
-      </div>
-    </div>
-  </td>
-  <td class="main">
-    <div class="pageBody">
-      <table class="pkg">
-        <caption><h3>$projectname Package Thermometer</h3></caption>
-          <tr class='title'>
-            <th>Package</th>
-            <th>stable</th><th>testing</th><th>unstable</th><th>stable-bpo</th><th>experimental</th><th>NEW</th><th>UNRELEASED</th><th>upstream</th><th>tasks</th>
-         </tr>
-         <py:for each="pkg in blend_data">
-         <tr class='${pkg.debianstatus}'>
-           <td><strong>${pkg.source}</strong> (<span py:choose="pkg.is_in_debian"><span py:when="1"><a href='http://packages.qa.debian.org/${pkg.source}'>PTS</a>, </span><span py:otherwise=""><span py:if="pkg.wnpp != ''"><a href="http://bugs.debian.org/${pkg.wnpp}">WNPP</a>, </span></span></span><span py:if="pkg.vcs_browser != ''"><a href="${pkg.vcs_browser}">VCS</a>, </span><a href='${pkg.homepage}'>UP</a>)</td>
-           <td>${pkg.stable}</td><td>${pkg.testing}</td><td>${pkg.unstable}</td><td>${pkg.stable_bpo}</td><td>${pkg.experimental}</td><td>${pkg.NEW}</td><td>${pkg.UNRELEASED}</td><td class='${pkg.upstreamstatus}'>${pkg.upstream}</td><td class='none'><py:for each="task in pkg.tasks"><a href="../tasks/${task}">${task}</a> </py:for></td>
-         </tr>
-         </py:for>
-     </table>
-    </div>
-  </td>
-</tr>
-</table>
-<div id="footer">
-  <hr class="hidecss" />
-  <address>Last update: ${timestamp}</address>
-</div>
-</body>
-</html>
diff --git a/webtools_py3/templates/uthermometer.xhtml b/webtools_py3/templates/uthermometer.xhtml
deleted file mode 100644
index 1c8f430..0000000
--- a/webtools_py3/templates/uthermometer.xhtml
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
-      xmlns:py="http://genshi.edgewall.org/">
-<head>
-<title>$projectname packages in Ubuntu Thermometer</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-<link href="/css/sentinel.css" type="text/css" rel="stylesheet"/>
-</head>
-<body>
-<div style="text-align: center;">
-<a href="$projecturl"><span py:choose="logourl">
-           <span py:when="None">${projectname} Project</span>
-           <span py:otherwise=""><img src="$logourl" alt="$projectname Project" height="93" /></span>
-     </span>
-</a>
-</div>
-<div class="heading" py:if="projectadvertising">
-    <div class="tabBar" style="text-align: center;">$projectadvertising</div>
-</div>
-<table class="columns">
-<tr>
-  <td class="left">
-    <span class="section">$summary</span>
-    <div class="section">
-      <div class="sectionTop"/>
-      <div class="row">${idxsummary}</div>
-    </div>
-    <span class="section">Links</span>
-    <div class="section">
-      <div class="sectionTop"/>
-      <div class="row">
-        <div class="link"><a href="$homepage">$projectname</a></div>
-        <div py:if="ubuntuhome">
-          <div py:if="projectubuntu">
-            <div class="link"><a href="$ubuntuhome">$projectubuntu</a></div>
-          </div>
-        </div>
-        <div class="link"><a href="$thermometer">Debian Thermometer</a></div>
-        <div class="sectionTop"/>
-        <div class="link"><a href="../tasks">Tasks of $projectname</a></div>
-        <div class="link"><a href="../tasks/packagelist">Package list</a></div>
-        <div class="link"><a href="../bugs">Bugs of $projectname</a></div>
-      </div>
-    </div>
-    <span class="section">Color legend</span>
-    <div class="section">
-      <div class="sectionTop"/>
-      <div class="row">
-        <table class='pkg'>
-          <py:for each="leg in ulegend">
-            <tr class='${leg[0]}'><td class='${leg[0]}'>${leg[1]}</td></tr>
-          </py:for>
-        </table>
-      </div>
-    </div>
-  </td>
-  <td class="main">
-    <div class="pageBody">
-      <table class="pkg">
-        <caption><h3>$projectname  packages in Ubuntu Thermometer</h3></caption>
-          <tr class='title'>
-            <th>Package</th>
-            <th>stable</th><th>testing</th><th>unstable</th><th>stable-bpo</th><th>$ubuntuprev2</th><th>$ubuntuprev1</th><th>$latestubuntu</th><th>upstream</th><th>tasks</th>
-         </tr>
-         <py:for each="pkg in blend_data">
-         <tr class='${pkg.ubuntustatus}'>
-           <td><strong>${pkg.source}</strong> (<span py:choose="pkg.is_in_debian"><span py:when="1"><a href='http://packages.qa.debian.org/${pkg.source}'>PTS</a>, </span><span py:otherwise=""><span py:if="pkg.wnpp != ''"><a href="http://bugs.debian.org/${pkg.wnpp}">WNPP</a>, </span></span></span><span py:if="pkg.vcs_browser != ''"><a href="${pkg.vcs_browser}">VCS</a>, </span><a href='${pkg.homepage}'>UP</a>)</td>
-           <td>${pkg.stable}</td><td>${pkg.testing}</td><td>${pkg.unstable}</td><td>${pkg.stable_bpo}</td><td>${pkg.ubuntuprev2}</td><td>${pkg.ubuntuprev1}</td><td>${pkg.latestubuntu}</td><td class='${pkg.upstreamstatus}'>${pkg.upstream}</td><td class='none'><py:for each="task in pkg.tasks"><a href="../tasks/${task}">${task}</a> </py:for></td>
-         </tr>
-         </py:for>
-     </table>
-    </div>
-  </td>
-</tr>
-</table>
-<div id="footer">
-  <hr class="hidecss" />
-  <address>${updatetimestamp}</address>
-</div>
-</body>
-</html>

-- 
Static and dynamic websites for Debian Pure Blends



More information about the Blends-commit mailing list