Skip to content

Commit

Permalink
Solution
Browse files Browse the repository at this point in the history
  • Loading branch information
ip-ilya committed Jul 31, 2023
1 parent d7b83ff commit 3383ab1
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
28 changes: 28 additions & 0 deletions app/cafe.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import datetime
from app.errors import (
VaccineError,
NotVaccinatedError,
OutdatedVaccineError,
NotWearingMaskError
)


class Cafe:
def __init__(self, name: str) -> None:
self.name = name

def visit_cafe(
self,
visitor: dict
) -> VaccineError | NotWearingMaskError | str:

if "vaccine" not in visitor:
raise NotVaccinatedError("This visitor is no vaccinated!")

if visitor["vaccine"]["expiration_date"] < datetime.date.today():
raise OutdatedVaccineError("This visitor has expired vaccine!")

if visitor["wearing_a_mask"] is False:
raise NotWearingMaskError("This visitor doesn't have a mask!")

return f"Welcome to {self.name}"
14 changes: 14 additions & 0 deletions app/errors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class VaccineError(Exception):
pass


class NotVaccinatedError(VaccineError):
pass


class OutdatedVaccineError(VaccineError):
pass


class NotWearingMaskError(Exception):
pass
25 changes: 24 additions & 1 deletion app/main.py
Original file line number Diff line number Diff line change
@@ -1 +1,24 @@
# write your code here
from app.errors import (
VaccineError,
NotWearingMaskError
)
from app.cafe import Cafe


def go_to_cafe(friends: list, cafe: Cafe) -> str:
masks_to_buy = 0

for friend in friends:
try:
cafe.visit_cafe(friend)

except VaccineError:
return "All friends should be vaccinated"

except NotWearingMaskError:
masks_to_buy += 1

if masks_to_buy > 0:
return f"Friends should buy {masks_to_buy} masks"

return f"Friends can go to {cafe.name}"

0 comments on commit 3383ab1

Please sign in to comment.