yeref 0.24.96__py3-none-any.whl → 0.24.97__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
yeref/yeref.py CHANGED
@@ -16011,27 +16011,34 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
16011
16011
  r4 = await return_retention_metrics(bot, data_users, EXTRA_D)
16012
16012
  r5 = await return_profit_and_loss_metrics(bot, data_users, EXTRA_D)
16013
16013
 
16014
- # === НОВЫЙ БЛОК: читаем CSV (r1) и заливаем его в Google‐таблицу ===
16015
16014
  if r1 and os.path.isfile(r1):
16016
- # 1) Авторизация в Google Sheets через Service Account
16015
+ # 1) Авторизация в Google Sheets
16017
16016
  scopes = r_conf('scopes', CONF_P)
16018
16017
  credential_path = os.path.join(EXTRA_D, (r_conf('credential_file', CONF_P))[0])
16019
16018
  credentials = ServiceAccountCredentials.from_json_keyfile_name(credential_path, scopes)
16020
16019
  http_auth = credentials.authorize(httplib2.Http())
16021
16020
  sheets_service = build('sheets', 'v4', http=http_auth, cache_discovery=False)
16022
16021
 
16023
- # 2) Получаем metadata таблицы, чтобы найти sheetId для «Лист1» (или «Sheet1»)
16022
+ # 2) Получаем metadata всей таблицы, чтобы увидеть, какие листы есть сейчас
16024
16023
  spreadsheet = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
16024
+ logger.info(f"До переименования. Найдено листов: {len(spreadsheet.get('sheets', []))}")
16025
+ for sheet in spreadsheet.get('sheets', []):
16026
+ props = sheet.get('properties', {})
16027
+ logger.info(f" • sheetId={props.get('sheetId')} title='{props.get('title')}'")
16028
+
16029
+ # 3) Ищем лист с названием «Лист1» или «Sheet1»
16025
16030
  sheet_id_to_rename = None
16031
+ original_title = None
16026
16032
  for sheet in spreadsheet.get('sheets', []):
16027
16033
  props = sheet.get('properties', {})
16028
16034
  title = props.get('title', '')
16029
- # если лист называется «Лист1» (русский по умолчанию) или «Sheet1» (английский)
16030
16035
  if title in ['Лист1', 'Sheet1']:
16031
16036
  sheet_id_to_rename = props.get('sheetId')
16037
+ original_title = title
16038
+ logger.info(f"Найден лист для переименования: sheetId={sheet_id_to_rename}, title='{title}'")
16032
16039
  break
16033
16040
 
16034
- # 3) Переименовываем лист в PROJECT_USERNAME, если нашли нужный sheetId
16041
+ # 4) Если нашли, то переименовываем в PROJECT_USERNAME
16035
16042
  if sheet_id_to_rename is not None:
