[CMF-checkins] SVN: CMF_Extras/trunk/CMFCollector/ Usability
improvements:
Tres Seaver
tseaver at palladion.com
Fri Jun 29 16:54:19 EDT 2007
Log message for revision 77249:
Usability improvements:
- Added marker interfaces to collector and issue objects.
- Added RSS syndication link, which creates a feed using the
current search criteria.
- Cleaned up UI, moving search form to the top of the page and
simplifying (add a property, 'show_all_criteria', with a true
value to see all critera again).
- Removed funky green bars from UI.
Changed:
U CMF_Extras/trunk/CMFCollector/CHANGES.txt
A CMF_Extras/trunk/CMFCollector/configure.zcml
A CMF_Extras/trunk/CMFCollector/interfaces.py
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_add_issue_form.pt
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_contents.pt
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_edit_form.pt
A CMF_Extras/trunk/CMFCollector/skins/collector/collector_feed_icon.png
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_contents.pt
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_edit_form.pt
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_followup_form.pt
U CMF_Extras/trunk/CMFCollector/skins/collector/collector_macros.pt
A CMF_Extras/trunk/CMFCollector/skins/collector/issues_as_rss.pt
A CMF_Extras/trunk/CMFCollector/skins/collector/query_rss.py
A CMF_Extras/trunk/CMFCollector/skins/collector/rssScrubForm.py
D CMF_Extras/trunk/CMFCollector/tests/test_all.py
-=-
Modified: CMF_Extras/trunk/CMFCollector/CHANGES.txt
===================================================================
--- CMF_Extras/trunk/CMFCollector/CHANGES.txt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/CHANGES.txt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -4,6 +4,15 @@
Features
+ - Added marker interfaces to collector and issue objects.
+
+ - Added RSS syndication link, which creates a feed using the
+ current search criteria.
+
+ - Cleaned up UI, moving search form to the top of the page and
+ simplifying (add a property, 'show_all_criteria', with a true
+ value to see all critera again).
+
- Added a GenericSetup extension profile for installing the
collector types, skin, and workflow.
@@ -15,6 +24,8 @@
Bug fixes
+ - Removed funky green bars from UI.
+
- Ripped out the misfeature of having the ISSUE_TRANSCRIPT subobject
catalog itself separately from the issue.
Added: CMF_Extras/trunk/CMFCollector/configure.zcml
===================================================================
--- CMF_Extras/trunk/CMFCollector/configure.zcml (rev 0)
+++ CMF_Extras/trunk/CMFCollector/configure.zcml 2007-06-29 20:54:19 UTC (rev 77249)
@@ -0,0 +1,17 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ xmlns:five="http://namespaces.zope.org/five"
+ >
+
+ <five:implements
+ class=".Collector.Collector"
+ interface=".interfaces.ICollector"
+ />
+
+ <five:implements
+ class=".CollectorIssue.CollectorIssue"
+ interface=".interfaces.ICollectorIssue"
+ />
+
+</configure>
Added: CMF_Extras/trunk/CMFCollector/interfaces.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/interfaces.py (rev 0)
+++ CMF_Extras/trunk/CMFCollector/interfaces.py 2007-06-29 20:54:19 UTC (rev 77249)
@@ -0,0 +1,13 @@
+""" Collector interfaces
+
+$Id$
+"""
+from zope.interface import Interface
+
+class ICollector(Interface):
+ """ Marker interface for collectors.
+ """
+
+class ICollectorIssue(Interface):
+ """ Marker interface for collector issues.
+ """
Property changes on: CMF_Extras/trunk/CMFCollector/interfaces.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_add_issue_form.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_add_issue_form.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_add_issue_form.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -34,7 +34,7 @@
<table class="FormLayout">
- <tr bgcolor="#ccffcc">
+ <tr bgcolor="#cccccc">
<td colspan="5" align="center">
<font size="+1"> <strong> Submit A New Issue </strong> </font>
</td>
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_contents.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_contents.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_contents.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -50,8 +50,170 @@
next batch/next|nothing;
last_batch python: max(int(here.length()) - BATCHSIZE, 1)">
+ <form action="RETURNHERE" method="get"
+ tal:attributes="action python: here.absolute_url()
+ + '/collector_contents'"
+ tal:define="uniquevals python:
+ here.get_internal_catalog().uniqueValuesFor;
+ ordered nocall: here/collector_ordered_traits">
+ <input type="hidden" name="searching" value="yep">
+
+ <table tal:define="complex context/show_all_criteria | nothing;
+ columns python: complex and 7 or 3;
+ ">
+ <tr>
+ <td align="center">
+ <input type="Submit" value="Search">
+ </td>
+ <td colspan="7"
+ tal:attributes="colspan columns">
+ <input type="text" name="SearchableText" size="40"
+ value="TEXT"
+ tal:attributes="value request/SearchableText|nothing">
+ <span
+ metal:use-macro="context/collector_macros/macros/rss_link" />
+ </td>
+ </tr>
+ <tr>
+ <td />
+ <th align="center"> Status </th>
+ <th align="center"
+ tal:condition="complex"> Requester</th>
+ <th align="center"> Assigned </th>
+ <th align="center"
+ tal:condition="complex"> Security Related </th>
+ <th align="center"
+ tal:condition="complex"> Topic </th>
+ <th align="center"
+ tal:condition="complex"> Classification </th>
+ <th align="center"> Importance </th>
+ </tr>
+ <tr valign="top">
+ <td />
+ <td align="center">
+ <select name="status:list:ignore_empty" multiple size="SIZE"
+ tal:define="values here/collector_issue_trim_states"
+ tal:attributes="size python: min(max(len(values), 3), 5)">
+ <option value=""
+ tal:repeat="status values"
+ tal:attributes="value status;
+ selected python: status
+ in request.get('status', [])"
+ tal:content="status">
+ </option>
+ </select>
+ </td>
+ <td align="center"
+ tal:condition="complex">
+ <select name="Creator:list:ignore_empty" multiple size="SIZE"
+ tal:define="values python: uniquevals('Creator')"
+ tal:attributes="size python: min(max(len(values), 3),
+ 5)">
+ <option value=""
+ tal:repeat="creator values"
+ tal:attributes="
+ value creator;
+ selected python: creator
+ in request.get('Creator', [])"
+ tal:content="creator">
+ </option>
+ </select>
+ </td>
+ <td align="center">
+ <select name="supporters:list:ignore_empty" multiple size="SIZE"
+ tal:define="values python:
+ ordered(uniquevals('assigned_to'),
+ here.supporters)"
+ tal:attributes="size python: min(max(len(values), 3),
+ 5)">
+ <option value=""
+ tal:repeat="supporter values"
+ tal:attributes="
+ value supporter;
+ selected python: supporter
+ in request.get('supporters', [])"
+ tal:content="supporter">
+ </option>
+ </select>
+ </td>
+ <td align="center"
+ tal:condition="complex">
+ <select name="security_related:list:ignore_empty" size="3" multiple
+ tal:define="was python: request.get('security_related',
+ [])">
+ <option value="No"
+ tal:attributes="selected python: 'No' in was">
+ No </option>
+ <option value="Yes"
+ tal:attributes="selected python: 'Yes' in was">
+ Yes </option>
+ </select>
+ </td>
+
+ <td align="center"
+ tal:condition="complex">
+ <select name="topics:list:ignore_empty" multiple size="SIZE"
+ tal:define="values python: ordered(uniquevals('topic'),
+ here.topics)"
+ tal:attributes="size python: min(max(len(values), 3), 5)">
+ <option value=""
+ tal:repeat="topic values"
+ tal:attributes="
+ value topic;
+ selected python: topic
+ in request.get('topics', [])"
+ tal:content="topic">
+ </option>
+ </select>
+ </td>
+ <td align="center"
+ tal:condition="complex">
+ <select name="classifications:list:ignore_empty" multiple size="SIZE"
+ tal:define="values python:
+ ordered(uniquevals('classification'),
+ here.classifications)"
+ tal:attributes="size python: min(max(len(values), 3),
+ 5)">
+ <option value=""
+ tal:repeat="classification values"
+ tal:attributes="
+ value classification;
+ selected python: classification
+ in request.get('classifications',
+ [])"
+ tal:content="classification">
+ </option>
+ </select>
+ </td>
+ <td align="center">
+ <select name="importances:list:ignore_empty" multiple size="SIZE"
+ tal:define="values python:
+ ordered(uniquevals('importance'),
+ here.importances)"
+ tal:attributes="size python: min(max(len(values), 3),
+ 5)">
+ <option value=""
+ tal:repeat="importance values"
+ tal:attributes="
+ value importance;
+ selected python: importance
+ in request.get('importances',
+ [])"
+ tal:content="importance">
+ </option>
+ </select>
+ </td>
+ <td>
+ <input type="reset" value="Reset" />
+ </td>
+
+ </tr>
+ </table>
+
+ </form>
+
<table class="FormLayout" cellspacing="0" border="0">
- <tr bgcolor="#ccffcc">
+ <tr bgcolor="#cccccc">
<td colspan="3">
<div metal:use-macro="here/collector_macros/macros/issue_batch_nav">
ISSUE-BATCH NAVIGATION
@@ -191,7 +353,7 @@
</tbody>
- <tr bgcolor="#ccffcc"
+ <tr bgcolor="#cccccc"
tal:condition="batch">
<td colspan="3">
<div metal:use-macro="here/collector_macros/macros/issue_batch_nav">
@@ -201,160 +363,6 @@
</tr>
</table>
- <form action="RETURNHERE" method="get"
- tal:attributes="action python: here.absolute_url()
- + '/collector_contents'"
- tal:define="uniquevals python:
- here.get_internal_catalog().uniqueValuesFor;
- ordered nocall: here/collector_ordered_traits">
- <input type="hidden" name="searching" value="yep">
-
- <table>
- <tr>
- <td align="center">
- <input type="Submit" value="Search">
- </td>
- <td>
- <input type="reset" value="Reset">
- </td>
- </tr>
- <tr>
- <td COLSPAN="4">
- <strong>Any text:</strong>
- <input type="text" name="SearchableText" size="40"
- value="TEXT"
- tal:attributes="value request/SearchableText|nothing">
- </td>
- </tr>
- <tr>
- <th align="center"> Status </th>
- <th align="center"> Requester</th>
- <th align="center"> Assigned </th>
- <th align="center"> Security Related </th>
- </tr>
- <tr>
- <td align="center">
- <select name="status:list:ignore_empty" multiple size="SIZE"
- tal:define="values here/collector_issue_trim_states"
- tal:attributes="size python: min(max(len(values), 3), 5)">
- <option value=""
- tal:repeat="status values"
- tal:attributes="value status;
- selected python: status
- in request.get('status', [])"
- tal:content="status">
- </option>
- </select>
- </td>
- <td align="center">
- <select name="Creator:list:ignore_empty" multiple size="SIZE"
- tal:define="values python: uniquevals('Creator')"
- tal:attributes="size python: min(max(len(values), 3),
- 5)">
- <option value=""
- tal:repeat="creator values"
- tal:attributes="
- value creator;
- selected python: creator
- in request.get('Creator', [])"
- tal:content="creator">
- </option>
- </select>
- </td>
- <td align="center">
- <select name="supporters:list:ignore_empty" multiple size="SIZE"
- tal:define="values python:
- ordered(uniquevals('assigned_to'),
- here.supporters)"
- tal:attributes="size python: min(max(len(values), 3),
- 5)">
- <option value=""
- tal:repeat="supporter values"
- tal:attributes="
- value supporter;
- selected python: supporter
- in request.get('supporters', [])"
- tal:content="supporter">
- </option>
- </select>
- </td>
- <td align="center">
- <select name="security_related:list:ignore_empty" size="3" multiple
- tal:define="was python: request.get('security_related',
- [])">
- <option value="No"
- tal:attributes="selected python: 'No' in was">
- No </option>
- <option value="Yes"
- tal:attributes="selected python: 'Yes' in was">
- Yes </option>
- </select>
- </td>
-
- </tr>
- <tr>
- <th align="center"> Topic </th>
- <th align="center"> Classification </th>
- <th align="center"> Importance </th>
- </tr>
- <tr>
- <td align="center">
- <select name="topics:list:ignore_empty" multiple size="SIZE"
- tal:define="values python: ordered(uniquevals('topic'),
- here.topics)"
- tal:attributes="size python: min(max(len(values), 3), 5)">
- <option value=""
- tal:repeat="topic values"
- tal:attributes="
- value topic;
- selected python: topic
- in request.get('topics', [])"
- tal:content="topic">
- </option>
- </select>
- </td>
- <td align="center">
- <select name="classifications:list:ignore_empty" multiple size="SIZE"
- tal:define="values python:
- ordered(uniquevals('classification'),
- here.classifications)"
- tal:attributes="size python: min(max(len(values), 3),
- 5)">
- <option value=""
- tal:repeat="classification values"
- tal:attributes="
- value classification;
- selected python: classification
- in request.get('classifications',
- [])"
- tal:content="classification">
- </option>
- </select>
- </td>
- <td align="center">
- <select name="importances:list:ignore_empty" multiple size="SIZE"
- tal:define="values python:
- ordered(uniquevals('importance'),
- here.importances)"
- tal:attributes="size python: min(max(len(values), 3),
- 5)">
- <option value=""
- tal:repeat="importance values"
- tal:attributes="
- value importance;
- selected python: importance
- in request.get('importances',
- [])"
- tal:content="importance">
- </option>
- </select>
- </td>
-
- </tr>
- </table>
-
-</form>
-
</div>
</div>
</body>
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_edit_form.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_edit_form.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_edit_form.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -27,7 +27,7 @@
<form action="collector_edit" method="post">
<table class="FormLayout" width="100%">
- <tr bgcolor="#ccffcc">
+ <tr bgcolor="#cccccc">
<td align="center" colspan="4">
<font size="+1"> <strong> Configure Collector </strong> </font>
</td>
Added: CMF_Extras/trunk/CMFCollector/skins/collector/collector_feed_icon.png
===================================================================
(Binary files differ)
Property changes on: CMF_Extras/trunk/CMFCollector/skins/collector/collector_feed_icon.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_contents.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_contents.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_contents.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -28,7 +28,7 @@
<table tal:define="entries here/action_number;
ending python: (entries == 1 and 'y') or 'ies'">
- <tr bgcolor="#ccffcc">
+ <tr bgcolor="#cccccc">
<td colspan="2" align="center">
<font size="+1">
<strong>
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_edit_form.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_edit_form.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_edit_form.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -33,7 +33,7 @@
<table width="100%">
- <tr bgcolor="ccffcc">
+ <tr bgcolor="cccccc">
<td>
<font size="+1">
<strong>
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_followup_form.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_followup_form.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_issue_followup_form.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -44,7 +44,7 @@
<table tal:define="actions_pairs here/valid_actions_pairs"
border="0" cellspacing="0">
- <tr bgcolor="#ccffcc">
+ <tr bgcolor="#cccccc">
<td NOWRAP colspan="DEPENDS"
tal:attributes="colspan python: (here.no_submitter_email() and 1)
or 3">
Modified: CMF_Extras/trunk/CMFCollector/skins/collector/collector_macros.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/collector_macros.pt 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/collector_macros.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -343,5 +343,16 @@
</div> <!-- End macro: add_artifacts_excerpt -->
+ <span metal:define-macro="rss_link"
+ tal:define="make_query nocall: modules/ZTUtils/make_query;
+ qs python:make_query(context.rssScrubForm(request.form));
+ ">
+ <a href="#"
+ tal:attributes="href string:${context/absolute_url}/query_rss?${qs}"
+ ><img alt="RSS" title="RSS" border="0"
+ tal:attributes="src string:${portal_url}/collector_feed_icon.png"
+ /></a>
+ </span>
+
</body>
</html>
Added: CMF_Extras/trunk/CMFCollector/skins/collector/issues_as_rss.pt
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/issues_as_rss.pt (rev 0)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/issues_as_rss.pt 2007-06-29 20:54:19 UTC (rev 77249)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<rdf:RDF
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+ xmlns="http://purl.org/rss/1.0/">
+ <channel rdf:about="URL"
+ tal:define="channel options/collector"
+ tal:attributes="rdf:about channel/url">
+ <title tal:content="channel/title">TITLE</title>
+ <link tal:content="channel/url">URL</link>
+ <description
+ tal:content="channel/description">DESCRIPTION</description>
+ <image rdf:resource="logo.png" />
+ <sy:updatePeriod
+ tal:content="channel/period">PERIOD</sy:updatePeriod>
+ <sy:updateFrequency
+ tal:content="channel/frequency">N</sy:updateFrequency>
+ <sy:updateBase
+ tal:content="channel/base">YYYY-MM-DDTHH:MM:SSZ</sy:updateBase>
+ <items>
+ <rdf:Seq>
+ <rdf:li resource="URL"
+ tal:repeat="item options/issues"
+ tal:attributes="resource item/url" />
+ </rdf:Seq>
+ </items>
+ </channel>
+ <item rdf:about="URL"
+ tal:repeat="item options/issues"
+ tal:attributes="rdf:about item/url">
+ <dc:date tal:content="item/date">YYYY-MM-DDTHH:MM:SSZ</dc:date>
+ <title tal:content="item/title">TITLE</title>
+ <link tal:content="item/url">URL</link>
+ <description
+ tal:condition="item/description"
+ tal:content="item/description">DESCRIPTION</description>
+ <dc:subject
+ tal:repeat="subject item/subjects"
+ tal:content="subject">SUBJECT</dc:subject>
+ <dc:creator
+ tal:repeat="creator item/creators"
+ tal:content="creator">CREATOR</dc:creator>
+ <dc:contributor
+ tal:repeat="contributor item/contributors"
+ tal:content="contributor">CONTRIBUTOR</dc:contributor>
+ </item>
+</rdf:RDF>
Property changes on: CMF_Extras/trunk/CMFCollector/skins/collector/issues_as_rss.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: CMF_Extras/trunk/CMFCollector/skins/collector/query_rss.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/query_rss.py (rev 0)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/query_rss.py 2007-06-29 20:54:19 UTC (rev 77249)
@@ -0,0 +1,47 @@
+##Script (Python) "query_rss"
+##Title: Return a given query as RSS
+##parameters=REQUEST
+
+REQUEST.RESPONSE.setHeader('Content-Type', 'application/rss+xml')
+
+kw = REQUEST.form
+
+options = {}
+
+options['collector'] = {'url': context.absolute_url(),
+ 'title': context.Title(),
+ 'description': context.Description(),
+ 'base': context.ZopeTime().HTML4(),
+ 'frequency': 1,
+ 'period': 'minute',
+ }
+
+
+query = kw.copy()
+query['portal_type'] = 'Collector Issue'
+
+if 'sort_on' in query:
+ del query['sort_on']
+
+catalog = context.get_internal_catalog()
+found = catalog.search(query, 'modified', True)
+
+items = []
+for item in found:
+ items.append({'url': item.getURL(),
+ 'title': '%s [%0d]' % (item.Title, item.action_number),
+ 'description': item.Description,
+ 'subjects': ('status:%s' % item.status,
+ 'importance:%s' % item.importance,
+ 'topic:%s' % item.topic,
+ 'classification:%s' % item.classification,
+ ),
+ 'creators': (item.submitter_id,),
+ 'contributors': item.assigned_to,
+ 'date': item.modified.HTML4(),
+ })
+
+options['issues'] = tuple(items)
+
+#options = toUnicode( options, ptool.getProperty('default_charset', None) )
+return context.issues_as_rss(**options)
Property changes on: CMF_Extras/trunk/CMFCollector/skins/collector/query_rss.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: CMF_Extras/trunk/CMFCollector/skins/collector/rssScrubForm.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/skins/collector/rssScrubForm.py (rev 0)
+++ CMF_Extras/trunk/CMFCollector/skins/collector/rssScrubForm.py 2007-06-29 20:54:19 UTC (rev 77249)
@@ -0,0 +1,19 @@
+##Script (Python) "rssScrubForm"
+##title=Scrub form of useless variables
+##parameters=form
+result = form.copy()
+if '-C' in result:
+ del result['-C']
+
+if 'searching' in result:
+ del result['searching']
+
+empty = []
+for k, v in result.items():
+ if not v:
+ empty.append(k)
+
+for k in empty:
+ del result[k]
+
+return result
Property changes on: CMF_Extras/trunk/CMFCollector/skins/collector/rssScrubForm.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Deleted: CMF_Extras/trunk/CMFCollector/tests/test_all.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/tests/test_all.py 2007-06-29 17:59:24 UTC (rev 77248)
+++ CMF_Extras/trunk/CMFCollector/tests/test_all.py 2007-06-29 20:54:19 UTC (rev 77249)
@@ -1,39 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors. All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-""" CMFCollector tests.
-
-$Id$
-"""
-
-from unittest import main
-import Testing
-import Zope2
-Zope2.startup()
-
-from Products.CMFCore.tests.base.utils import build_test_suite
-
-
-def suite():
- return build_test_suite( 'Products.CMFCollector.tests'
- , [ 'test_CollectorSubset'
- ,
- ]
- )
-
-def test_suite():
- # Just to silence the top-level test.py
- return None
-
-if __name__ == '__main__':
- main(defaultTest='suite')
-
More information about the CMF-checkins
mailing list