[z3-checkins] r33384 - in z3/deliverance/branches/packaged/deliverance: . test-data/tasktracker

cabraham at codespeak.net cabraham at codespeak.net
Tue Oct 17 18:35:43 CEST 2006


Author: cabraham
Date: Tue Oct 17 18:35:40 2006
New Revision: 33384

Added:
   z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/
   z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/content.html
   z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/expected.html
   z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/tasktracker.xml
Modified:
   z3/deliverance/branches/packaged/deliverance/interpreter.py
   z3/deliverance/branches/packaged/deliverance/test_wsgi.py
Log:
made a workaround for a deepcopy bug in lxml; added a tasktracker static test which currently fails for python interpreter

Modified: z3/deliverance/branches/packaged/deliverance/interpreter.py
==============================================================================
--- z3/deliverance/branches/packaged/deliverance/interpreter.py	(original)
+++ z3/deliverance/branches/packaged/deliverance/interpreter.py	Tue Oct 17 18:35:40 2006
@@ -66,7 +66,7 @@
         if theme_el is None:
             return 
 
-        content_els = copy.deepcopy(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
+        content_els = self.deepcopy_elementlist(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
 
         if len(content_els) == 0:
             if rule.get(self.NOCONTENT_KEY) != 'ignore':
@@ -120,7 +120,7 @@
         if theme_el is None:
             return 
 
-        content_els = copy.deepcopy(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
+        content_els = self.deepcopy_elementlist(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
 
         if len(content_els) == 0:
             if rule.attrib.get(self.NOCONTENT_KEY) != 'ignore':
@@ -186,7 +186,7 @@
         if theme_el is None:
             return 
 
-        content_els = copy.deepcopy(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
+        content_els = self.deepcopy_elementlist(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
 
         if len(content_els) == 0:
             if rule.attrib.get(self.NOCONTENT_KEY) != 'ignore':
@@ -261,7 +261,7 @@
         if theme_el is None:
             return 
 
-        content_els = copy.deepcopy(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
+        content_els = self.deepcopy_elementlist(content.xpath(rule.attrib[self.RULE_CONTENT_KEY]))
 
         if len(content_els) == 0:
             if rule.attrib.get(self.NOCONTENT_KEY) != 'ignore':
@@ -303,7 +303,7 @@
             self.add_to_body_start(theme,self.format_error("invalid xpath for content", rule=rule))
             return
 
-        content_els = copy.deepcopy(content.xpath(content_xpath))        
+        content_els = self.deepcopy_elementlist(content.xpath(content_xpath))        
  
         if len(content_els) == 0:
             if rule.attrib.get(self.NOCONTENT_KEY) != 'ignore':
@@ -356,3 +356,13 @@
         comment_before = etree.Comment("Deliverance: applying rule %s" % etree.tostring(rule))
         comment_after = etree.Comment("Deliverance: done applying rule %s" % etree.tostring(rule))
         return comment_before, comment_after
+
+    def deepcopy_elementlist(self, els):
+        # converts etree._Comment list elements into strings and then performs copy
+        # this is necessary to avoid a  bug in lxml which turns comments into None when
+        # perfoming a deepcopy
+        for index, el in enumerate(els):
+            if type(el) == etree._Comment:
+                els[index] = str(el)
+
+        return copy.deepcopy(els)

Added: z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/content.html
==============================================================================
--- (empty file)
+++ z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/content.html	Tue Oct 17 18:35:40 2006
@@ -0,0 +1,339 @@
+<html>
+<head>
+
+<title>
+Todo list
+</title>
+
+<script src="/javascripts/prototype.js" type="text/javascript"></script>
+<script src="/javascripts/effects.js" type="text/javascript"></script>
+<script src="/javascripts/dragdrop.js" type="text/javascript"></script>
+<script src="/javascripts/task.js" type="text/javascript"></script>
+<script src="/javascripts/builder.js" type="text/javascript"></script>
+<script src="/javascripts/controls.js" type="text/javascript"></script>
+<script src="/javascripts/editable_list.js" type="text/javascript"></script>
+<script src="/javascripts/datebocks_engine.js" type="text/javascript"></script>
+<script src="/javascripts/calendar.js" type="text/javascript"></script>
+<script src="/javascripts/calendar-setup.js" type="text/javascript"></script>
+<script src="/javascripts/calendar-en.js" type="text/javascript"></script>
+<script src="/javascripts/datebocks_window.js" type="text/javascript"></script>
+<link href="/stylesheets/list.css" media="screen" rel="Stylesheet" type="text/css" />
+<link href="/stylesheets/datebocks_engine.css" media="screen" rel="Stylesheet" type="text/css" />
+<link href="/stylesheets/calendar-blue.css" media="screen" rel="Stylesheet" type="text/css" />
+
+</head>
+<body>
+<div style="background-color:#edf">
+Logged in as: admin
+<span style="position:absolute;right:2ex;">Project: theproject</span>
+</div>
+This is list deliverance.<br />
+
+
+  <a id="reorder_button" href="javascript:modeSwitch();">
+    <span id="modeName">Reorder</span>
+  </a><br /><br />
+
+
+<span>
+
+<!-- list headers -->
+
+Task name
+<span class="status-column">Status <a href="#sortbydeadline" class="sortarrow" onclick="sortBy('status'); return false;">&#x2193;</a></span>
+<span class="deadline-column">Deadline <a href="#sortbydeadline" class="sortarrow" onclick="sortBy('deadline'); return false;">&#x2193;</a></span>
+<span class="assigned-column">Assigned to<a href="#sortbyowner" class="sortarrow" onclick="sortBy('owner'); return false;">&#x2193;</a></span>
+<span class="creator-column">Created by</span>
+
+<!-- the actual task list -->
+
+<ul id="tasks" class="task_list">
+  
+    
+    
+
+<li status="not done" style="line-height: 2em;" task_id="1"
+    sort_index="0" deadline="2006-10-14 17:00:00" owner=""
+    id="task_1">
+
+<span class="taskitem" style="padding-left: 0px;" depth="0">
+
+<img src="/images/plus.png" id="collapseButton_1"
+     onclick="toggleCollapse(1)" />
+
+<!-- drag handle -->
+<span>
+<img class="handle" src="/images/folder_open.png"
+     id="handle_1">
+</span>
+
+<!-- title -->
+<a href="/task/view/1" title="">
+<span class="uncompleted-task root-task" id="title_1">nycsr</span></a>
+
+</span>
+
+<!-- the status -->
+
+<span class="status-column" id="status-form_1"><select id="status_1" method="post" name="status" onchange="changeStatus(&quot;/task/change_status/1&quot;,1)" originalvalue="0"><option value="not done" selected="selected">not done</option>
+<option value="done">done</option></select></span>
+
+<span class="status-column" style="display:none;"
+      id="label_1">not done</span>
+
+
+</form>
+
+<!-- end status -->
+
+<!-- deadline -->
+
+<span class="deadline-column">14 October, 2006</span>
+
+<!-- owner -->
+
+<span class="assigned-column">unassigned</span>
+
+<!-- creator -->
+<span class="creator-column">admin</span>
+
+<!-- subtasks -->
+
+<ul id="xtasks" class="task_list">
+
+
+
+
+<li status="not done" style="line-height: 2em;" task_id="3"
+    sort_index="0" owner="admin" id="task_3">
+
+<span class="taskitem" style="padding-left: 15px;" depth="1">
+
+<img src="/images/blank.png" id="collapseButton_3"
+     onclick="toggleCollapse(3)" />
+
+<!-- drag handle -->
+<span>
+<img class="handle" src="/images/file.png" id="handle_3">
+</span>
+
+<!-- title -->
+<a href="/task/view/3" title="">
+<span class="uncompleted-task sub-task" id="title_3">debug</span></a>
+
+</span>
+
+<!-- the status -->
+
+<span class="status-column" id="status-form_3"><select id="status_3" method="post" name="status" onchange="changeStatus(&quot;/task/change_status/3&quot;,3)" originalvalue="0"><option value="not done" selected="selected">not done</option>
+<option value="done">done</option></select></span>
+
+<span class="status-column" style="display:none;"
+      id="label_3">not done</span>
+
+
+</form>
+
+<!-- end status -->
+
+<!-- deadline -->
+
+<span class="deadline-column"></span>
+
+<!-- owner -->
+
+<span class="assigned-column">admin</span>
+
+<!-- creator -->
+<span class="creator-column">admin</span>
+
+<!-- subtasks -->
+
+<ul id="xtasks" class="task_list">
+</ul>
+
+</li>
+
+
+
+
+
+
+
+<li status="not done" style="line-height: 2em;" task_id="2"
+    sort_index="1" owner="" id="task_2">
+
+<span class="taskitem" style="padding-left: 15px;" depth="1">
+
+<img src="/images/blank.png" id="collapseButton_2"
+     onclick="toggleCollapse(2)" />
+
+<!-- drag handle -->
+<span>
+<img class="handle" src="/images/file.png" id="handle_2">
+</span>
+
+<!-- title -->
+<a href="/task/view/2" title="">
+<span class="uncompleted-task sub-task" id="title_2">load test data</span></a>
+
+</span>
+
+<!-- the status -->
+
+<span class="status-column" id="status-form_2"><select id="status_2" method="post" name="status" onchange="changeStatus(&quot;/task/change_status/2&quot;,2)" originalvalue="0"><option value="not done" selected="selected">not done</option>
+<option value="done">done</option></select></span>
+
+<span class="status-column" style="display:none;"
+      id="label_2">not done</span>
+
+
+</form>
+
+<!-- end status -->
+
+<!-- deadline -->
+
+<span class="deadline-column"></span>
+
+<!-- owner -->
+
+<span class="assigned-column">unassigned</span>
+
+<!-- creator -->
+<span class="creator-column">admin</span>
+
+<!-- subtasks -->
+
+<ul id="xtasks" class="task_list">
+</ul>
+
+</li>
+
+
+
+</ul>
+
+</li>
+
+    
+  
+</ul>
+
+</span>
+
+<!-- the create setup -->
+
+
+
+<!-- add a new subtask -->
+<div id="create_section">
+
+<p id="show_create">
+<a onclick="hideCreate();return false;"
+   href="/task/show_create/1?task_listID=1">Add a new task.</a>
+</p>
+
+<a name="create_anchor" id="create_anchor" />
+
+<div id="create" style="display:none;">
+
+
+<form method="post" action="/task/create/1">
+
+<table>
+<tr><td>
+<span class="row-heading">List:</span></td><td>
+<select id="task_listID" name="task_listID"><option value="1" selected="selected">deliverance</option></select>
+<br />
+</td></tr>
+
+<tr><td>
+<span class="row-heading">Parent: </span></td><td>
+<select id="parentID" name="parentID"><option value="0">No parent task</option>
+<option value="1">nycsr</option>
+<option value="3">debug</option>
+<option value="2">load test data</option></select></td></tr>
+
+
+
+<tr><td><label class="row-heading" for="title">Title:</label></td>
+<td><input id="title" name="title" type="text" /></td></tr>
+
+<tr><td><label class="row-heading" for="text">Description:</label></td>
+<td><textarea cols="80" id="text" name="text" rows="10"></textarea>
+</td></tr>
+
+<tr><td><label class="row-heading" for="deadline.date">Deadline:</label></td>
+<td>
+
+    <div id="dateBocks">
+      <script type="text/javascript">
+        var oldtaskDeadlineDateBocksObj = new DateBocks(
+          {dateBocksElementId : 'oldtaskDeadlineDateBocks'}
+        );
+      </script>
+      <ul>
+        <li class="dateBocksInput"><input id="oldtaskDeadlineDateBocks" name="deadline.date" onChange="oldtaskDeadlineDateBocksObj.magicDate();" onClick="this.select();" onKeyPress="oldtaskDeadlineDateBocksObj.keyObserver(event, 'parse'); return oldtaskDeadlineDateBocksObj.keyObserver(event, 'return');" type="text" /></li>
+        <li class="dateBocksIcon"><img alt="Calendar" id="oldtaskDeadlineDateBocksButton" src="/images/icon-calendar.gif" style="cursor: pointer;" /></li>
+        <li class="dateBocksHelp"><img alt="Help" id="oldtaskDeadlineDateBocksHelp" src="/images/icon-help.gif" style="cursor: pointer" /></li>
+      </ul>
+      <div id="dateBocksMessage"><div id="oldtaskDeadlineDateBocksMsg"></div></div>
+      <script type="text/javascript">
+        oldtaskDeadlineDateBocksObj.setDefaultFormatMessage();
+        
+        Calendar.setup({inputField : 'oldtaskDeadlineDateBocks',help : 'oldtaskDeadlineDateBocksHelp',singleClick : true,ifFormat : oldtaskDeadlineDateBocksObj.calendarIfFormat,align : oldtaskDeadlineDateBocksObj.calendarAlign,button : 'oldtaskDeadlineDateBocksButton'});
+        
+      </script>
+    </div>
+
+<input id="deadline.time" name="deadline.time" type="text" value="" /><br />
+<small> hh:mm:ss</small>
+</td></tr>
+
+
+<tr><td><label class="row-heading" for="private">Private:</label></td>
+<td><input id="private" name="private" type="checkbox" value="1" />
+<!--input name="private" id="private" type="checkbox"--></td></tr>
+
+
+
+<tr><td>
+<div class="row-heading">Assign task to:</div></td><td>
+<span class="autocomplete">
+<input autocomplete="off" id="owner" name="owner" size="30" type="text" value="" />
+<div class="auto_complete" id="owner_auto_complete"></div>
+<script type="text/javascript">new Ajax.Autocompleter('owner', 'owner_auto_complete', 
+'/task/auto_complete_for_owner/', {})</script>
+</span></td></tr>
+
+
+
+</table>
+<input type="submit" name="create" value="create">
+</form>
+
+
+<p>
+<a href="#nevermind" onclick="$('create').hide(); $('show_create').show(); return false;">Nevermind</a>
+</p>
+</div>
+</div>
+
+
+
+<!-- ----------------------------- -->
+
+<hr />
+<br />
+
+
+<a href="/tasklist/show_update/1">Edit list settings</a>
+|
+
+
+<a href="/tasklist/index/1">Back to list of lists</a>
+
+
+</body>
+</html>

Added: z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/expected.html
==============================================================================
--- (empty file)
+++ z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/expected.html	Tue Oct 17 18:35:40 2006
@@ -0,0 +1,418 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="/stylesheets/list.css" media="screen" rel="Stylesheet" type="text/css">
+<link href="/stylesheets/datebocks_engine.css" media="screen" rel="Stylesheet" type="text/css">
+<link href="/stylesheets/calendar-blue.css" media="screen" rel="Stylesheet" type="text/css">
+<meta name="author" content="New York City Streets Renaissance">
+<meta name="description" content="">
+<meta name="keywords" content="">
+<meta name="generator" content="BBEdit 8.2">
+<meta name="MSSmartTagsPreventParsing" content="true">
+<meta name="robots" content="all">
+<style type="text/css" media="screen">@import url(http://www.nycsr.org/css/style.css);</style>
+<style type="text/css" media="screen">@import url(http://www.nycsr.org/css/nav.css);</style>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+		startList = function() {
+			if (document.all&&document.getElementById) {
+				navRoot = document.getElementById("menu");
+				for (i=0; i<navRoot.childNodes.length; i++) {
+					node = navRoot.childNodes[i];
+					if (node.nodeName=="LI") {
+						node.onmouseover=function() {
+							this.className+=" over";
+						}
+						node.onmouseout=function() {
+							this.className=this.className.replace(" over", "");
+						}
+					}
+				}
+			}
+		}
+		window.onload=startList;
+		
+		//--><!]]>
+	</script><script src="/javascripts/prototype.js" type="text/javascript"></script><script src="/javascripts/effects.js" type="text/javascript"></script><script src="/javascripts/dragdrop.js" type="text/javascript"></script><script src="/javascripts/task.js" type="text/javascript"></script><script src="/javascripts/builder.js" type="text/javascript"></script><script src="/javascripts/controls.js" type="text/javascript"></script><script src="/javascripts/editable_list.js" type="text/javascript"></script><script src="/javascripts/datebocks_engine.js" type="text/javascript"></script><script src="/javascripts/calendar.js" type="text/javascript"></script><script src="/javascripts/calendar-setup.js" type="text/javascript"></script><script src="/javascripts/calendar-en.js" type="text/javascript"></script><script src="/javascripts/datebocks_window.js" type="text/javascript"></script><title>
+Todo list
+</title>
+</head>
+<body id="page-nyc" class="gallery">
+<!-- Header --><div id="header"><h1 class="logo"><a href="http://www.nycsr.org/"><span>The New York City Streets Renaissance</span></a></h1></div>
+<!-- / Header --><hr>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+startList = function() {
+	if (document.all&&document.getElementById) {
+		navRoot = document.getElementById("menu");
+		for (i=0; i<navRoot.childNodes.length; i++) {
+			node = navRoot.childNodes[i];
+			if (node.nodeName=="LI") {
+				node.onmouseover=function() {
+					this.className+=" over";
+				}
+				node.onmouseout=function() {
+					this.className=this.className.replace(" over", "");
+				}
+			}
+		}
+	}
+}
+window.onload=startList;
+
+//--><!]]></script><!-- Top Level Links --><div id="toplevel"><ul class="links">
+<li id="top-home"><a href="http://www.nycsr.org/"><strong><span>Home Page</span></strong></a></li>
+<li id="top-join"><a href="http://www.nycsr.org/involved/join.php"><strong><span>Join Us</span></strong></a></li>
+</ul></div>
+<!-- / Top Level Links --><!-- Navigation Bar --><div id="nav">
+<ul id="menu" class="tabs">
+<li id="nav-who">
+<a href="http://www.nycsr.org/who/"><strong><span>Who We Are</span></strong></a><ul class="sub">
+<li><a href="http://www.nycsr.org/who/supporters.php"><span>Supporters List</span></a></li>
+<li><a href="http://www.nycsr.org/who/contact.php"><span>Contact Us</span></a></li>
+</ul>
+</li>
+<li id="nav-nyc" class="selected">
+<a href="http://www.nycsr.org/nyc/"><strong><span>New York Streets</span></strong></a><ul class="sub">
+<li><a href="http://www.nycsr.org/nyc/truth.php"><span>The Truth About Traffic</span></a></li>
+<li><a href="http://www.nycsr.org/nyc/broken.php"><span>Broken Streets</span></a></li>
+<li><a href="http://www.nycsr.org/nyc/building.php"><span>Building on Progress</span></a></li>
+<li><a href="http://www.nycsr.org/nyc/video.php"><span>Video Gallery</span></a></li>
+<li><a href="http://www.nycsr.org/nyc/photo.php"><span>Photo Gallery</span></a></li>
+</ul>
+</li>
+<li id="nav-lessons">
+<a href="http://www.nycsr.org/lessons/"><strong><span>Global Lessons</span></strong></a><ul class="sub">
+<li><a href="http://www.nycsr.org/lessons/chicago.php"><span>Chicago</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/philadelphia.php"><span>Philadelphia</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/london.php"><span>London</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/paris.php"><span>Paris</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/copenhagen.php"><span>Copenhagen</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/great.php"><span>What Makes a Great Street?</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/benefits.php"><span>The Benefits of Great Streets</span></a></li>
+<li><a href="http://www.nycsr.org/lessons/photo.php"><span>Photo Gallery</span></a></li>
+</ul>
+</li>
+<li id="nav-involved">
+<a href="http://www.nycsr.org/involved/"><strong><span>Get Involved</span></strong></a><ul class="sub">
+<li><a href="http://www.nycsr.org/involved/join.php"><span>Join Us</span></a></li>
+<li><a href="http://www.nycsr.org/involved/ways.php"><span>Ways to Get Involved</span></a></li>
+<li><a href="http://www.nycsr.org/involved/resources.php"><span>Resources</span></a></li>
+</ul>
+</li>
+<li id="nav-events"><a href="http://www.nycsr.org/events/"><strong><span>Events</span></strong></a></li>
+</ul>
+<div class="clear"></div>
+</div>
+<!-- / Navigation Bar --><hr>
+<!-- Container --><div id="container">
+<!-- Body --><div id="body">
+<div style="background-color:#edf">
+Logged in as: admin
+<span style="position:absolute;right:2ex;">Project: theproject</span>
+</div>
+This is list deliverance.<br><a id="reorder_button" href="javascript:modeSwitch();">
+    <span id="modeName">Reorder</span>
+  </a><br><br><span>
+
+<!-- list headers -->
+
+Task name
+<span class="status-column">Status <a href="#sortbydeadline" class="sortarrow" onclick="sortBy('status'); return false;">↓</a></span>
+<span class="deadline-column">Deadline <a href="#sortbydeadline" class="sortarrow" onclick="sortBy('deadline'); return false;">↓</a></span>
+<span class="assigned-column">Assigned to<a href="#sortbyowner" class="sortarrow" onclick="sortBy('owner'); return false;">↓</a></span>
+<span class="creator-column">Created by</span>
+
+<!-- the actual task list -->
+
+<ul id="tasks" class="task_list">
+<li status="not done" style="line-height: 2em;" task_id="1" sort_index="0" deadline="2006-10-14 17:00:00" owner="" id="task_1">
+
+<span class="taskitem" style="padding-left: 0px;" depth="0">
+
+<img src="/images/plus.png" id="collapseButton_1" onclick="toggleCollapse(1)"><!-- drag handle --><span>
+<img class="handle" src="/images/folder_open.png" id="handle_1"></span>
+
+<!-- title -->
+<a href="/task/view/1" title="">
+<span class="uncompleted-task root-task" id="title_1">nycsr</span></a>
+
+</span>
+
+<!-- the status -->
+
+<span class="status-column" id="status-form_1"><select id="status_1" method="post" name="status" onchange='changeStatus("/task/change_status/1",1)' originalvalue="0"><option value="not done" selected>not done</option>
+<option value="done">done</option></select></span>
+
+<span class="status-column" style="display:none;" id="label_1">not done</span>
+
+
+
+
+<!-- end status -->
+
+<!-- deadline -->
+
+<span class="deadline-column">14 October, 2006</span>
+
+<!-- owner -->
+
+<span class="assigned-column">unassigned</span>
+
+<!-- creator -->
+<span class="creator-column">admin</span>
+
+<!-- subtasks -->
+
+<ul id="xtasks" class="task_list">
+<li status="not done" style="line-height: 2em;" task_id="3" sort_index="0" owner="admin" id="task_3">
+
+<span class="taskitem" style="padding-left: 15px;" depth="1">
+
+<img src="/images/blank.png" id="collapseButton_3" onclick="toggleCollapse(3)"><!-- drag handle --><span>
+<img class="handle" src="/images/file.png" id="handle_3"></span>
+
+<!-- title -->
+<a href="/task/view/3" title="">
+<span class="uncompleted-task sub-task" id="title_3">debug</span></a>
+
+</span>
+
+<!-- the status -->
+
+<span class="status-column" id="status-form_3"><select id="status_3" method="post" name="status" onchange='changeStatus("/task/change_status/3",3)' originalvalue="0"><option value="not done" selected>not done</option>
+<option value="done">done</option></select></span>
+
+<span class="status-column" style="display:none;" id="label_3">not done</span>
+
+
+
+
+<!-- end status -->
+
+<!-- deadline -->
+
+<span class="deadline-column"></span>
+
+<!-- owner -->
+
+<span class="assigned-column">admin</span>
+
+<!-- creator -->
+<span class="creator-column">admin</span>
+
+<!-- subtasks -->
+
+<ul id="xtasks" class="task_list"></ul>
+</li>
+
+
+
+
+
+
+
+<li status="not done" style="line-height: 2em;" task_id="2" sort_index="1" owner="" id="task_2">
+
+<span class="taskitem" style="padding-left: 15px;" depth="1">
+
+<img src="/images/blank.png" id="collapseButton_2" onclick="toggleCollapse(2)"><!-- drag handle --><span>
+<img class="handle" src="/images/file.png" id="handle_2"></span>
+
+<!-- title -->
+<a href="/task/view/2" title="">
+<span class="uncompleted-task sub-task" id="title_2">load test data</span></a>
+
+</span>
+
+<!-- the status -->
+
+<span class="status-column" id="status-form_2"><select id="status_2" method="post" name="status" onchange='changeStatus("/task/change_status/2",2)' originalvalue="0"><option value="not done" selected>not done</option>
+<option value="done">done</option></select></span>
+
+<span class="status-column" style="display:none;" id="label_2">not done</span>
+
+
+
+
+<!-- end status -->
+
+<!-- deadline -->
+
+<span class="deadline-column"></span>
+
+<!-- owner -->
+
+<span class="assigned-column">unassigned</span>
+
+<!-- creator -->
+<span class="creator-column">admin</span>
+
+<!-- subtasks -->
+
+<ul id="xtasks" class="task_list"></ul>
+</li>
+
+
+
+</ul>
+</li>
+
+    
+  
+</ul></span>
+
+<!-- the create setup -->
+
+
+
+<!-- add a new subtask -->
+<div id="create_section">
+
+<p id="show_create">
+<a onclick="hideCreate();return false;" href="/task/show_create/1?task_listID=1">Add a new task.</a>
+</p>
+
+<a name="create_anchor" id="create_anchor"></a>
+
+<div id="create" style="display:none;">
+
+
+<form method="post" action="/task/create/1">
+
+<table>
+<tr>
+<td>
+<span class="row-heading">List:</span>
+</td>
+<td>
+<select id="task_listID" name="task_listID"><option value="1" selected>deliverance</option></select><br>
+</td>
+</tr>
+<tr>
+<td>
+<span class="row-heading">Parent: </span>
+</td>
+<td>
+<select id="parentID" name="parentID"><option value="0">No parent task</option>
+<option value="1">nycsr</option>
+<option value="3">debug</option>
+<option value="2">load test data</option></select>
+</td>
+</tr>
+<tr>
+<td><label class="row-heading" for="title">Title:</label></td>
+<td><input id="title" name="title" type="text"></td>
+</tr>
+<tr>
+<td><label class="row-heading" for="text">Description:</label></td>
+<td><textarea cols="80" id="text" name="text" rows="10"></textarea></td>
+</tr>
+<tr>
+<td><label class="row-heading" for="deadline.date">Deadline:</label></td>
+<td>
+
+    <div id="dateBocks">
+      <script type="text/javascript">
+        var oldtaskDeadlineDateBocksObj = new DateBocks(
+          {dateBocksElementId : 'oldtaskDeadlineDateBocks'}
+        );
+      </script><ul>
+<li class="dateBocksInput"><input id="oldtaskDeadlineDateBocks" name="deadline.date" onchange="oldtaskDeadlineDateBocksObj.magicDate();" onclick="this.select();" onkeypress="oldtaskDeadlineDateBocksObj.keyObserver(event, 'parse'); return oldtaskDeadlineDateBocksObj.keyObserver(event, 'return');" type="text"></li>
+        <li class="dateBocksIcon"><img alt="Calendar" id="oldtaskDeadlineDateBocksButton" src="/images/icon-calendar.gif" style="cursor: pointer;"></li>
+        <li class="dateBocksHelp"><img alt="Help" id="oldtaskDeadlineDateBocksHelp" src="/images/icon-help.gif" style="cursor: pointer"></li>
+      </ul>
+<div id="dateBocksMessage"><div id="oldtaskDeadlineDateBocksMsg"></div></div>
+      <script type="text/javascript">
+        oldtaskDeadlineDateBocksObj.setDefaultFormatMessage();
+        
+        Calendar.setup({inputField : 'oldtaskDeadlineDateBocks',help : 'oldtaskDeadlineDateBocksHelp',singleClick : true,ifFormat : oldtaskDeadlineDateBocksObj.calendarIfFormat,align : oldtaskDeadlineDateBocksObj.calendarAlign,button : 'oldtaskDeadlineDateBocksButton'});
+        
+      </script>
+</div>
+
+<input id="deadline.time" name="deadline.time" type="text" value=""><br><small> hh:mm:ss</small>
+</td>
+</tr>
+<tr>
+<td><label class="row-heading" for="private">Private:</label></td>
+<td>
+<input id="private" name="private" type="checkbox" value="1"><!--input name="private" id="private" type="checkbox"-->
+</td>
+</tr>
+<tr>
+<td>
+<div class="row-heading">Assign task to:</div>
+</td>
+<td>
+<span class="autocomplete">
+<input autocomplete="off" id="owner" name="owner" size="30" type="text" value=""><div class="auto_complete" id="owner_auto_complete"></div>
+<script type="text/javascript">new Ajax.Autocompleter('owner', 'owner_auto_complete', 
+'/task/auto_complete_for_owner/', {})</script></span>
+</td>
+</tr>
+</table>
+<input type="submit" name="create" value="create">
+</form>
+
+
+<p>
+<a href="#nevermind" onclick="$('create').hide(); $('show_create').show(); return false;">Nevermind</a>
+</p>
+</div>
+</div>
+
+
+
+<!-- ----------------------------- -->
+
+<hr>
+<br><a href="/tasklist/show_update/1">Edit list settings</a>
+|
+
+
+<a href="/tasklist/index/1">Back to list of lists</a>
+
+
+</div>
+<!-- / Body --><div class="clear"></div>
+</div>
+<!-- / Container --><hr>
+<!-- Footer --><div id="footer">
+<p class="links">
+		[ 
+		<a href="http://www.nycsr.org/"><span>Home</span></a> 
+		| 
+		<a href="http://www.nycsr.org/who/"><span>Who We Are</span></a> 
+		| 
+		<a href="http://www.nycsr.org/nyc/"><span>New York Lessons</span></a> 
+		| 
+		<a href="http://www.nycsr.org/lessons/"><span>Global Lessons</span></a> 
+		| 
+		<a href="http://www.nycsr.org/involved/"><span>Get Involved</span></a> 
+		| 
+		<a href="http://www.nycsr.org/events/"><span>Events</span></a> 
+		| 
+		<a href="http://www.nycsr.org/involved/join.php"><span>Join Us</span></a> 
+		]
+		</p>
+<p class="cc"><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://www.nycsr.org/img/logos/cc.png" class="logo"><br>
+				These works are licensed under a Creative Commons License
+			</a></p>
+<!--
+		<rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+			<Work rdf:about="">
+				<license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.5/" />
+				<dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
+			</Work>
+			<License rdf:about="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+				<permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+				<permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+				<requires rdf:resource="http://web.resource.org/cc/Notice"/>
+				<requires rdf:resource="http://web.resource.org/cc/Attribution"/>
+				<prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/>
+			</License>
+		</rdf:RDF>
+		-->
+</div>
+<!-- / Footer -->
+</body>
+</html>

Added: z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/tasktracker.xml
==============================================================================
--- (empty file)
+++ z3/deliverance/branches/packaged/deliverance/test-data/tasktracker/tasktracker.xml	Tue Oct 17 18:35:40 2006
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ 
+<rules xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="http://www.plone.org/deliverance" >
+  <prepend theme="//head" content="//head/link" onerror="ignore" /> 
+  <prepend theme="//head" content="//head/style" onerror="ignore" /> 
+  <append theme="//head" content="//head/script" onerror="ignore" />    
+  <append theme="//head" content="//head/meta" onerror="ignore"/>
+  <append-or-replace theme="//head" content="//head/title" onerror="ignore" />
+  <copy theme="//div[@id='body']" content="//body/child::node()" />
+</rules>

Modified: z3/deliverance/branches/packaged/deliverance/test_wsgi.py
==============================================================================
--- z3/deliverance/branches/packaged/deliverance/test_wsgi.py	(original)
+++ z3/deliverance/branches/packaged/deliverance/test_wsgi.py	Tue Oct 17 18:35:40 2006
@@ -8,9 +8,11 @@
 from htmlserialize import tostring
 
 static_data = os.path.join(os.path.dirname(__file__), 'test-data', 'static')
+tasktracker_data = os.path.join(os.path.dirname(__file__), 'test-data', 'tasktracker')
 nycsr_data = os.path.join(os.path.dirname(__file__), 'test-data', 'nycsr')
 
 static_app = StaticURLParser(static_data)
+tasktracker_app = StaticURLParser(tasktracker_data)
 nycsr_app = StaticURLParser(nycsr_data)
 
 def html_string_compare(astr, bstr):
@@ -51,6 +53,13 @@
     res2 = app.get('/texttest_expected.html?notheme')
     html_string_compare(res.body, res2.body)
 
+def test_tasktracker():
+    wsgi_app = DeliveranceMiddleware(tasktracker_app, 'http://www.nycsr.org/nyc/video.php', 'tasktracker.xml')
+    app = TestApp(wsgi_app)
+    res = app.get('/content.html')
+    res2 = app.get('/expected.html?notheme')
+    html_string_compare(res.body, res2.body)
+
 
 def test_xinclude():
     wsgi_app = DeliveranceMiddleware(static_app, 'xinclude_theme.html', 'xinclude_rules.xml')
@@ -59,7 +68,7 @@
     res2 = app.get('/xinclude_expected.html?notheme')
     html_string_compare(res.body, res2.body)
 
-4
+
 def test_nycsr():
     wsgi_app = DeliveranceMiddleware(nycsr_app, 'http://www.nycsr.org','nycsr.xml')
     app = TestApp(wsgi_app)


More information about the z3-checkins mailing list