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)
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)
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()