Kata Birthday Greeting
unknown
python
4 years ago
1.7 kB
8
Indexable
import os
import csv
from datetime import date
from optparse import OptionParser
class BirthdayCSVRepository:
_path = ''
def __init__(self, path):
self._path = path
def _get_file_handle(self):
return open(self._path, newline='')
def all(self):
return csv.reader(self._get_file_handle(), delimiter=',', quotechar='|')
class Notifier:
_template = "Happy birthday, dear {first_name}!"
def notify(self, friends):
for friend in friends:
print(self._template.format(first_name = friend[1]))
class ProcessFriends:
def execute(self, current_date, friends):
notify_friends = []
for friend in friends:
if self.is_birthday(date.fromisoformat(friend[2]), current_date) :
notify_friends.append( friend )
return notify_friends
def is_birthday(self, friend_date, current_date):
if friend_date.month == current_date.month and friend_date.day == current_date.day:
return True
else:
return False
def get_current_date():
parser = OptionParser()
parser.add_option(
'-d', '--date',
default=date.today().isoformat(),
dest='current_date',
help='Current date'
)
(options, args) = parser.parse_args()
return date.fromisoformat(options.current_date)
if __name__ == "__main__":
CSV_FRIENDS_PATH = os.path.dirname(__file__) + '/../friends.csv'
notify_friends = ProcessFriends().execute(
get_current_date(),
BirthdayCSVRepository(CSV_FRIENDS_PATH).all()
)
Notifier().notify(notify_friends)Editor is loading...