Skip to content

Instantly share code, notes, and snippets.

@carlescliment
Created October 6, 2017 13:03
Show Gist options
  • Save carlescliment/2b793f186a466f4833358d1ee3d3dbdc to your computer and use it in GitHub Desktop.
Save carlescliment/2b793f186a466f4833358d1ee3d3dbdc to your computer and use it in GitHub Desktop.
Progress counter
class CostsByJobData(object):
def __init__(self, user_id, progress):
self.user_id = user_id
self.progress = progress
def declare_progress_steps(self):
total_jobs = len(JobRepository.by_user(self.user_id))
self.progress.add_progress_steps(total_jobs)
return self
def dump_to(self, spreadsheet):
costs_by_job = CostsByJobRepository.by_user_id(self.user_id)
for job in costs_by_job:
# ...
self.progress.step_forward()
progress = Progress()
costs_by_job = CostsByJobData(user_id, progress)
# Declare steps
costs_by_job.declare_progress_steps()
costs_by_field.declare_progress_steps()
costs_by_whatever.declare_progress_steps()
# Run
costs_by_job.dump_to(spreadsheet)
costs_by_field.dump_to(spreadsheet)
costs_by_whatever.dump_to(spreadsheet)
class Progress(object):
def __init__(self):
self.steps = 0
current_step = 0
def add_steps(self, new_steps):
self.steps += new_steps
def step_forward(self):
self.current_step += 1
def current_progress(self):
if not self.steps:
return 1
return self.current_step / self.steps
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment