def create_active_item(oc): task, handler = SyncManager.get_current() if not task: return # Format values remaining = format_remaining(task.statistics.seconds_remaining) progress = format_percentage(task.statistics.progress) # Title title = '%s - Status' % normalize(handler.title) if progress: title += ' (%s)' % progress # Summary summary = task.statistics.message or 'Working' if remaining: summary += ', ~%s second%s remaining' % (remaining, plural(remaining)) # Create items oc.add(DirectoryObject( key=Callback(SyncMenu, refresh=timestamp()), title=pad_title(title), summary=summary + ' (click to refresh)' )) oc.add(DirectoryObject( key=Callback(Cancel), title=pad_title('%s - Cancel' % normalize(handler.title)) ))
def Pull(): success, message = SyncManager.trigger_pull() if not success: return MessageContainer(L('trigger_failure:title'), message) return MessageContainer( L('trigger_success:title'), LF('trigger_success:message', 'Pull') )
def Push(section=None): success, message = SyncManager.trigger_push(section) if not success: return MessageContainer(L('trigger_failure:title'), message) return MessageContainer( L('trigger_success:title'), LF('trigger_success:message', 'Push') )
def Synchronize(): success, message = SyncManager.trigger_synchronize() if not success: return MessageContainer(L('trigger_failure:title'), message) return MessageContainer( L('trigger_success:title'), LF('trigger_success:message', 'Synchronize') )
def Cancel(): if not SyncManager.cancel(): return MessageContainer( L('cancel_failure:title'), L('cancel_failure:message'), ) return MessageContainer( L('cancel_success:title'), L('cancel_success:message') )
def get_task_status(key, section=None): result = [] status = SyncManager.get_status(key, section) if status.previous_timestamp: since = datetime.utcnow() - status.previous_timestamp if since.seconds < 1: result.append('Last run just a moment ago') else: result.append('Last run %s' % human(since, precision=1)) if status.previous_elapsed: if status.previous_elapsed.seconds < 1: result.append('taking less than a second') else: result.append('taking %s' % human( status.previous_elapsed, precision=1, past_tense='%s' )) if status.previous_success is True: result.append('was successful') elif status.previous_timestamp: # Only add 'failed' fragment if there was actually a previous run message = 'failed' if status.error: message += ' (%s)' % status.error result.append(message) if len(result): return ', '.join(result) + '.' return 'Not run yet.'