+ try:
+ s = os.statvfs(task.job.workspace)
+ self.diskspace_available = s.f_bsize * s.f_bavail
+ return self.diskspace_available >= self.diskspace_required
+ except OSError:
+ return False
+
+ def getErrorMessage(self, task):
+ return _("Not enough diskspace. Please free up some diskspace and try again. (%d MB required, %d MB available)") % (self.diskspace_required / 1024 / 1024, self.diskspace_available / 1024 / 1024)
+
+class ToolExistsPrecondition(Condition):
+ def check(self, task):
+ import os
+ if task.cmd[0]=='/':
+ realpath = task.cmd
+ else:
+ realpath = task.cwd + '/' + task.cmd
+ self.realpath = realpath
+ return os.access(realpath, os.X_OK)
+
+ def getErrorMessage(self, task):
+ return _("A required tool (%s) was not found.") % (self.realpath)
+
+class AbortedPostcondition(Condition):
+ def getErrorMessage(self, task):
+ return "Cancelled upon user request"