Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

16.set schedule timers #51

Draft
wants to merge 16 commits into
base: dev
Choose a base branch
from
Draft

16.set schedule timers #51

wants to merge 16 commits into from

Conversation

IwonaAnna2024
Copy link
Collaborator

Class for scheduling working time
Methods:

  • setting turn-on and turn-off time
  • setting a time period the device is going to work
    Checking list of tasks and turnong-on/ -off devices

@dylodylo
Copy link
Collaborator

dylodylo commented Dec 8, 2024

Rozpiszę to co omawialiśmy sobie podczas zajęć w trochę zmienionej formie.
Klasa Task, powinna mieć atrybuty:

  • change_time datetime
  • change_action enum
  • device Device
    Na teraz o ile się nie mylę nie musi mieć żadnych metod. Lepiej, żeby wszystko obsługiwała druga klasa, czyli Scheduler.

Klasa Scheduler powinna mieć atrybuty:

  • tasks_list list

a także metody

  • add_task(change_time, change_action, device) - powinna dodawać nowo utworzony obiekt klasy Task do tasks_list
  • remove_task(index) - powinna usuwać wybrany task z listy tasków. Uznajmy, że sprawdzamy kolejność listy i po indeksie tej listy usuwamy, czyli remove_task(2) usunie z tasks_list=[task1, task2, task3, task4] task3.
  • show_tasks() - wyswietla liste wszystkich tasków.
  • check_tasks() funkcja do dodania do menu. Logika będzie tam prosta:
    • przejdź po wszystkich taskach z task_list
    • dla każdego taska porównaj change_time z czasem systemowym
    • jeśli czas systemowy jest większy niż change_time wykonaj akcje wg change_action dla danego device

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Czemu usunęłaś te wszystkie pliki?

self.turn_off_time = turn_off_time ("%Y-%m-%d-%H-%M")
self.working_duration = working_duration("%M")
self.current_time = current_time
self.task_list = task_list
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wydaje mi się, że task_list domyślnie powinien być pustą listą, raczej nie ma sensu tworzyć nowego Schedulera już z taskami.

self.turn_on_time = turn_on_time ("%Y-%m-%d-%H-%M")
self.turn_off_time = turn_off_time ("%Y-%m-%d-%H-%M")
self.working_duration = working_duration("%M")
self.current_time = current_time
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Po co zapisywać obecny czas?

Comment on lines +9 to +10
self.turn_on_time = turn_on_time ("%Y-%m-%d-%H-%M")
self.turn_off_time = turn_off_time ("%Y-%m-%d-%H-%M")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Nie widzę tu tych funkcji turn_on_time i turn_off_time, więc nie wiem, co miałoby być wywoływane.
  2. Moim zdaniem, tu wystarczy jeden atrybut, change_time i drugi, który będzie enumem, mówiący nam co trzeba zrobić, czyli change_action.

def __init__(self, turn_on_time, turn_off_time, working_duration, current_time = str(datetime.now()), task_list = []):
self.turn_on_time = turn_on_time ("%Y-%m-%d-%H-%M")
self.turn_off_time = turn_off_time ("%Y-%m-%d-%H-%M")
self.working_duration = working_duration("%M")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Biorąc pod uwagę komentarz wyżej, ten atrybut też jest niepotrzebny.

self.current_time = current_time
self.task_list = task_list

def load_devices(self) -> Dict[str, Any]:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Masz już funkcję load_devices w ui_terminal.py, nie powinnaś jej kopiować, tylko zaimportować.
https://www.geeksforgeeks.org/dont-repeat-yourselfdry-in-software-development/

print("Error reading the file.")
return {"devices": []}

def print_devices(self, devices_data: Dict[str, Any]) -> None:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

jw.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants