Coverage for amazonorders/cli.py: 60.87%

46 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-12 15:20 +0000

1import datetime 

2import os 

3 

4import click 

5 

6from amazonorders.exception import AmazonOrdersError 

7from amazonorders.orders import AmazonOrders 

8 

9from amazonorders.session import AmazonSession 

10 

11__author__ = "Alex Laird" 

12__copyright__ = "Copyright 2024, Alex Laird" 

13__version__ = "0.0.3" 

14 

15 

16@click.group(invoke_without_command=True) 

17@click.option('--username', default=os.environ.get("AMAZON_USERNAME"), help="An Amazon username.") 

18@click.option('--password', default=os.environ.get("AMAZON_PASSWORD"), help="An Amazon password.") 

19@click.pass_context 

20def amazon_orders(ctx, **kwargs): 

21 ctx.ensure_object(dict) 

22 for key, value in kwargs.items(): 

23 if value: 

24 ctx.obj[key] = value 

25 

26 if not kwargs["username"] or not kwargs["password"]: 

27 ctx.fail("Must provide but --username and --password for Amazon.") 

28 

29 ctx.obj["amazon_session"] = AmazonSession(kwargs["username"], kwargs["password"]) 

30 

31 

32@amazon_orders.command() 

33@click.pass_context 

34@click.option('--year', default=datetime.date.today().year, help="The year for which to get order history.") 

35@click.option('--full-details', is_flag=True, default=False, 

36 help="True if the full details should be retreived for each order.") 

37def history(ctx, **kwargs): 

38 amazon_session = ctx.obj["amazon_session"] 

39 amazon_session.login() 

40 

41 amazon_orders = AmazonOrders(amazon_session, 

42 print_output=True) 

43 

44 try: 

45 amazon_orders.get_order_history(year=kwargs["year"], 

46 full_details=kwargs["full_details"]) 

47 except AmazonOrdersError as e: 

48 ctx.fail(str(e)) 

49 

50 amazon_session.close() 

51 

52 

53@amazon_orders.command() 

54@click.pass_context 

55@click.argument('order_id') 

56def order(ctx, order_id): 

57 amazon_session = ctx.obj["amazon_session"] 

58 amazon_session.login() 

59 

60 amazon_orders = AmazonOrders(amazon_session, 

61 print_output=True) 

62 

63 try: 

64 amazon_orders.get_order(order_id) 

65 except AmazonOrdersError as e: 

66 ctx.fail(str(e)) 

67 

68 amazon_session.close() 

69 

70 

71if __name__ == "__main__": 

72 amazon_orders(obj={})