ajack 2004/06/18 15:02:21
Modified: python/gump/syndication Tag: CleanUp rss.py atom.py
syndicator.py abstract.py
python/gump/document/xdocs Tag: CleanUp documenter.py
python/gump/test Tag: CleanUp syndicator.py resolving.py
loading.py
python/gump/core Tag: CleanUp gumprun.py
Log:
1) Cosmetics (log working on N of M, not just N)
2) Trying to make syndication event based (not batch)
Slowely moving all things this way (e-mail notifications were done already)
Revision Changes Path
No revision
No revision
1.24.2.1 +11 -19 gump/python/gump/syndication/rss.py
Index: rss.py
===================================================================
RCS file: /home/cvs/gump/python/gump/syndication/rss.py,v
retrieving revision 1.24
retrieving revision 1.24.2.1
diff -u -r1.24 -r1.24.2.1
--- rss.py 21 May 2004 23:15:05 -0000 1.24
+++ rss.py 18 Jun 2004 22:02:21 -0000 1.24.2.1
@@ -226,7 +226,7 @@
'Apache Gump', \
'http://gump.apache.org/')
- def syndicate(self):
+ def prepareToSyndicate(self):
# Main syndication document
self.workspace=self.run.getWorkspace()
@@ -238,16 +238,11 @@
self.workspace.logurl, \
"""Life is like a box of chocolates""", \
self.gumpImage))
-
- # build information
- for module in self.workspace.getModules():
- if not self.run.getGumpSet().inModuleSequence(module): continue
-
- self.syndicateModule(module,self.rss)
-
+
+ def completeSyndication(self):
self.rss.serialize()
- def syndicateModule(self,module,mainRSS):
+ def syndicateModule(self,module):
rssFile=self.run.getOptions().getResolver().getFile(module,'rss','.xml',1)
rssUrl=self.run.getOptions().getResolver().getUrl(module,'rss','.xml')
@@ -262,14 +257,10 @@
datestr=time.strftime('%Y-%m-%d')
timestr=time.strftime('%H:%M:%S')
- #
# Get a decent description
- #
content=self.getModuleContent(module,self.run)
- #
- #
- #
+ # Create the item
item=Item(('%s %s') % (module.getName(),module.getStateDescription()), \
moduleUrl, \
content, \
@@ -284,16 +275,16 @@
# State changes that are newsworthy...
if self.moduleOughtBeWidelySyndicated(module):
log.debug("Add module to widely distributed RSS Newsfeed for : " +
module.getName())
- mainRSS.addItem(item)
+ self.rss.addItem(item)
for project in module.getProjects():
if not self.run.getGumpSet().inProjectSequence(project): continue
- self.syndicateProject(project,moduleRSS,mainRSS)
+ self.syndicateProject(project,moduleRSS)
moduleRSS.serialize()
- def syndicateProject(self,project,moduleRSS,mainRSS):
+ def syndicateProject(self,project,moduleRSS=None):
rssFile=self.run.getOptions().getResolver().getFile(project,'rss','.xml',1)
rssUrl=self.run.getOptions().getResolver().getUrl(project,'rss','.xml')
@@ -325,11 +316,12 @@
if project.getModule().isModified() and not
project.getStatePair().isUnset():
log.debug("Add project to RSS Newsfeed for : " + project.getName())
projectRSS.addItem(item)
- moduleRSS.addItem(item)
+ if moduleRSS:
+ moduleRSS.addItem(item)
# State changes that are newsworthy...
if self.projectOughtBeWidelySyndicated(project) :
log.debug("Add project to widely distributed RSS Newsfeed for : " +
project.getName())
- mainRSS.addItem(item)
+ self.rss.addItem(item)
projectRSS.serialize()
1.17.2.3 +10 -13 gump/python/gump/syndication/atom.py
Index: atom.py
===================================================================
RCS file: /home/cvs/gump/python/gump/syndication/atom.py,v
retrieving revision 1.17.2.2
retrieving revision 1.17.2.3
diff -u -r1.17.2.2 -r1.17.2.3
--- atom.py 17 Jun 2004 19:23:26 -0000 1.17.2.2
+++ atom.py 18 Jun 2004 22:02:21 -0000 1.17.2.3
@@ -125,7 +125,7 @@
def __init__(self,run):
AbstractSyndicator.__init__(self,run)
- def syndicate(self):
+ def prepareRun(self):
# Main syndication document
self.workspace=self.run.getWorkspace()
@@ -145,10 +145,10 @@
self.syndicateModule(module,self.feed)
+ def completeRun(self):
self.feed.serialize()
-
- def syndicateModule(self,module,mainFeed):
+ def syndicateModule(self,module):
feedFile=self.run.getOptions().getResolver().getFile(module,'atom','.xml',1)
feedUrl=self.run.getOptions().getResolver().getUrl(module,'atom','.xml')
@@ -160,15 +160,11 @@
moduleUrl, \
escape(module.getDescription() or ''))
-
- #
+
# Get a decent description
- #
content=self.getModuleContent(module,self.run)
- #
# Entry
- #
entry=Entry(('%s %s') % (module.getName(),module.getStateDescription()), \
moduleUrl, \
module.getName(), \
@@ -182,17 +178,17 @@
# State changes that are newsworthy...
if self.moduleOughtBeWidelySyndicated(module):
log.debug("Add module to widely distributed Atom Newsfeed for : " +
module.getName())
- mainFeed.addEntry(entry)
+ self.feed.addEntry(entry)
# Syndicate each project
for project in module.getProjects():
if not self.run.getGumpSet().inProjectSequence(project): continue
- self.syndicateProject(project,moduleFeed,mainFeed)
+ self.syndicateProject(project,moduleFeed)
moduleFeed.serialize()
- def syndicateProject(self,project,moduleFeed,mainFeed):
+ def syndicateProject(self,project,moduleFeed=None):
feedFile=self.run.getOptions().getResolver().getFile(project,'atom','.xml',1)
feedUrl=self.run.getOptions().getResolver().getUrl(project,'atom','.xml')
@@ -220,11 +216,12 @@
if project.getModule().isModified() and not
project.getStatePair().isUnset():
log.debug("Add project to Atom Newsfeed for : " + project.getName())
projectFeed.addEntry(entry)
- moduleFeed.addEntry(entry)
+ if moduleFeed:
+ moduleFeed.addEntry(entry)
# State changes that are newsworthy...
if self.projectOughtBeWidelySyndicated(project) :
log.debug("Add project to widely distributed Atom Newsfeed for : " +
project.getName())
- mainFeed.addEntry(entry)
+ self.feed.addEntry(entry)
projectFeed.serialize()
1.20.2.1 +33 -33 gump/python/gump/syndication/syndicator.py
Index: syndicator.py
===================================================================
RCS file: /home/cvs/gump/python/gump/syndication/syndicator.py,v
retrieving revision 1.20
retrieving revision 1.20.2.1
diff -u -r1.20 -r1.20.2.1
--- syndicator.py 21 May 2004 23:15:05 -0000 1.20
+++ syndicator.py 18 Jun 2004 22:02:21 -0000 1.20.2.1
@@ -28,42 +28,42 @@
from gump import log
from gump.core.gumprun import *
from gump.core.actor import AbstractRunActor
+from gump.syndication.rss import RSSSyndicator
+from gump.syndication.atom import AtomSyndicator
class Syndicator(AbstractRunActor):
def __init__(self,run):
- AbstractRunActor.__init__(self,run)
+ AbstractRunActor.__init__(self,run)
- def processOtherEvent(self,event):
- if isinstance(event,FinalizeRunEvent):
-
- #
- # Update stats (and stash onto projects)
- #
- self.syndicate()
-
- def syndicate(self):
-
- #
- # Produce an RSS Feed
- #
- try:
- from gump.syndication.rss import RSSSyndicator
- simple=RSSSyndicator(self.run)
- simple.syndicate()
- except:
- log.error('Failed to generate RSS Feeds', exc_info=1)
+ self.rss=RSSSyndicator(self.run)
+ self.atom=AtomSyndicator(self.run)
- #
- # Produce an Atom Feed
- #
- try:
- from gump.syndication.atom import AtomSyndicator
- atom=AtomSyndicator(self.run)
- atom.syndicate()
- except:
- log.error('Failed to generate Atom Feeds', exc_info=1)
-
-def syndicate(self,run):
- s=Syndicator(run)
- s.syndicate()
\ No newline at end of file
+ def processOtherEvent(self,event):
+ if isinstance(event,InitializeRunEvent):
+ self.rss.prepare()
+ self.atom.prepare()
+ elif isinstance(event,FinalizeRunEvent):
+ self.rss.complete()
+ self.atom.complete()
+
+ def processWorkspace(self):
+ """
+ Syndicate information about the workspace (if it needs it)
+ """
+ pass
+
+ def processModule(self,module):
+ """
+ Syndicate information about the module (if it needs it)
+ """
+ self.rss.syndicateModule(module)
+ self.atom.syndicateModule(module)
+
+ def processProject(self,project):
+ """
+ Syndicate information about the project (if it needs it)
+ """
+ self.rss.syndicateProject(project)
+ self.atom.syndicateProject(project)
+
\ No newline at end of file
1.2.2.3 +33 -10 gump/python/gump/syndication/abstract.py
Index: abstract.py
===================================================================
RCS file: /home/cvs/gump/python/gump/syndication/abstract.py,v
retrieving revision 1.2.2.2
retrieving revision 1.2.2.3
diff -u -r1.2.2.2 -r1.2.2.3
--- abstract.py 18 Jun 2004 04:54:58 -0000 1.2.2.2
+++ abstract.py 18 Jun 2004 22:02:21 -0000 1.2.2.3
@@ -33,22 +33,36 @@
class AbstractSyndicator(RunSpecific):
def __init__(self,run):
RunSpecific.__init__(self,run)
+
+ # Call a method called 'prepareRun(run)'
+ def prepare(self):
+ if not hasattr(self,'prepareRun'):
+ raise RuntimeError, 'Complete [' + `self.__class__` + '] with
prepareRun(self)'
- #
- # Populate a method called 'syndicateRun(run)'
- #
- def syndicate(self):
- if not hasattr(self,'syndicateRun'):
- raise RuntimeError, 'Complete [' + `self.__class__` + '] with
syndicateRun(self)'
+ if not callable(self.prepareRun):
+ raise RuntimeException, 'Complete [' + `self.__class__` + '] with a
callable prepareRun()'
- if not callable(self.syndicateRun):
- raise RuntimeException, 'Complete [' + `self.__class__` + '] with a
callable syndicateRun(self)'
+ log.info('Syndicate run using [' + `self` + ']')
+
+ self.prepareRun()
+
+ # Call a method called 'completeRun(run)'
+ def complete(self):
+ if not hasattr(self,'completeRun'):
+ raise RuntimeError, 'Complete [' + `self.__class__` + '] with
completeRun(self)'
+
+ if not callable(self.completeRun):
+ raise RuntimeException, 'Complete [' + `self.__class__` + '] with a
callable completeRun()'
log.info('Syndicate run using [' + `self` + ']')
- self.syndicateRun()
+ self.completeRun()
def getProjectContent(self,project,run):
+ """
+ Construct the generic (HTML) contents for the
+ feed item/entry.
+ """
resolver=run.getOptions().getResolver()
@@ -78,8 +92,11 @@
return content
-
def getModuleContent(self,module,run):
+ """
+ Construct the generic (HTML) contents for the
+ feed item/entry.
+ """
resolver=self.run.getOptions().getResolver()
@@ -109,6 +126,9 @@
return content
def getStateContent(self,statePair):
+ """
+ Construct the generic (HTML) contents for state
+ """
resolver=self.run.getOptions().getResolver()
@@ -126,6 +146,9 @@
return content
def getSundries(self,object):
+ """
+ Construct the generic extra (HTML) contents
+ """
content = ''
No revision
No revision
1.9.2.17 +1 -1 gump/python/gump/document/xdocs/documenter.py
Index: documenter.py
===================================================================
RCS file: /home/cvs/gump/python/gump/document/xdocs/documenter.py,v
retrieving revision 1.9.2.16
retrieving revision 1.9.2.17
diff -u -r1.9.2.16 -r1.9.2.17
--- documenter.py 18 Jun 2004 14:58:16 -0000 1.9.2.16
+++ documenter.py 18 Jun 2004 22:02:21 -0000 1.9.2.17
@@ -2488,7 +2488,7 @@
else:
outputSection.createParagraph('No contents in this file.')
else:
- fdocument.createParagraph('No such file or directory.')
+ fdocument.createWarning('No such file or directory.')
fdocument.serialize()
fdocument=None
No revision
No revision
1.10.2.1 +17 -7 gump/python/gump/test/syndicator.py
Index: syndicator.py
===================================================================
RCS file: /home/cvs/gump/python/gump/test/syndicator.py,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -u -r1.10 -r1.10.2.1
--- syndicator.py 21 May 2004 23:15:00 -0000 1.10
+++ syndicator.py 18 Jun 2004 22:02:21 -0000 1.10.2.1
@@ -42,13 +42,23 @@
self.run=getWorkedTestRun()
self.assertNotNone('Needed a run', self.run)
self.workspace=self.run.getWorkspace()
+ self.module1=self.workspace.getModule('module1')
+ self.project1=self.workspace.getProject('project1')
self.assertNotNone('Needed a workspace', self.workspace)
- def testRSS(self):
- simple=RSSSyndicator(self.run)
- simple.syndicate()
-
- def testAtom(self):
- atom=AtomSyndicator(self.run)
- atom.syndicate()
+
+ self.rss=RSSSyndicator(self.run)
+ self.atom=AtomSyndicator(self.run)
+
+ def testRSSSyndicateModule(self):
+ self.rss.syndicateModule(self.module1)
+
+ def testAtomSyndicateModule(self):
+ self.rss.syndicateModule(self.module1)
+
+ def testRSSSyndicateProject(self):
+ self.rss.syndicateProject(self.project1)
+
+ def testAtomSyndicateProject(self):
+ self.rss.syndicateProject(self.project1)
1.7.2.2 +3 -3 gump/python/gump/test/resolving.py
Index: resolving.py
===================================================================
RCS file: /home/cvs/gump/python/gump/test/resolving.py,v
retrieving revision 1.7.2.1
retrieving revision 1.7.2.2
diff -u -r1.7.2.1 -r1.7.2.2
--- resolving.py 16 Jun 2004 17:50:40 -0000 1.7.2.1
+++ resolving.py 18 Jun 2004 22:02:21 -0000 1.7.2.2
@@ -57,7 +57,7 @@
# ' -> ' + `rpath` + ', length ' + `len(rpath)`
def checkLocation(self,object1):
- location=getLocationForObject(object1)
+ location=getLocationForObject(object1,'.test')
#printSeparator()
self.assertNotNone('Location: ', location)
self.assertNotNone('Location: ', location.serialize())
@@ -65,8 +65,8 @@
def checkRelativeLocation(self,object1,object2):
self.assertNotNone('To : ', object1)
self.assertNotNone('From : ', object2)
- location1=getLocationForObject(object1)
- location2=getLocationForObject(object2)
+ location1=getLocationForObject(object1,'.test')
+ location2=getLocationForObject(object2,'.test')
location=getRelativeLocation(object1,object2)
#printSeparator()
self.assertNotNone('To Location: ', location1)
1.1.2.4 +3 -2 gump/python/gump/test/Attic/loading.py
Index: loading.py
===================================================================
RCS file: /home/cvs/gump/python/gump/test/Attic/loading.py,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -r1.1.2.3 -r1.1.2.4
--- loading.py 18 Jun 2004 14:58:17 -0000 1.1.2.3
+++ loading.py 18 Jun 2004 22:02:21 -0000 1.1.2.4
@@ -55,6 +55,7 @@
def testBroken1(self):
self.performLoad('gump/test/resources/broken1/workspace.xml')
- def testCircular1(self):
- self.performLoad('gump/test/resources/circular1/workspace.xml')
+ # :TODO: Need to fix
+ #def testCircular1(self):
+ # self.performLoad('gump/test/resources/circular1/workspace.xml')
No revision
No revision
1.9.2.8 +19 -14 gump/python/gump/core/gumprun.py
Index: gumprun.py
===================================================================
RCS file: /home/cvs/gump/python/gump/core/gumprun.py,v
retrieving revision 1.9.2.7
retrieving revision 1.9.2.8
diff -u -r1.9.2.7 -r1.9.2.8
--- gumprun.py 18 Jun 2004 14:58:17 -0000 1.9.2.7
+++ gumprun.py 18 Jun 2004 22:02:21 -0000 1.9.2.8
@@ -224,8 +224,9 @@
# Identify the size of overall sequence
moduleTotal=len(sequence)
for module in sequence:
- module.setTotal(moduleTotal)
-
+ module.setTotal(moduleTotal)
+ log.debug('Identify ' + module.getName() + ' at position #' +
`module.getPosition()`)
+
return sequence
def getRepositoriesForModuleList(self,modules):
@@ -393,9 +394,13 @@
FEATURE_SYNDICATE=0x10
FEATURE_DOCUMENT=0x20
-FEATURE_ALL=FEATURE_STATISTICS|FEATURE_RESULTS|FEATURE_NOTIFY|FEATURE_DIAGRAM|
\
+FEATURE_DEFAULT=FEATURE_DOCUMENT
+
+FEATURE_ALL=FEATURE_STATISTICS|FEATURE_RESULTS|FEATURE_NOTIFY|FEATURE_DIAGRAM| \
FEATURE_SYNDICATE|FEATURE_DOCUMENT
+FEATURE_OFFICIAL=FEATURE_ALL
+
class GumpRunOptions:
"""
@@ -403,24 +408,23 @@
"""
def __init__(self):
- self.optimize=0
- self.debug=0
- self.verbose=0
- self.cache=1 # Defaults to QUICK
- self.quick=1 # Defaults to CACHE
- self.dated=0 # Defaults to NOT dated.
- self.optimize=0 # Do the least ammount of work...
- self.official=0 # Do a full run (with publishing e-mail)
+ self.debug=False
+ self.verbose=False
+ self.cache=True # Defaults to CACHE
+ self.quick=True # Defaults to QUICK
+ self.dated=False # Defaults to NOT dated.
+ self.optimize=False # Do the least ammount of work...
+ self.official=False # Do a full run (with publishing e-mail)
# Default is XDOCS/XHTML, but can also force text with --text
- self.text=0
+ self.text=False
# Defautl for XDOCS is XHTML
- self.xdocs=0
+ self.xdocs=False
self.objectives=OBJECTIVE_INTEGRATE
- self.features=FEATURE_ALL
+ self.features=FEATURE_DEFAULT
def isDated(self):
return self.dated
@@ -433,6 +437,7 @@
def setOfficial(self,official):
self.official=official
+ self.features=FEATURE_OFFICIAL
def isQuick(self):
return self.quick
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]