KaiquanMah commited on
Commit
5ae492e
·
verified ·
1 Parent(s): 2d27765

Update calendar_app.py

Browse files
Files changed (1) hide show
  1. calendar_app.py +45 -5
calendar_app.py CHANGED
@@ -113,6 +113,42 @@ class Calendar:
113
  print(f"{print_counter}. {dt} {event_description}")
114
  print_counter+=1
115
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
 
118
 
@@ -133,13 +169,16 @@ if __name__ == "__main__":
133
  # user create event reminder
134
  if choice == "1":
135
  date = input("Enter date (YYYY-MM-DD): ")
136
- reminder = input("Enter description for event reminder: ")
137
- calendar.add_reminder(date, reminder)
 
138
  elif choice == "2":
139
  date_start = input("Enter start date (YYYY-MM-DD): ")
140
  date_end = input("Enter end date (YYYY-MM-DD): ")
141
- reminder = input("Enter description for event reminder: ")
142
- calendar.add_daterange(date_start, date_end, reminder)
 
 
143
 
144
  # list ALL or future reminders
145
  elif choice == "3":
@@ -150,7 +189,8 @@ if __name__ == "__main__":
150
  # list reminders for specific date or month
151
  elif choice == "5":
152
  date = input("Enter date (YYYY-MM-DD): ")
153
- calendar.show_reminders(date)
 
154
  elif choice == "6":
155
  user_mth = input("Enter month number (MM): ")
156
  calendar.show_month(user_mth)
 
113
  print(f"{print_counter}. {dt} {event_description}")
114
  print_counter+=1
115
 
116
+
117
+ def check_valid_date(date):
118
+ """Input sanitation for valid date format"""
119
+ date_parts = date.split("-")
120
+ count_date_parts = len(date_parts)
121
+
122
+ # check 3 date parts are found: YYYY, MM, DD
123
+ if count_date_parts<3:
124
+ print(f"You entered {date} containing only {count_date_parts} date parts. Please enter date in YYYY-MM-DD format")
125
+ return "invalid_date"
126
+
127
+ # check separator of date parts
128
+ elif "." in date:
129
+ print(f"You entered {date} split on '.'. Please enter date in YYYY-MM-DD format split by '-'")
130
+ return "invalid_date"
131
+ elif "/" in date:
132
+ print(f"You entered {date} split on '/'. Please enter date in YYYY-MM-DD format split by '-'")
133
+ return "invalid_date"
134
+
135
+ # check length of date parts
136
+ elif len(date_parts[0])!=4:
137
+ print(f"You entered {date} with year value {date_parts[0]}. Please enter date in YYYY-MM-DD format, starting with a 4-digit year")
138
+ return "invalid_date"
139
+ elif len(date_parts[1])!=2:
140
+ print(f"You entered {date} with month value {date_parts[1]}. Please enter date in YYYY-MM-DD format, with a 2-digit month in the middle")
141
+ return "invalid_date"
142
+ elif len(date_parts[2])!=2:
143
+ print(f"You entered {date} with day value {date_parts[2]}. Please enter date in YYYY-MM-DD format, with a 2-digit day at the end")
144
+ return "invalid_date"
145
+
146
+ # in this last scenario, we have a valid date
147
+ else:
148
+ return "valid_date"
149
+
150
+
151
+
152
 
153
 
154
 
 
169
  # user create event reminder
170
  if choice == "1":
171
  date = input("Enter date (YYYY-MM-DD): ")
172
+ if check_valid_date(date) == "valid_date":
173
+ reminder = input("Enter description for event reminder: ")
174
+ calendar.add_reminder(date, reminder)
175
  elif choice == "2":
176
  date_start = input("Enter start date (YYYY-MM-DD): ")
177
  date_end = input("Enter end date (YYYY-MM-DD): ")
178
+ if check_valid_date(date_start) == "valid_date":
179
+ if check_valid_date(date_end) == "valid_date":
180
+ reminder = input("Enter description for event reminder: ")
181
+ calendar.add_daterange(date_start, date_end, reminder)
182
 
183
  # list ALL or future reminders
184
  elif choice == "3":
 
189
  # list reminders for specific date or month
190
  elif choice == "5":
191
  date = input("Enter date (YYYY-MM-DD): ")
192
+ if check_valid_date(date) == "valid_date":
193
+ calendar.show_reminders(date)
194
  elif choice == "6":
195
  user_mth = input("Enter month number (MM): ")
196
  calendar.show_month(user_mth)