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
« 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
6# dyspozytor.warszawa@holcim.com
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
11 Returns:
12 list of str: list of file names
13 """
14 list_of_download_files = []
16 now = datetime.now()
17 current_week_number = now.isocalendar()[1]
18 current_year = now.isocalendar()[0]
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
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}")
29 return list_of_download_files
31@timer
32def save_google_sheet(directory="excel_files"):
33 """save googlsheet file like a Excel in directory
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
57 except Exception as err:
59 cr(formating_error_message(err, "save_google_sheet"))
61 continue