bAngelov

Truck Pause Tracker

Jul 10th, 2022 (edited)
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.51 KB | None | 0 0
  1. class DrivingTime:
  2.     drive_minutes_allowed = 270
  3.     day_time_limit = 270 * 2 + 60
  4.     minimal_pause_required = 45
  5.     messages = {
  6.  
  7.         "format required": "във формат \"часове:минути\"",
  8.         "time driven": "Въведете колко часа шофирахте без прекъсване /format required/: ",
  9.         "driving begins": f"Въведете часа, в който започнахте да шофирате /format required/:",
  10.         "driving ends": f"Въведете часа, в който спряхте да шофирате /format required/:",
  11.         "time exceeded": "Внимание, шофирането без почивки надвишава позоленият лимит!",
  12.         "day limit exceeded": "Внимание, шофирането надвишава позоленият лимит за деня!",
  13.         "first pause": "Въведете колко беше Вашата първа почивка /format required/: ",
  14.         "second pause": "Въведете колко беше Вашата втората почивка /format required/: ",
  15.         "time regained": "Вие имате право на нови 4:30 часа каране!",
  16.         "long pause required": "Вие имате нужда минимум 45 минути почивка, като първата Ви може да е 15 минутна, "
  17.                                "а втората задтължително поне 30,! ",
  18.         "short pause required": "Вие имате нужда от поне още една почивка от минимум 30 минути, за да получите нови 4:30 часа за "
  19.                                 "каране!",
  20.         "drive time remaining": "Имате право да карате още /drive_time_to_make_pause/ минути, до достигане на Вашият "
  21.                                 "лимит за "
  22.                                 "каране без почивка!"
  23.  
  24.     }
  25.  
  26.     def __init__(self, time_mode="total"):
  27.         self.time_mode = time_mode
  28.         self.message_values_update("/format required/", self.messages["format required"])
  29.         self.drive_time = self.get_time()
  30.  
  31.         # self.first_pause = self.get_pause("first pause")
  32.         # self.second_pause = self.get_pause("second pause")
  33.         self.pause_checker()
  34.  
  35.     def __get_minutes(self, message="Message not defined"):
  36.         message = input(message).split(":")
  37.         if len(message) == 1:
  38.             return int(message[0])
  39.         return int(message[0]) * 60 + int(message[1])
  40.  
  41.     def get_time(self):
  42.         if self.time_mode == "total":
  43.             drive_time = self.__get_minutes(self.messages["time driven"])
  44.         else:
  45.             driving_begins = self.__get_minutes(self.messages["driving begins"])
  46.             driving_ends = self.__get_minutes(self.messages["driving ends"])
  47.             drive_time = driving_ends - driving_begins
  48.         return drive_time
  49.  
  50.     def pause_checker(self, paused="first pause", warn="long pause required"):
  51.         if self.drive_time > self.day_time_limit:
  52.             print(self.messages["day limit exceeded"])
  53.             return
  54.  
  55.         if self.drive_time >= self.drive_minutes_allowed:
  56.             if self.drive_time > self.drive_minutes_allowed:
  57.                 print(self.messages["time exceeded"])
  58.             print(self.messages[warn])
  59.             self.first_pause = self.get_pause(paused)
  60.             self.drive_time += self.get_time()
  61.             self.drive_minutes_allowed *= 2
  62.             self.pause_checker("second pause", "short pause required")
  63.  
  64.         else:
  65.             self.time_remaining = self.drive_minutes_allowed - self.drive_time
  66.             print(self.value_update(self.messages["drive time remaining"], "/drive_time_to_make_pause/", self.time_remaining ))
  67.             self.drive_time += self.get_time()
  68.             self.pause_checker(paused, warn)
  69.             pass
  70.  
  71.     def message_values_update(self, placeholder, message):
  72.         for mess in self.messages:
  73.             self.messages[mess] = self.value_update(self.messages[mess], placeholder, message)
  74.  
  75.     def value_update(self, text, placeholder, message):
  76.         return text.replace(str(placeholder), str(message))
  77.  
  78.     def get_pause(self, number="first"):
  79.         pause = self.__get_minutes(self.messages["first pause"])
  80.         if "first" in number:
  81.             if 0 < pause < 45:
  82.                 pause = 15
  83.         return pause
  84.  
  85. DrivingTime("duration")
  86.  
Add Comment
Please, Sign In to add comment