Esempio n. 1
0
def init_command():
    tracker_data = walros_base.TrackerData()
    tracker_data.worksheet_id = WORKSHEET_ID
    tracker_data.worksheet_name = WORKSHEET_NAME
    tracker_data.column_margin = COLUMN_MARGIN
    tracker_data.header_rows = HEADER_ROWS
    tracker_data.day_column_indices = DAY_COLUMN_INDICES
    tracker_data.week_column_indices = WEEK_COLUMN_INDICES
    tracker_data.month_column_indices = MONTH_COLUMN_INDICES
    tracker_data.quarter_column_indices = QUARTER_COLUMN_INDICES
    tracker_data.reduce_formula = lambda r: "=SUM(%s)" % r
    tracker_data.init_writes_zeros = False

    spreadsheet = data_util.Spreadsheet(walros_base.SPREADSHEET_ID)
    worksheet = spreadsheet.GetWorksheet(tracker_data.worksheet_id)
    init_requests = walros_base.build_init_requests(tracker_data, spreadsheet,
                                                    worksheet)
    if len(init_requests) == 0:
        click.echo("%s sheet is already initialized for today." %
                   tracker_data.worksheet_name)
        return

    # Update sheet wide statistics.
    init_requests += build_update_statistics_requests(worksheet, tracker_data)

    # Send requests.
    response = spreadsheet.BatchUpdate(init_requests)
Esempio n. 2
0
def init_command():
    tracker_data = init_tracker_data()
    spreadsheet = data_util.Spreadsheet(walros_base.SPREADSHEET_ID)
    worksheet = spreadsheet.GetWorksheet(tracker_data.worksheet_id)
    init_requests = walros_base.build_init_requests(tracker_data, spreadsheet,
                                                    worksheet)
    if len(init_requests) == 0:
        util.tlog("%s sheet is already initialized for today" %
                  tracker_data.worksheet_name)
        return

    # Update sheet wide statistics.
    init_requests += build_update_statistics_requests(worksheet, tracker_data)

    # Send requests.
    response = spreadsheet.BatchUpdate(init_requests)
Esempio n. 3
0
def start_command(label, seconds, minutes, hours, whitenoise, track, force):
    tracker_data = init_tracker_data()
    if not set_signal(TIMER_RUNNING_SIGNAL):
        util.tlog("A timer is already running")
        return

    clear_signals(exclude=[TIMER_RUNNING_SIGNAL])
    if not seconds and not minutes and not hours:
        seconds = FOCUS_UNIT_DURATION

    if force and timer_db.timer_exists(label):
        with timer_db.TimerFileProxy(label) as timer:
            timer.clear()

    if timer_db.timer_exists(label):
        with timer_db.TimerFileProxy(label) as timer:
            timer.resume()
            util.tlog("Resuming at %d seconds" % timer.remaining)

    else:
        with timer_db.TimerFileProxy(label) as timer:
            timer.start(seconds, minutes, hours)
            util.tlog("Starting at %d seconds" % timer.remaining)

    try:
        with diary.Entry(label):  # Tracks effective time spent and overhead.
            while True:  # Timer loop.
                # end time could have been changed; read again from file
                with timer_db.TimerFileProxy(label) as timer:
                    if timer.is_complete:
                        util.tlog("Timer `%s` completed" % timer.label)
                        break
                    if unset_signal(DISPLAY_UPDATE_SIGNAL):
                        util.tlog("Currently at %d seconds" % timer.remaining)
                time.sleep(1)
    finally:
        with timer_db.TimerFileProxy(label) as timer:
            if timer.is_complete:
                timer.clear()
            else:
                remaining = timer.pause()
                util.tlog("Pausing timer at %d seconds" % remaining,
                          prefix='\n')
        unset_signal(TIMER_RUNNING_SIGNAL)

    try:  # Notify and record.
        if track:
            spreadsheet = data_util.Spreadsheet(walros_base.SPREADSHEET_ID)
            worksheet = spreadsheet.GetWorksheet(tracker_data.worksheet_id)
            latest_date = spreadsheet.GetCellValue(
                worksheet_name=tracker_data.worksheet_name,
                row=tracker_data.row_margin + 1,
                col=1)
            latest_date = latest_date.split()[0]
            date_today = datetime.datetime.now().strftime("%Y-%m-%d")
            if latest_date != date_today:
                util.tlog(
                    "Warning: the latest row in spreadsheet does not correspond "
                    "to today's date")
            label_count = timer_increment_label_count(spreadsheet, worksheet,
                                                      tracker_data, label)
            util.tlog("%s count: %d" % (label, label_count))

    except Exception as ex:
        util.tlog("Error updating spreadsheet count")
        raise ex

    finally:
        timer_notify()