From c72dfa1e1e6f56c421a5eb5329a379b46024ef73 Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Fri, 29 May 2026 10:15:58 +0700 Subject: [PATCH] feat: baca SESSION_ID, USER_ID, EMPLOYEE_ID dari .env Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 4 ++++ .gitignore | 1 + daily_timesheet.py | 26 ++++++++++++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..53130ca --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +SESSION_ID=your_session_id_here +USER_ID=41 +EMPLOYEE_ID=37 +AUTHOR=sas.fajri diff --git a/.gitignore b/.gitignore index 491017b..633bb6d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ run_daily.sh +.env .claude/ pending_*.json done_*.json diff --git a/daily_timesheet.py b/daily_timesheet.py index 5459377..8a0fd4d 100755 --- a/daily_timesheet.py +++ b/daily_timesheet.py @@ -11,6 +11,7 @@ Contoh: Task A span 2 jam + Task B span 1.5 jam + Task C 1 commit → """ import json +import os import re import subprocess import urllib.request @@ -19,6 +20,23 @@ import argparse from datetime import date, datetime, timedelta from collections import defaultdict from decimal import Decimal, ROUND_HALF_UP +from pathlib import Path + + +def load_env() -> dict: + """Baca .env dari direktori script, return dict key=value.""" + env_path = Path(__file__).parent / ".env" + env = {} + if env_path.exists(): + for line in env_path.read_text().splitlines(): + line = line.strip() + if line and not line.startswith("#") and "=" in line: + k, v = line.split("=", 1) + env[k.strip()] = v.strip() + return env + + +ENV = load_env() BASE_URL = "https://odoo.aplikasi.web.id" TOTAL_HOURS = 8 @@ -243,10 +261,10 @@ def main(): today = date.today().isoformat() parser = argparse.ArgumentParser(description="Daily timesheet: commit → Odoo (8 jam pro-rata)") - parser.add_argument("--session-id", required=True, help="session_id cookie Odoo") - parser.add_argument("--author", required=True, help="Git author filter, e.g. 'fajri'") - parser.add_argument("--user-id", required=True, type=int, help="ID user Odoo") - parser.add_argument("--employee-id", required=True, type=int, help="ID employee Odoo") + parser.add_argument("--session-id", default=ENV.get("SESSION_ID"), help="session_id cookie Odoo") + parser.add_argument("--author", default=ENV.get("AUTHOR"), help="Git author filter") + parser.add_argument("--user-id", default=ENV.get("USER_ID"), type=int, help="ID user Odoo") + parser.add_argument("--employee-id", default=ENV.get("EMPLOYEE_ID"), type=int, help="ID employee Odoo") parser.add_argument("--date", default=today, help=f"Tanggal YYYY-MM-DD (default: {today})") parser.add_argument("--dry-run", action="store_true", help="Preview saja, tidak upload") parser.add_argument("--save-pending", action="store_true", help="Simpan ke pending.json + notifikasi macOS")