File size: 6,068 Bytes
e11016d 22be156 e11016d 22be156 e11016d 22be156 e11016d ffa1076 c46051b 20c927b a740100 20c927b d998e3e f265be4 a740100 f265be4 c46051b 22be156 1c86b91 c19b6b0 22be156 d835f0d 22be156 c19b6b0 22be156 1c86b91 4f45292 22be156 1d9d88b 22be156 8b369c9 22be156 8b369c9 f9c3afa 1d9d88b 22be156 1c86b91 e11016d 22be156 c46051b bfadbcf c46051b 82d8a33 c46051b 82d8a33 fa686c6 82d8a33 fa686c6 c46051b 82d8a33 c46051b e11016d 22be156 e11016d 22be156 e11016d c46051b 20c927b c46051b e11016d 22be156 e11016d 262b18d c46051b 22be156 c46051b 1c86b91 c46051b e11016d 1c86b91 6bf6cce c46051b 818cf73 e11016d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
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)
# debug
# print(f"day_int: {day_int}")
# print(f"day_str: {day_str}")
# print(f"date: {date}")
# print(f"reminder: {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:
# user_mth = int(user_mth)
print(f"Event reminders for month: {user_mth}")
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
dt_month = dt.split("-")[1]
# 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} {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: ")
# user create event reminder
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)
# list ALL or future reminders
elif choice == "3":
calendar.show_all_reminders()
elif choice == "4":
calendar.show_future_reminders()
# list reminders for specific date or month
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.")
|