16036
16043
  rename_request = {
16037
16044
  'requests': [
@@ -16050,28 +16057,51 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
16050
16057
  spreadsheetId=dataroom_folder_id,
16051
16058
  body=rename_request
16052
16059
  ).execute()
16060
+ logger.info(f"Запрос на переименование отправлен: '{original_title}' → '{PROJECT_USERNAME}'")
16061
+
16062
+ # 5) Подтягиваем снова metadata, чтобы убедиться, что название поменялось
16063
+ spreadsheet_after = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
16064
+ logger.info("После переименования. Список листов теперь:")
16065
+ for sheet in spreadsheet_after.get('sheets', []):
16066
+ props = sheet.get('properties', {})
16067
+ logger.info(f" • sheetId={props.get('sheetId')} title='{props.get('title')}'")
16068
+ else:
16069
+ logger.warning("Не найден лист с названием 'Лист1' или 'Sheet1' — пропускаем переименование.")
16053
16070
 
16054
- # 4) Читаем CSV-файл (r1) целиком и собираем список строк
16071
+ # 6) Читаем CSV-файл (r1) целиком
16055
16072
  with open(r1, newline='', encoding='utf-8') as csvfile:
16056
16073
  reader = csv.reader(csvfile)
16057
16074
  all_rows = list(reader)
16075
+ logger.info(f"Прочитано {len(all_rows)} строк из файла {r1}.")
16076
+
16077
+ # 7) Составляем диапазон для записи: используем PROJECT_USERNAME
16078
+ # Если название листа может содержать пробелы или спецсимволы, оборачиваем в одинарные кавычки:
16079
+ safe_title = PROJECT_USERNAME.replace("'", "\\'")
16080
+ range_str = f"'{safe_title}'!A1"
16081
+ logger.info(f"Будем записывать в диапазон: {range_str}")
16058
16082
 
16059
- # 5) Пишем значения из all_rows в только что переименованный лист (PROJECT_USERNAME), начиная с A1
16083
+ # 8) Формируем тело запроса на запись
16060
16084
  write_body = {
16061
16085
  'valueInputOption': 'USER_ENTERED',
16062
16086
  'data': [
16063
16087
  {
16064
- 'range': f"{PROJECT_USERNAME}!A1",
16088
+ 'range': range_str,
16065
16089
  'majorDimension': 'ROWS',
16066
16090
  'values': all_rows
16067
16091
  }
16068
16092
  ]
16069
16093
  }
16070
- sheets_service.spreadsheets().values().batchUpdate(
16071
- spreadsheetId=dataroom_folder_id,
16072
- body=write_body
16073
- ).execute()
16074
- logger.info("Activity‐метрики (r1) успешно загружены в Google‐таблицу.")
16094
+
16095
+ # 9) Делаем batchUpdate, чтобы записать всё из all_rows
16096
+ try:
16097
+ response = sheets_service.spreadsheets().values().batchUpdate(
16098
+ spreadsheetId=dataroom_folder_id,
16099
+ body=write_body
16100
+ ).execute()
16101
+ updated_cells = response.get('totalUpdatedCells', 0)
16102
+ logger.info(f"Успешно записано в Google Sheets: обновлено ячеек = {updated_cells}.")
16103
+ except Exception as e:
16104
+ logger.error(f"Ошибка при записи в Google Sheets: {e}")
16075
16105
  else:
16076
16106
  logger.warning(f"Файл с метриками не найден или не существует: {r1}")
16077
16107
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yeref
3
- Version: 0.24.96
3
+ Version: 0.24.97
4
4
  Summary: desc-f
5
5
  Author: john smith
6
6
  Dynamic: author
@@ -0,0 +1,8 @@
1
+ yeref/__init__.py,sha256=Qpv3o6Xa78VdLcsSRmctGtpnYE9btpAkCekgGhgJyXM,49
2
+ yeref/l_.py,sha256=LMX_olmJwq-tgoALJCnhV_fGrL_i_43yBLkLIcEVqGo,1176743
3
+ yeref/tonweb.js,sha256=Jf6aFOQ1OIY4q7fINYz-m5LsI3seMus124M5SYYZmtE,443659
4
+ yeref/yeref.py,sha256=jdG1SO9WRV8e0o8HjviTOMG-m4rxya1lcClakmVDVZc,1055625
5
+ yeref-0.24.97.dist-info/METADATA,sha256=MNCnHGJUW1SZaDvGSRhQClVxHOkxpX0KrrOI50o-aDM,119
6
+ yeref-0.24.97.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
+ yeref-0.24.97.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
8
+ yeref-0.24.97.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- yeref/__init__.py,sha256=Qpv3o6Xa78VdLcsSRmctGtpnYE9btpAkCekgGhgJyXM,49
2
- yeref/l_.py,sha256=LMX_olmJwq-tgoALJCnhV_fGrL_i_43yBLkLIcEVqGo,1176743
3
- yeref/tonweb.js,sha256=Jf6aFOQ1OIY4q7fINYz-m5LsI3seMus124M5SYYZmtE,443659
4
- yeref/yeref.py,sha256=Bfk-IETElHzdKl1GW3ZVK_vf1POOGS8aHSDd8tnvtXA,1053574
5
- yeref-0.24.96.dist-info/METADATA,sha256=hjnk-lihxaTZDzGAfZyqgYTw2adnX-iB-TZqMijo8I4,119
6
- yeref-0.24.96.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
- yeref-0.24.96.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
8
- yeref-0.24.96.dist-info/RECORD,,