Coverage for src/download_excel.py: 47%

36 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-06-01 10:38 +0000

1import ezsheets 

2from datetime import datetime, timedelta 

3import os 

4from src.settings import cr, inf, formating_error_message, timer 

5 

6# dyspozytor.warszawa@holcim.com 

7 

8def generate_name_of_file_google(): 

9 """Forms the file names that need to be downloaded based on the current date, returning a list of file names 

10 

11 Returns: 

12 list of str: list of file names 

13 """ 

14 list_of_download_files = [] 

15 

16 now = datetime.now() 

17 current_week_number = now.isocalendar()[1] 

18 current_year = now.isocalendar()[0] 

19 

20 if (current_week_number == 53 or current_week_number == 52 and 

21 current_year != (now + timedelta(weeks=1)).isocalendar()[0]): # check if current week is 53 or 52 and next year is different 

22 

23 list_of_download_files.append(f"{current_week_number}.{current_year}") 

24 list_of_download_files.append(f"{1}.{current_year + 1}") 

25 else: 

26 list_of_download_files.append(f"{current_week_number}.{current_year}") 

27 list_of_download_files.append(f"{current_week_number + 1}.{current_year}") 

28 

29 return list_of_download_files 

30 

31@timer 

32def save_google_sheet(directory="excel_files"): 

33 """save googlsheet file like a Excel in directory 

34 

35 Args: 

36 directory (str, optional): The directory where the file is save. Defaults to 'excel_files'. 

37 """ 

38 for week_number_year in generate_name_of_file_google(): 

39 try: 

40 if not os.path.exists(directory): 

41 os.makedirs(directory) 

42 all_spreadsheets = ezsheets.listSpreadsheets() # get all available files 

43 filtered_spreadsheets = {name: spreadsheet_id for spreadsheet_id, name in all_spreadsheets.items()\ 

44 if name.endswith(week_number_year)} # filtred ended week_number_year from generate_name_of_file_google 

45 if len(filtered_spreadsheets) == 1: 

46 spreadsheet_id = next(iter(filtered_spreadsheets.values())) 

47 spreadsheet = ezsheets.Spreadsheet(spreadsheet_id) 

48 file_path = os.path.join(directory, f"Tydz {week_number_year}.xlsx") 

49 spreadsheet.downloadAsExcel(file_path) 

50 elif len(filtered_spreadsheets) == 0: 

51 inf(f"There isn't file has name ended {week_number_year}") 

52 raise Exception 

53 else: 

54 inf(f"More then one file has name ended {week_number_year}\nsheets: {filtered_spreadsheets}") 

55 raise Exception 

56 

57 except Exception as err: 

58 

59 cr(formating_error_message(err, "save_google_sheet")) 

60 

61 continue