예제 #1
0
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))
    ))
예제 #2
0
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')
    )
예제 #3
0
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')
    )
예제 #4
0
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')
    )
예제 #5
0
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')
    )
예제 #6
0
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.'