Skip to content

Commit

Permalink
cleanup and docstrings
Browse files Browse the repository at this point in the history
  • Loading branch information
Der-Henning committed Apr 26, 2023
1 parent 922478c commit 058df76
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 23 deletions.
49 changes: 35 additions & 14 deletions src/models/reservations.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,42 +32,63 @@ def __init__(self, client: TgtgClient) -> None:
def reserve(self, item_id: str,
display_name: str,
amount: int = 1) -> None:
"""Create a new reservation
Args:
item_id (str): Item ID
display_name (str): Item display name
amount (int, optional): Amount. Defaults to 1.
"""
self.reservation_query.append(

Check warning on line 42 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L42

Added line #L42 was not covered by tests
Reservation(item_id, amount, display_name))

def _create_order(self, reservation: Reservation) -> None:
try:
res = self.client.create_order(
reservation.item_id, reservation.amount)
order_id = res.get("id")
order = Order(order_id,
reservation.item_id,
reservation.amount,
reservation.display_name)
self.active_orders.append(order)
self.reservation_query.remove(reservation)
except Exception as exc:
log.error("Create Order Error: %s", exc)

def make_orders(self, state: Dict[str, Item],
callback: Callable[[Reservation], None]) -> None:
"""Create orders for reservations
Args:
state (Dict[str, Item]): Current item state
callback (Callable[[Reservation], None]): Callback for each order
"""
for reservation in self.reservation_query:
if state.get(reservation.item_id).items_available > 0:
self._create_order(reservation)
callback(reservation)

Check warning on line 56 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L53-L56

Added lines #L53 - L56 were not covered by tests

def update_active_orders(self) -> None:
"""Remove orders that are not active anymore
"""
for order in self.active_orders:
res = self.client.get_order_status(order.id)
if res.get("state") != "RESERVED":
self.active_orders.remove(order)

Check warning on line 64 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L61-L64

Added lines #L61 - L64 were not covered by tests

def cancel_order(self, order: Order) -> None:
"""Cancel an order
"""
self.client.abort_order(order.id)

Check warning on line 69 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L69

Added line #L69 was not covered by tests

def cancel_all_orders(self) -> None:
"""Cancel all active orders
"""
for order in self.active_orders:
self.cancel_order(order)

Check warning on line 75 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L74-L75

Added lines #L74 - L75 were not covered by tests

def get_favorites(self) -> List[Item]:
"""Get all favorite items
"""
return [Item(item) for item in self.client.get_favorites()]

Check warning on line 80 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L80

Added line #L80 was not covered by tests

def _create_order(self, reservation: Reservation) -> None:
try:
res = self.client.create_order(

Check warning on line 84 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L83-L84

Added lines #L83 - L84 were not covered by tests
reservation.item_id, reservation.amount)
order_id = res.get("id")
order = Order(order_id,

Check warning on line 87 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L86-L87

Added lines #L86 - L87 were not covered by tests
reservation.item_id,
reservation.amount,
reservation.display_name)
self.active_orders.append(order)
self.reservation_query.remove(reservation)
except Exception as exc:
log.error("Create Order Error: %s", exc)

Check warning on line 94 in src/models/reservations.py

View check run for this annotation

Codecov / codecov/patch

src/models/reservations.py#L91-L94

Added lines #L91 - L94 were not covered by tests
7 changes: 7 additions & 0 deletions src/notifiers/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,21 @@ def __init__(self, config: Config):

@property
def name(self):
"""Get notifier name"""
return self.__class__.__name__

def send(self, item: Item) -> None:
"""Send notification for new item"""
if self.enabled and self.cron.is_now:
log.debug("Sending %s Notification", self.name)
self._send(item)

def send_reservation(self, reservation: Reservation) -> None:
"""Send notification for new reservation
Args:
reservation (Reservation): Reservation to send
"""
if self.enabled:
log.debug("Sending %s new Reservation", self.name)
self._send_reservation(reservation)

Check warning on line 35 in src/notifiers/base.py

View check run for this annotation

Codecov / codecov/patch

src/notifiers/base.py#L33-L35

Added lines #L33 - L35 were not covered by tests
Expand Down
5 changes: 5 additions & 0 deletions src/notifiers/notifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ def send(self, item: Item) -> None:
log.error("Failed sending %s: %s", notifier, exc)

def send_reservation(self, reservation: Reservation) -> None:
"""Send notification for new reservation
Args:
reservation (Reservation): New reservation
"""
for notifier in self._enabled_notifiers:
try:
notifier.send_reservation(reservation)
Expand Down
9 changes: 0 additions & 9 deletions src/notifiers/telegram.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ def __init__(self, config: Config, reservations: Reservations):
if not self.chat_ids:
self._get_chat_id()
handlers = [

Check warning on line 53 in src/notifiers/telegram.py

View check run for this annotation

Codecov / codecov/patch

src/notifiers/telegram.py#L53

Added line #L53 was not covered by tests
CommandHandler("help", self._help),
CommandHandler("mute", self._mute),
CommandHandler("unmute", self._unmute),
CommandHandler("reserve", self._reserve_item_menu),
Expand All @@ -63,7 +62,6 @@ def __init__(self, config: Config, reservations: Reservations):
self.updater.dispatcher.add_handler(handler)

Check warning on line 62 in src/notifiers/telegram.py

View check run for this annotation

Codecov / codecov/patch

src/notifiers/telegram.py#L61-L62

Added lines #L61 - L62 were not covered by tests
self.updater.dispatcher.add_error_handler(self._error)
self.updater.bot.set_my_commands([
BotCommand('help', 'Display available Commands'),
BotCommand('mute',
'Deactivate Telegram Notifications for '
'1 or x days'),
Expand Down Expand Up @@ -114,13 +112,6 @@ def _send_message(self, message: str) -> None:
except TelegramError as err:
log.error('Telegram Error: %s', err)

def _help(self, update: Update, context: CallbackContext) -> None:
"""Send message containing available bot commands"""
del context
update.message.reply_text(
'Deactivate Telegram Notifications for x days using\n'
'/mute x\nReactivate with /unmute')

def _mute(self, update: Update, context: CallbackContext) -> None:
"""Deactivates Telegram Notifications for x days"""
days = int(context.args[0]) if context.args and \
Expand Down

0 comments on commit 058df76

Please sign in to comment.