Skip to content

Commit a05fb14

Browse files
Improving docker & gsheet publishing (#149)
* Update export_sheets.py (don't clear wk content) * rename sheet_id arg to sheet_name (to match content) * small docker using reorganization * improving gsheet publishing (updated start_cell logic, add clear_sheet logic)
1 parent caeaba6 commit a05fb14

File tree

4 files changed

+39
-28
lines changed

4 files changed

+39
-28
lines changed

.dockerignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.github
2+
.git
3+
forgejo
4+
Industrial_Nikolaev_AA_9381
5+
reports

Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
FROM python:3.10-slim
1+
FROM python:3.12-slim
22

3+
ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
34
WORKDIR /app
45

56
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
67

7-
COPY . /app
8-
8+
COPY requirements.txt .
99
RUN pip install --no-cache-dir -r requirements.txt
1010

11-
ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
11+
COPY . /app
1212

1313
ENTRYPOINT ["python", "main.py"]

main.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def parse_args():
4141
type=str,
4242
required=False,
4343
help='Starting cell for Google Sheets export (e.g., "A1", "B3")',
44-
default=None
44+
default="A1"
4545
)
4646

4747
parser.add_argument(
@@ -117,11 +117,17 @@ def parse_args():
117117
help='Specify Google sheet document id (can find in url)',
118118
)
119119
parser.add_argument(
120-
'--sheet_id',
120+
'--sheet_name',
121121
type=str,
122122
required=False,
123123
help='Specify title for a sheet in a document in which data will be printed',
124124
)
125+
parser.add_argument(
126+
"--clear_sheet",
127+
action="store_true",
128+
required=False,
129+
help="Specify to clear sheet content before printing",
130+
)
125131
args = parser.parse_args()
126132

127133
if args.export_google_sheets:
@@ -130,7 +136,7 @@ def parse_args():
130136
action.required = True
131137
if action.dest == 'table_id':
132138
action.required = True
133-
if action.dest == 'sheet_id':
139+
if action.dest == 'sheet_name':
134140
action.required = True
135141
return parser.parse_args()
136142

@@ -170,25 +176,24 @@ def run(args, binded_repos, repos_for_wiki=None):
170176
if args.wikis:
171177
wikipars.wikiparser(repos_for_wiki, args.download_repos, args.out)
172178
if args.export_google_sheets:
173-
if args.start_cell:
174-
export_sheets.write_data_to_table(
175-
args.out, args.google_token, args.table_id, args.sheet_id, args.start_cell
176-
)
177-
else:
178-
export_sheets.write_data_to_table(
179-
args.out, args.google_token, args.table_id, args.sheet_id
180-
)
179+
export_sheets.write_data_to_table(
180+
csv_path=args.out,
181+
google_token=args.google_token,
182+
table_id=args.table_id,
183+
sheet_name=args.sheet_name,
184+
start_cell=args.start_cell,
185+
clear_content=args.clear_sheet,
186+
)
181187

182188

183189
def main():
184190
args = parse_args()
185191

186-
if args.start_cell is not None:
187-
try:
188-
args.start_cell = validate_and_normalize_cell(args.start_cell)
189-
except ValueError as e:
190-
print(f"Error in start_cell argument: {e}")
191-
sys.exit(1)
192+
try:
193+
args.start_cell = validate_and_normalize_cell(args.start_cell)
194+
except ValueError as e:
195+
print(f"Error in start_cell argument: {e}")
196+
sys.exit(1)
192197

193198
if args.token:
194199
tokens = [args.token]

src/export_sheets.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,26 @@
44
INT_MASS = [{"one": 1, "two": 2, "what?": 3}]
55

66

7-
def write_data_to_table(csv_path, google_token, table_id, sheet_id, start_cell="A1"):
8-
if google_token and sheet_id and table_id:
7+
def write_data_to_table(csv_path, google_token, table_id, sheet_name, start_cell="A1", clear_content=False):
8+
if google_token and sheet_name and table_id:
99
gc = pygsheets.authorize(service_file=google_token)
1010
sh = gc.open_by_key(table_id)
1111

1212
try:
13-
sh.worksheets('title', sheet_id)
13+
sh.worksheets('title', sheet_name)
1414
except Exception:
15-
sh.add_worksheet(sheet_id)
15+
sh.add_worksheet(sheet_name)
1616

17-
wk_content = sh.worksheet_by_title(sheet_id)
17+
wk_content = sh.worksheet_by_title(sheet_name)
1818

1919
if csv_path:
2020
df = pd.read_csv(csv_path, delimiter=',', encoding='utf-8')
2121
else:
2222
df = pd.DataFrame(INT_MASS)
2323

2424
# Очистка существующих данных
25-
wk_content.clear()
25+
if clear_content:
26+
wk_content.clear()
2627

2728
# Запись новых данных
28-
wk_content.set_dataframe(df, start_cell, copy_head=True)
29+
wk_content.set_dataframe(df=df, start=start_cell, copy_head=True, nan='')

0 commit comments

Comments
 (0)