| | import json |
| | import datetime |
| |
|
| | class Calendar: |
| | def __init__(self, filename="calendar_data.json"): |
| | self.filename = filename |
| | self.reminders = self.load_calendar() |
| | self.current_date = datetime.date.today() |
| |
|
| | |
| | def load_calendar(self): |
| | """Load reminders from a file.""" |
| | try: |
| | with open(self.filename, "r") as file: |
| | return json.load(file) |
| | except (FileNotFoundError, json.JSONDecodeError): |
| | return {} |
| |
|
| | |
| | def save_calendar(self): |
| | """Save reminders to a file.""" |
| | with open(self.filename, "w") as file: |
| | json.dump(self.reminders, file, indent=4) |
| |
|
| | |
| | def add_reminder(self, date, reminder): |
| | """Add a reminder for a specific date.""" |
| | if date not in self.reminders: |
| | self.reminders[date] = [] |
| | self.reminders[date].append(reminder) |
| | self.save_calendar() |
| | print(f"Reminder added for {date}: {reminder}") |
| |
|
| | def add_daterange(self, date_start, date_end, reminder): |
| | """Add a reminder for a date range.""" |
| | date_yyyymm = date_start[:-2] |
| | date_start_day = int(date_start[-2:]) |
| | date_end_day = int(date_end[-2:]) |
| | for day_int in range(date_start_day, date_end_day+1): |
| | day_str = f"{day_int:02d}" |
| | date = str(date_yyyymm)+day_str |
| | if str(date) not in self.reminders: |
| | self.reminders[date] = [] |
| | self.reminders[date].append(reminder) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | self.save_calendar() |
| | print(f"Reminder added from {date_start} to {date_end} (inclusive of start and end dates): {reminder}") |
| | |
| |
|
| | |
| | def show_all_reminders(self): |
| | """Show all past and future reminders in our calendar app""" |
| | if (self.reminders is None) or len(self.reminders)<1: |
| | print("No reminders in calendar app. Please create an event reminder to start using the app.") |
| | else: |
| | print("# Date Event Description") |
| | for i,(dt,event_description) in enumerate(self.reminders.items()): |
| | print(f"{i+1}. {dt} {event_description}") |
| |
|
| | |
| | def show_future_reminders(self): |
| | """Show all future reminders in our calendar app""" |
| | if (self.reminders is None) or len(self.reminders)<1: |
| | print("No future reminders in calendar app. Please create a future event reminder.") |
| | else: |
| | current_datetime = datetime.datetime.now() |
| | |
| | print("# Date Event Description") |
| | print_counter=1 |
| | for i,(dt,event_description) in enumerate(self.reminders.items()): |
| | dt = datetime.datetime.strptime(dt, '%Y-%m-%d') |
| | |
| | if current_datetime.date() <= dt.date(): |
| | print(f"{print_counter}. {dt.date()} {event_description}") |
| | print_counter+=1 |
| |
|
| | |
| | def show_reminders(self, date): |
| | """Show reminders for a specific date.""" |
| | if date in self.reminders: |
| | print(f"Reminders for {date}:") |
| | for i, reminder in enumerate(self.reminders[date], 1): |
| | print(f"{i}. {reminder}") |
| | else: |
| | print(f"No reminders for {date}.") |
| |
|
| | |
| | def show_month(self, user_mth): |
| | """Show reminders for a specific month.""" |
| | if (self.reminders is None) or len(self.reminders)<1: |
| | print(f"No reminders for month: {user_mth}.") |
| | else: |
| | print("# Date Event Description") |
| | print_counter=1 |
| | for i,(dt,event_description) in enumerate(self.reminders.items()): |
| | dt = datetime.datetime.strptime(dt, '%Y-%m-%d') |
| | dt_month = dt.month |
| |
|
| | print(f"user_mth: {user_mth}") |
| | print(f"dt: {dt}") |
| | print(f"dt_month: {dt_month}") |
| | |
| | if user_mth == dt_month: |
| | print(f"{print_counter}. {dt.date()} {event_description}") |
| | print_counter+=1 |
| |
|
| |
|
| |
|
| |
|
| | if __name__ == "__main__": |
| | calendar = Calendar() |
| | |
| | while True: |
| | print("\nCalendar Menu:") |
| | print("1. Add Reminder for 1 day") |
| | print("2. Add Reminder for date range (in the same month, including weekends)") |
| | print("3. Show All Past and Future Reminders") |
| | print("4. Show All Future Reminders") |
| | print("5. Show Reminders for Specific Day") |
| | print("6. Show Reminders for Specific Month") |
| | print("7. Exit") |
| | choice = input("Choose an option number: ") |
| |
|
| | |
| | if choice == "1": |
| | date = input("Enter date (YYYY-MM-DD): ") |
| | reminder = input("Enter description for event reminder: ") |
| | calendar.add_reminder(date, reminder) |
| | elif choice == "2": |
| | date_start = input("Enter start date (YYYY-MM-DD): ") |
| | date_end = input("Enter end date (YYYY-MM-DD): ") |
| | reminder = input("Enter description for event reminder: ") |
| | calendar.add_daterange(date_start, date_end, reminder) |
| |
|
| | |
| | elif choice == "3": |
| | calendar.show_all_reminders() |
| | elif choice == "4": |
| | calendar.show_future_reminders() |
| |
|
| | |
| | elif choice == "5": |
| | date = input("Enter date (YYYY-MM-DD): ") |
| | calendar.show_reminders(date) |
| | elif choice == "6": |
| | user_mth = input("Enter month number (MM): ") |
| | calendar.show_month(user_mth) |
| |
|
| | |
| | elif choice == "7": |
| | calendar.save_calendar() |
| | break |
| | else: |
| | print("Invalid option. Please try again.") |
| |
|