Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.github
.git
forgejo
Industrial_Nikolaev_AA_9381
reports
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
FROM python:3.10-slim
FROM python:3.12-slim

ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
WORKDIR /app

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

COPY . /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
COPY . /app

ENTRYPOINT ["python", "main.py"]
39 changes: 22 additions & 17 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def parse_args():
type=str,
required=False,
help='Starting cell for Google Sheets export (e.g., "A1", "B3")',
default=None
default="A1"
)

parser.add_argument(
Expand Down Expand Up @@ -117,11 +117,17 @@ def parse_args():
help='Specify Google sheet document id (can find in url)',
)
parser.add_argument(
'--sheet_id',
'--sheet_name',
type=str,
required=False,
help='Specify title for a sheet in a document in which data will be printed',
)
parser.add_argument(
"--clear_sheet",
action="store_true",
required=False,
help="Specify to clear sheet content before printing",
)
args = parser.parse_args()

if args.export_google_sheets:
Expand All @@ -130,7 +136,7 @@ def parse_args():
action.required = True
if action.dest == 'table_id':
action.required = True
if action.dest == 'sheet_id':
if action.dest == 'sheet_name':
action.required = True
return parser.parse_args()

Expand Down Expand Up @@ -170,25 +176,24 @@ def run(args, binded_repos, repos_for_wiki=None):
if args.wikis:
wikipars.wikiparser(repos_for_wiki, args.download_repos, args.out)
if args.export_google_sheets:
if args.start_cell:
export_sheets.write_data_to_table(
args.out, args.google_token, args.table_id, args.sheet_id, args.start_cell
)
else:
export_sheets.write_data_to_table(
args.out, args.google_token, args.table_id, args.sheet_id
)
export_sheets.write_data_to_table(
csv_path=args.out,
google_token=args.google_token,
table_id=args.table_id,
sheet_name=args.sheet_name,
start_cell=args.start_cell,
clear_content=args.clear_sheet,
)


def main():
args = parse_args()

if args.start_cell is not None:
try:
args.start_cell = validate_and_normalize_cell(args.start_cell)
except ValueError as e:
print(f"Error in start_cell argument: {e}")
sys.exit(1)
try:
args.start_cell = validate_and_normalize_cell(args.start_cell)
except ValueError as e:
print(f"Error in start_cell argument: {e}")
sys.exit(1)

if args.token:
tokens = [args.token]
Expand Down
15 changes: 8 additions & 7 deletions src/export_sheets.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,26 @@
INT_MASS = [{"one": 1, "two": 2, "what?": 3}]


def write_data_to_table(csv_path, google_token, table_id, sheet_id, start_cell="A1"):
if google_token and sheet_id and table_id:
def write_data_to_table(csv_path, google_token, table_id, sheet_name, start_cell="A1", clear_content=False):
if google_token and sheet_name and table_id:
gc = pygsheets.authorize(service_file=google_token)
sh = gc.open_by_key(table_id)

try:
sh.worksheets('title', sheet_id)
sh.worksheets('title', sheet_name)
except Exception:
sh.add_worksheet(sheet_id)
sh.add_worksheet(sheet_name)

wk_content = sh.worksheet_by_title(sheet_id)
wk_content = sh.worksheet_by_title(sheet_name)

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

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

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