work in progress: loops site synchronization: record job execution

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3734 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-02-16 11:24:45 +00:00
parent ab4c01e88d
commit e0240b5e82
4 changed files with 43 additions and 5 deletions

View file

@ -8,6 +8,15 @@
<!--<zope:adapter factory="loops.system.setup.SetupManager"
name="system" />-->
<zope:class class="loops.system.job.JobRecord">
<require permission="zope.View"
interface="loops.system.interfaces.IJobRecord" />
<require permission="zope.ManageContent"
set_schema="loops.system.interfaces.IJobRecord" />
</zope:class>
<!-- views -->
<browser:page
name="setup_jobrecords.html"
for="loops.interfaces.ILoops"

View file

@ -1,5 +1,5 @@
#
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
# Copyright (c) 2010 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -32,7 +32,15 @@ from loops.util import _
class IJobRecords(Interface):
pass
def recordExecution(job, state, transcript, data=None):
""" Record the execution of a job (which may be a query or some other
kind of concept).
"""
def getLastRecordFor(job):
""" Use this for finding out when the job given has been run
most recently.
"""
class IJobRecord(ITrack):

View file

@ -42,6 +42,19 @@ class JobRecords(BaseRecordManager):
def __init__(self, context):
self.context = context
def recordExecution(self, job, state, transcript, **kw):
taskId = util.getUidForObject(job)
kw['state'] = state
kw['transcript'] = transcript
self.storage.saveUserTrack(taskId, 0, self.personId, kw)
def getLastRecordFor(self, job):
taskId = util.getUidForObject(job)
recs = self.storage.query(taskId=taskId)
if recs:
return sorted(recs, key=lambda x: x.timeStamp)[-1]
return None
class JobRecord(Track):

View file

@ -38,6 +38,7 @@ from loops.browser.common import BaseView
from loops.browser.concept import ConceptView
from loops.external.base import Extractor
from loops.external.interfaces import IWriter
from loops.system.job import JobRecords
from loops import util
@ -66,6 +67,10 @@ class SyncChanges(ConceptView):
@Lazy
def lastSyncTimeStamp(self):
jobs = JobRecords(self.view.loopsRoot)
rec = jobs.getLastRecordFor(self.nodeView.virtualTargetObject)
if rec is not None:
return rec.timeStamp
return None
@ -126,11 +131,13 @@ class ChangesSave(FormController):
class ChangesSync(ChangesSave):
state = 'ok'
def update(self):
self.export()
self.transfer()
self.triggerImport()
#self.recordExecution()
self.recordExecution()
return True
def transfer(self):
@ -148,8 +155,9 @@ class ChangesSync(ChangesSave):
pass
def recordExecution(self):
jobs = self.view.loopsRoot.getRecordManager()['jobs']
jobs.saveUserTrack()
jobs = JobRecords(self.view.loopsRoot)
jobs.recordExecution(self.view.virtualTargetObject,
self.state, self.transcript.getvalue())
class SyncImport(BaseView):