diff --git a/Products/Poi/__init__.py b/Products/Poi/__init__.py index a07fe30c..0c5d1746 100644 --- a/Products/Poi/__init__.py +++ b/Products/Poi/__init__.py @@ -27,28 +27,25 @@ __author__ = """Martin Aspeli """ __docformat__ = 'plaintext' - import logging -logger = logging.getLogger("Poi") -logger.debug('Start initialization of product.') - -from Products.CMFCore import utils as cmfutils -from Products.CMFCore import DirectoryView -from Products.Archetypes.atapi import process_types from Products.Archetypes import listTypes +from Products.Archetypes.atapi import process_types +from Products.CMFCore import DirectoryView +from Products.CMFCore import utils as cmfutils +from zope.i18nmessageid import MessageFactory -from Products.Poi.config import PROJECTNAME -from Products.Poi.config import DEFAULT_ADD_CONTENT_PERMISSION from Products.Poi.config import ADD_CONTENT_PERMISSIONS +from Products.Poi.config import DEFAULT_ADD_CONTENT_PERMISSION +from Products.Poi.config import PROJECTNAME from Products.Poi.config import product_globals -from zope.i18nmessageid import MessageFactory -PoiMessageFactory = MessageFactory('Poi') +logger = logging.getLogger("Poi") +logger.debug('Start initialization of product.') +PoiMessageFactory = MessageFactory('Poi') DirectoryView.registerDirectory('skins', product_globals) -DirectoryView.registerDirectory('skins/Poi', - product_globals) +DirectoryView.registerDirectory('skins/Poi', product_globals) def initialize(context): diff --git a/Products/Poi/adapters.py b/Products/Poi/adapters.py index 850c2da0..10706aaa 100644 --- a/Products/Poi/adapters.py +++ b/Products/Poi/adapters.py @@ -1,18 +1,20 @@ import logging -from zope.interface import implements -from zope.interface import Attribute -from zope.interface import Interface -from zope.component import adapts -from zope.annotation.interfaces import IAnnotations -from persistent import Persistent -from persistent.list import PersistentList -from Products.Poi.interfaces import IIssue + from AccessControl import getSecurityManager from DateTime import DateTime -from zope.app.container.contained import ObjectRemovedEvent +from collective.watcherlist.watchers import WatcherList +from persistent import Persistent +from persistent.list import PersistentList +from zope.annotation.interfaces import IAnnotations from zope.app.container.contained import ObjectAddedEvent +from zope.app.container.contained import ObjectRemovedEvent +from zope.component import adapts from zope.event import notify -from collective.watcherlist.watchers import WatcherList +from zope.interface import Attribute +from zope.interface import Interface +from zope.interface import implements + +from Products.Poi.interfaces import IIssue logger = logging.getLogger('Products.Poi.adapters') diff --git a/Products/Poi/browser/__init__.py b/Products/Poi/browser/__init__.py index e69de29b..792d6005 100644 --- a/Products/Poi/browser/__init__.py +++ b/Products/Poi/browser/__init__.py @@ -0,0 +1 @@ +# diff --git a/Products/Poi/browser/interfaces.py b/Products/Poi/browser/interfaces.py index ddd46dd6..9e04eeee 100644 --- a/Products/Poi/browser/interfaces.py +++ b/Products/Poi/browser/interfaces.py @@ -1,8 +1,8 @@ +from zope.contentprovider.interfaces import ITALNamespaceData +from zope.interface import Attribute from zope.interface import Interface from zope.interface import directlyProvides -from zope.interface import Attribute from zope.viewlet.interfaces import IViewletManager -from zope.contentprovider.interfaces import ITALNamespaceData class IIssueFolderView(Interface): diff --git a/Products/Poi/browser/log.py b/Products/Poi/browser/log.py index 1b6cdec2..0c814f66 100644 --- a/Products/Poi/browser/log.py +++ b/Products/Poi/browser/log.py @@ -1,7 +1,7 @@ from datetime import datetime -from DateTime import DateTime from Acquisition import aq_inner +from DateTime import DateTime from Products.CMFCore.utils import getToolByName from Products.Five.browser import BrowserView diff --git a/Products/Poi/browser/notifications.py b/Products/Poi/browser/notifications.py index eb6a267d..c7a24a4c 100644 --- a/Products/Poi/browser/notifications.py +++ b/Products/Poi/browser/notifications.py @@ -1,13 +1,15 @@ +import textwrap + from Acquisition import aq_inner, aq_parent -from zope.app.component.hooks import getSite -from zope.i18n import translate from Products.CMFCore.utils import getToolByName -from Products.Poi.htmlrender import renderHTML -from Products.Poi.adapters import IResponseContainer -from Products.Poi import PoiMessageFactory as _ from collective.watcherlist.browser import BaseMail from collective.watcherlist.utils import su -import textwrap +from zope.app.component.hooks import getSite +from zope.i18n import translate + +from Products.Poi import PoiMessageFactory as _ +from Products.Poi.adapters import IResponseContainer +from Products.Poi.htmlrender import renderHTML wrapper = textwrap.TextWrapper(initial_indent=' ', subsequent_indent=' ') diff --git a/Products/Poi/browser/response.py b/Products/Poi/browser/response.py index 0f9c3cd7..3e993b52 100644 --- a/Products/Poi/browser/response.py +++ b/Products/Poi/browser/response.py @@ -1,25 +1,20 @@ import logging -from zope.i18n import translate + from AccessControl import Unauthorized -from Products.CMFCore.utils import getToolByName -from Products.Poi.browser.interfaces import IResponseAdder -from zope.interface import implements -from zope.cachedescriptors.property import Lazy from Acquisition import aq_inner -from Products.Five.browser import BrowserView -from Products.Poi.adapters import IResponseContainer -from Products.Poi.adapters import Response -from plone.memoize.view import memoize +from OFS.Image import File from Products.Archetypes.atapi import DisplayList -from Products.Poi.config import DEFAULT_ISSUE_MIME_TYPE +from Products.Archetypes.utils import contentDispositionHeader +from Products.CMFCore.utils import getToolByName from Products.CMFPlone import PloneMessageFactory as PMF -from Products.Poi import PoiMessageFactory as _ -from Products.Poi import permissions +from Products.CMFPlone.utils import safe_unicode +from Products.Five.browser import BrowserView from Products.statusmessages.interfaces import IStatusMessage +from plone.memoize.view import memoize +from zope.cachedescriptors.property import Lazy +from zope.i18n import translate +from zope.interface import implements from zope.lifecycleevent import modified -from OFS.Image import File -from Products.CMFPlone.utils import safe_unicode -from Products.Archetypes.utils import contentDispositionHeader try: from plone.i18n.normalizer.interfaces import \ IUserPreferredFileNameNormalizer @@ -27,6 +22,13 @@ except ImportError: FILE_NORMALIZER = False +from Products.Poi import PoiMessageFactory as _ +from Products.Poi import permissions +from Products.Poi.adapters import IResponseContainer +from Products.Poi.adapters import Response +from Products.Poi.browser.interfaces import IResponseAdder +from Products.Poi.config import DEFAULT_ISSUE_MIME_TYPE + logger = logging.getLogger('Poi') diff --git a/Products/Poi/browser/watchers.py b/Products/Poi/browser/watchers.py index f71926bf..46e512b5 100644 --- a/Products/Poi/browser/watchers.py +++ b/Products/Poi/browser/watchers.py @@ -1,6 +1,6 @@ -from collective.watcherlist.interfaces import IWatcherList from Acquisition import aq_inner from Products.Five.browser import BrowserView +from collective.watcherlist.interfaces import IWatcherList class WatcherView(BrowserView): diff --git a/Products/Poi/config.py b/Products/Poi/config.py index a340e483..fc7f2f9a 100644 --- a/Products/Poi/config.py +++ b/Products/Poi/config.py @@ -7,7 +7,7 @@ ADD_CONTENT_PERMISSIONS = { 'PoiTracker': 'Poi: Add Tracker', 'PoiIssue': 'Poi: Add Issue', -} + } product_globals = globals() diff --git a/Products/Poi/content/PoiIssue.py b/Products/Poi/content/PoiIssue.py index 75e89c0b..59db20a2 100644 --- a/Products/Poi/content/PoiIssue.py +++ b/Products/Poi/content/PoiIssue.py @@ -28,10 +28,11 @@ __docformat__ = 'plaintext' import logging +import textwrap from AccessControl import ClassSecurityInfo from Acquisition import aq_chain - +from Products.AddRemoveWidget.AddRemoveWidget import AddRemoveWidget from Products.Archetypes.atapi import AttributeStorage from Products.Archetypes.atapi import BaseFolder from Products.Archetypes.atapi import BaseFolderSchema @@ -41,38 +42,33 @@ from Products.Archetypes.atapi import FileWidget from Products.Archetypes.atapi import LinesField from Products.Archetypes.atapi import LinesWidget -from Products.Archetypes.atapi import registerType from Products.Archetypes.atapi import RichWidget from Products.Archetypes.atapi import Schema from Products.Archetypes.atapi import SelectionWidget from Products.Archetypes.atapi import StringField from Products.Archetypes.atapi import StringWidget from Products.Archetypes.atapi import TextField +from Products.Archetypes.atapi import registerType +from Products.CMFCore.utils import getToolByName +from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin +from Products.CMFPlone.utils import getSiteEncoding from Products.CMFPlone.utils import safe_unicode +from collective.watcherlist.utils import get_member_email +from plone.memoize import instance +from zope.interface import implements +import transaction +from Products.Poi import PoiMessageFactory as _ +from Products.Poi import permissions +from Products.Poi.adapters import IResponseContainer from Products.Poi.config import DEFAULT_ISSUE_MIME_TYPE from Products.Poi.config import DESCRIPTION_LENGTH from Products.Poi.config import ISSUE_MIME_TYPES from Products.Poi.config import PROJECTNAME -from Products.Poi.adapters import IResponseContainer - -from Products.Poi import permissions -from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin -from Products.AddRemoveWidget.AddRemoveWidget import AddRemoveWidget -from collective.watcherlist.utils import get_member_email - -from Products.CMFCore.utils import getToolByName -from Products.CMFPlone.utils import getSiteEncoding -import transaction - -import textwrap -wrapper = textwrap.TextWrapper(initial_indent=' ', subsequent_indent=' ') -from zope.interface import implements from Products.Poi.interfaces import IIssue from Products.Poi.interfaces import ITracker -from Products.Poi import PoiMessageFactory as _ -from plone.memoize import instance +wrapper = textwrap.TextWrapper(initial_indent=' ', subsequent_indent=' ') logger = logging.getLogger('Poi') schema = Schema(( diff --git a/Products/Poi/content/PoiResponse.py b/Products/Poi/content/PoiResponse.py index 2aaf5ef3..35fe3779 100644 --- a/Products/Poi/content/PoiResponse.py +++ b/Products/Poi/content/PoiResponse.py @@ -27,38 +27,34 @@ __author__ = """Martin Aspeli """ __docformat__ = 'plaintext' -from AccessControl import ClassSecurityInfo +import textwrap +from AccessControl import ClassSecurityInfo from Products.Archetypes.atapi import AttributeStorage from Products.Archetypes.atapi import BaseContent from Products.Archetypes.atapi import BaseSchema from Products.Archetypes.atapi import FileField from Products.Archetypes.atapi import FileWidget -from Products.Archetypes.atapi import registerType from Products.Archetypes.atapi import RichWidget from Products.Archetypes.atapi import Schema from Products.Archetypes.atapi import SelectionWidget from Products.Archetypes.atapi import StringField from Products.Archetypes.atapi import StringWidget from Products.Archetypes.atapi import TextField +from Products.Archetypes.atapi import registerType +from Products.CMFCore.utils import getToolByName +from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin +from plone.memoize import instance +from zope.interface import implements +import transaction - +from Products.Poi import permissions from Products.Poi.config import DEFAULT_ISSUE_MIME_TYPE from Products.Poi.config import ISSUE_MIME_TYPES from Products.Poi.config import PROJECTNAME - -from Products.Poi import permissions -from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin - -from Products.CMFCore.utils import getToolByName -import transaction - -import textwrap -wrapper = textwrap.TextWrapper(initial_indent=' ', subsequent_indent=' ') -from zope.interface import implements from Products.Poi.interfaces import IResponse -from plone.memoize import instance +wrapper = textwrap.TextWrapper(initial_indent=' ', subsequent_indent=' ') schema = Schema(( StringField( diff --git a/Products/Poi/content/PoiTracker.py b/Products/Poi/content/PoiTracker.py index 4d49c518..a86f0ac7 100644 --- a/Products/Poi/content/PoiTracker.py +++ b/Products/Poi/content/PoiTracker.py @@ -28,25 +28,24 @@ __docformat__ = 'plaintext' from AccessControl import ClassSecurityInfo +from Products.CMFCore.utils import getToolByName +from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin +from Products.DataGridField.DataGridField import DataGridField +from Products.DataGridField.DataGridWidget import DataGridWidget +from zope.interface import implements try: from Products.LinguaPlone import public as atapi + atapi # pyflakes except ImportError: # No multilingual support from Products.Archetypes import atapi -from Products.Poi.config import PROJECTNAME -from Products.DataGridField.DataGridField import DataGridField +from Products.Poi import PoiMessageFactory as _ from Products.Poi import permissions -from Products.DataGridField.DataGridWidget import DataGridWidget -from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin - -from Products.CMFCore.utils import getToolByName - -from zope.interface import implements +from Products.Poi.config import PROJECTNAME from Products.Poi.interfaces import ITracker -from Products.Poi.utils import linkSvn from Products.Poi.utils import linkBugs -from Products.Poi import PoiMessageFactory as _ +from Products.Poi.utils import linkSvn schema = atapi.Schema(( diff --git a/Products/Poi/content/__init__.py b/Products/Poi/content/__init__.py index e91ca9ce..c540b582 100644 --- a/Products/Poi/content/__init__.py +++ b/Products/Poi/content/__init__.py @@ -27,9 +27,6 @@ __author__ = """Martin Aspeli """ __docformat__ = 'plaintext' -# Subpackages -# Additional - # Classes import PoiTracker import PoiIssue diff --git a/Products/Poi/events.py b/Products/Poi/events.py index ccf4a467..16c646dc 100644 --- a/Products/Poi/events.py +++ b/Products/Poi/events.py @@ -3,6 +3,7 @@ from Products.CMFCore.utils import getToolByName from collective.watcherlist.interfaces import IWatcherList from collective.watcherlist.utils import get_member_email + from Products.Poi.interfaces import IIssue logger = logging.getLogger('Poi') diff --git a/Products/Poi/htmlrender.py b/Products/Poi/htmlrender.py index be56762a..66121e4d 100644 --- a/Products/Poi/htmlrender.py +++ b/Products/Poi/htmlrender.py @@ -20,6 +20,7 @@ __all__ = ('renderHTML', ) import reStructuredText as rst + from collective.watcherlist.utils import get_charset htmlTemplate = """ diff --git a/Products/Poi/permissions.py b/Products/Poi/permissions.py index dea53dac..da1d9e97 100644 --- a/Products/Poi/permissions.py +++ b/Products/Poi/permissions.py @@ -2,16 +2,16 @@ from Products.CMFCore import permissions as CMFCorePermissions -View = CMFCorePermissions.View -ModifyPortalContent = CMFCorePermissions.ModifyPortalContent AccessContentsInformation = CMFCorePermissions.AccessContentsInformation +ModifyPortalContent = CMFCorePermissions.ModifyPortalContent +View = CMFCorePermissions.View -ManageTracker = "Poi: Manage tracker" EditResponse = "Poi: Edit response" -ModifyIssueSeverity = "Poi: Modify issue severity" +ManageTracker = "Poi: Manage tracker" ModifyIssueAssignment = "Poi: Modify issue assignment" +ModifyIssueSeverity = "Poi: Modify issue severity" ModifyIssueState = "Poi: Modify issue state" ModifyIssueTags = "Poi: Modify issue tags" -ModifyIssueWatchers = "Poi: Modify issue watchers" ModifyIssueTargetRelease = "Poi: Modify issue target release" +ModifyIssueWatchers = "Poi: Modify issue watchers" UploadAttachment = "Poi: Upload attachment" diff --git a/Products/Poi/psc/PoiPscTracker.py b/Products/Poi/psc/PoiPscTracker.py index 4d58fd93..017e0d3a 100644 --- a/Products/Poi/psc/PoiPscTracker.py +++ b/Products/Poi/psc/PoiPscTracker.py @@ -28,23 +28,20 @@ __docformat__ = 'plaintext' from AccessControl import ClassSecurityInfo - from Products.Archetypes.atapi import DisplayList -from Products.Archetypes.atapi import registerType from Products.Archetypes.atapi import Schema from Products.Archetypes.atapi import StringField from Products.Archetypes.atapi import StringWidget +from Products.Archetypes.atapi import registerType +from Products.CMFCore.utils import getToolByName +from zope.interface import implements +import transaction -from Products.Poi.content.PoiTracker import PoiTracker -from Products.Poi.content.PoiTracker import PoiTracker_schema +from Products.Poi import permissions from Products.Poi.config import PROJECTNAME from Products.Poi.config import PSC_TRACKER_ID - -from Products.Poi import permissions - -from Products.CMFCore.utils import getToolByName -import transaction -from zope.interface import implements +from Products.Poi.content.PoiTracker import PoiTracker +from Products.Poi.content.PoiTracker import PoiTracker_schema from Products.Poi.interfaces import ITracker schema = Schema(( diff --git a/Products/Poi/tests/ptc.py b/Products/Poi/tests/ptc.py index 2459e0e3..bb4d5849 100644 --- a/Products/Poi/tests/ptc.py +++ b/Products/Poi/tests/ptc.py @@ -1,15 +1,14 @@ from Acquisition import aq_base -from Testing import ZopeTestCase from DateTime import DateTime -from zope.event import notify -from zope.component import getSiteManager -from zope.lifecycleevent import ObjectModifiedEvent from Products.Archetypes.event import ObjectInitializedEvent from Products.MailHost.interfaces import IMailHost +from Testing import ZopeTestCase +from zope.component import getSiteManager +from zope.event import notify +from zope.lifecycleevent import ObjectModifiedEvent from Products.Poi.adapters import IResponseContainer - # Make the boring stuff load quietly ZopeTestCase.installProduct('CMFCore', quiet=1) ZopeTestCase.installProduct('CMFDefault', quiet=1) @@ -65,7 +64,8 @@ def _clear(self, call_close_hook=0): self.portal.MailHost = self.portal._original_MailHost sm = getSiteManager(context=self.portal) sm.unregisterUtility(provided=IMailHost) - sm.registerUtility(aq_base(self.portal._original_MailHost), provided=IMailHost) + sm.registerUtility(aq_base(self.portal._original_MailHost), + provided=IMailHost) PloneTestCase.PloneTestCase._clear(self) def addMember(self, username, fullname, email, roles, last_login_time): @@ -76,15 +76,31 @@ def addMember(self, username, fullname, email, roles, last_login_time): {'fullname': fullname, 'email': email, 'last_login_time': DateTime(last_login_time)}) - def createTracker(self, folder, id, title='', description='', helpText='', - availableAreas=({'id': 'ui', 'title': 'User interface', 'description': 'User interface issues'}, {'id': 'functionality', 'title': 'Functionality', 'description': 'Issues with the basic functionality'}, {'id': 'process', 'title': 'Process', 'description': 'Issues relating to the development process itself'}), - availableIssueTypes=({'id': 'bug', 'title': 'Bug', 'description': 'Functionality bugs in the software'}, {'id': 'feature', 'title': 'Feature', 'description': 'Suggested features'}, {'id': 'patch', 'title': 'Patch', 'description': 'Patches to the software'}), - availableSeverities=['Critical', 'Important', 'Medium', 'Low'], - defaultSeverity='Medium', - availableReleases=['2.0', '1.0'], - managers=[], - sendNotificationEmails=False, - mailingList=''): + def createTracker( + self, folder, id, title='', description='', helpText='', + availableAreas=( + {'id': 'ui', 'title': 'User interface', + 'description': 'User interface issues'}, + {'id': 'functionality', 'title': 'Functionality', + 'description': 'Issues with the basic functionality'}, + {'id': 'process', 'title': 'Process', + 'description': + 'Issues relating to the development process itself'}, + ), + availableIssueTypes=( + {'id': 'bug', 'title': 'Bug', + 'description': 'Functionality bugs in the software'}, + {'id': 'feature', 'title': 'Feature', + 'description': 'Suggested features'}, + {'id': 'patch', 'title': 'Patch', + 'description': 'Patches to the software'}, + ), + availableSeverities=['Critical', 'Important', 'Medium', 'Low'], + defaultSeverity='Medium', + availableReleases=['2.0', '1.0'], + managers=[], + sendNotificationEmails=False, + mailingList=''): """Create a new tracker in the given folder""" self.setRoles(['Manager']) folder.invokeFactory('PoiTracker', id) @@ -161,7 +177,7 @@ def createResponse(self, issue, text='Response text', issueTransition='', create_view() container = IResponseContainer(issue) - id = str(len(container) -1) + id = str(len(container) - 1) response = container[id] # In tests we need to fire this event manually: @@ -194,11 +210,11 @@ def _setup(self): def createOldSampleContent(self): from Products.Poi.content.PoiResponse import PoiResponse for x in ('foo', 'bar'): - dummy = self.portal.invokeFactory('PoiTracker', x, - availableReleases=['2.0', '1.0']) + self.portal.invokeFactory('PoiTracker', x, + availableReleases=['2.0', '1.0']) for y in ('foo', 'bar', 'baz'): - dummy = self.portal[x].invokeFactory('PoiIssue', y) + self.portal[x].invokeFactory('PoiIssue', y) for z in ('foo', 'bar', 'baz', 'quux'): response = PoiResponse(z) - dummy = self.portal[x][y]._setObject(z, response) + self.portal[x][y]._setObject(z, response) self.portal[x][y][z].reindexObject() diff --git a/Products/Poi/tests/testFeeds.py b/Products/Poi/tests/testFeeds.py index 6346980b..b86cf5d2 100644 --- a/Products/Poi/tests/testFeeds.py +++ b/Products/Poi/tests/testFeeds.py @@ -1,4 +1,5 @@ from Testing import ZopeTestCase + from Products.Poi.tests import ptc default_user = ZopeTestCase.user_name diff --git a/Products/Poi/tests/testIssue.py b/Products/Poi/tests/testIssue.py index 019a091a..8898a5eb 100644 --- a/Products/Poi/tests/testIssue.py +++ b/Products/Poi/tests/testIssue.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- from Testing import ZopeTestCase -from Products.Poi.tests import ptc + from Products.Poi.config import DESCRIPTION_LENGTH +from Products.Poi.tests import ptc default_user = ZopeTestCase.user_name diff --git a/Products/Poi/tests/testPscIntegration.py b/Products/Poi/tests/testPscIntegration.py index 71bef54a..c184277d 100644 --- a/Products/Poi/tests/testPscIntegration.py +++ b/Products/Poi/tests/testPscIntegration.py @@ -1,8 +1,8 @@ from AccessControl import Unauthorized from AccessControl import getSecurityManager from AccessControl.SecurityManagement import setSecurityManager - from Testing import ZopeTestCase + from Products.Poi.tests import ptc ZopeTestCase.installProduct('PloneSoftwareCenter') diff --git a/Products/Poi/tests/testResponse.py b/Products/Poi/tests/testResponse.py index 782ffdee..6f1e1753 100644 --- a/Products/Poi/tests/testResponse.py +++ b/Products/Poi/tests/testResponse.py @@ -29,8 +29,7 @@ def testAccentedCharacters(self): SearchableText="Ren\xc3\xa9")) >= 1 self.failUnless(found) - response = self.createResponse( - issue, "In Dutch 'seas' is 'zee\xc3\xabn'") + self.createResponse(issue, "In Dutch 'seas' is 'zee\xc3\xabn'") # That should show up in the issue. found = len(catalog.searchResults( portal_type='PoiIssue', diff --git a/Products/Poi/tests/testTracker.py b/Products/Poi/tests/testTracker.py index 8293e881..b483e5c9 100644 --- a/Products/Poi/tests/testTracker.py +++ b/Products/Poi/tests/testTracker.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- -from Testing import ZopeTestCase -from Products.Poi.tests import ptc from Products.CMFCore.utils import getToolByName -from Products.Poi.events import sendResponseNotificationMail +from Testing import ZopeTestCase from collective.watcherlist.interfaces import IWatcherList + +from Products.Poi.events import sendResponseNotificationMail +from Products.Poi.tests import ptc + default_user = ZopeTestCase.user_name diff --git a/Products/Poi/tests/test_browser.py b/Products/Poi/tests/test_browser.py index c3de7f22..1a9466c8 100644 --- a/Products/Poi/tests/test_browser.py +++ b/Products/Poi/tests/test_browser.py @@ -1,6 +1,8 @@ -from zope.testing import doctest import unittest + +from zope.testing import doctest from Testing.ZopeTestCase import FunctionalDocFileSuite as Suite + from Products.Poi.tests.ptc import PoiFunctionalTestCase OPTIONFLAGS = (doctest.ELLIPSIS | diff --git a/Products/Poi/tests/test_migration.py b/Products/Poi/tests/test_migration.py index 220bd010..8ac86ae0 100644 --- a/Products/Poi/tests/test_migration.py +++ b/Products/Poi/tests/test_migration.py @@ -1,6 +1,8 @@ -from zope.testing import doctest import unittest + +from zope.testing import doctest from Testing.ZopeTestCase import ZopeDocFileSuite as Suite + from Products.Poi.tests.ptc import PoiMigrationTestCase OPTIONFLAGS = (doctest.ELLIPSIS | diff --git a/Products/Poi/tests/test_unit.py b/Products/Poi/tests/test_unit.py index 913f362a..d96564f0 100644 --- a/Products/Poi/tests/test_unit.py +++ b/Products/Poi/tests/test_unit.py @@ -1,4 +1,5 @@ import unittest + from zope.testing import doctest from zope.testing import doctestunit