''' Contains dayclas as representation of a day at work ''' from calculation import hoursSpent from datetime import datetime class Day: '''A class used to represent a day at work ... Attributes ---------- date: str date of the day set at init begin: datetime datetime timestamp at started day, starting day and initializing day are seperate end: dateime dateime timestamp at end of a day begin_break: datetime dateime timestamp at begin of a break end_break: datetime dateime timestamp at end of a break duration: dateime dateime of working duration - pause isDayStarted: bool isBreakDone: bool isInBreak: bool Introduction ------------ The Day class holds only one pause! ''' def __init__(self): self.date: str = datetime.now().date() self.begin = 0 self.end = 0 self.begin_break = 0 self.end_break = 0 self.duration = 0 self.isDayStarted: bool = False self.isBreakDone: bool = False self.isInBreak: bool = False def beginDay(self): '''Saves the time where a new day was started.''' self.begin_break = datetime.now() self.isDayStarted = True def make_break(self): '''Saves the time where a break was started''' if not self.isDayStarted: raise AssertionError("Day hasn't been started yet") if self.isBreakDone or self.isInBreak: raise AssertionError( "You are already in break or have done your break already") self.begin = datetime.now() self.isInBreak = True def stop_break(self): '''Saves the time where the break was finished''' if not self.isDayStarted: raise AssertionError("Day hasn't been started yet") if not self.isInBreak: raise AssertionError( "You didn't start breaking yet") self.end_break = datetime.now() self.isInBreak = False self.isBreakDone = True def endDay(self): '''Saves the time where the work was ended and calcuclats the duration of work done''' if not self.isDayStarted: raise AssertionError("Day hasn't been started yet") self.end = datetime.now() self.duration = hoursSpent( self.begin, self.end, self.begin_break, self.end_break) def get_date(self) -> str: ''' Returns the date of the day''' return self.date def is_day_started(self) -> bool: return self.isDayStarted def is_break_done(self) -> bool: return self.isBreakDone def is_in_break(self) -> bool: return self.isInBreak