Skip to content

Commit f0c6b60

Browse files
KelvinLinBUQuanMPhm
authored andcommitted
Force CHROME_BIN_PATH env var to be validated at start of billing pipeline.
This makes use of `required_env_vars()`.
1 parent 6f4afb4 commit f0c6b60

File tree

4 files changed

+7
-11
lines changed

4 files changed

+7
-11
lines changed

process_report/invoices/pi_specific_invoice.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
import sys
32
from dataclasses import dataclass
43
import subprocess
54
import tempfile
@@ -10,10 +9,10 @@
109

1110
import process_report.invoices.invoice as invoice
1211
import process_report.util as util
12+
from process_report.settings import invoice_settings
1313

1414

1515
TEMPLATE_DIR_PATH = "process_report/templates"
16-
CHROME_BIN_PATH = os.environ.get("CHROME_BIN_PATH", "/usr/bin/chromium")
1716

1817

1918
logger = logging.getLogger(__name__)
@@ -134,17 +133,12 @@ def _create_html_invoice(temp_fd):
134133
temp_fd.flush()
135134

136135
def _create_pdf_invoice(temp_fd_name):
137-
if not os.path.exists(CHROME_BIN_PATH):
138-
sys.exit(
139-
f"Chrome binary does not exist at {CHROME_BIN_PATH}. Make sure the env var CHROME_BIN_PATH is set correctly and that Google Chrome is installed"
140-
)
141-
142136
invoice_pdf_path = (
143137
f"{self.name}/{pi_instituition}_{pi}_{self.invoice_month}.pdf"
144138
)
145139
subprocess.run(
146140
[
147-
CHROME_BIN_PATH,
141+
invoice_settings.chrome_bin_path,
148142
"--headless",
149143
"--no-sandbox",
150144
f"--print-to-pdf={invoice_pdf_path}",

process_report/process_report.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def validate_required_env_vars(required_env_vars):
5050

5151
def main():
5252
"""Remove non-billable PIs and projects"""
53-
required_env_vars = []
53+
required_env_vars = ["CHROME_BIN_PATH"]
5454
if not invoice_settings.coldfront_api_filepath:
5555
required_env_vars.extend(["KEYCLOAK_CLIENT_ID", "KEYCLOAK_CLIENT_SECRET"])
5656
validate_required_env_vars(required_env_vars)

process_report/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class Settings(BaseSettings):
1818
fetch_from_s3: bool = True
1919
upload_to_s3: bool = False
2020

21+
chrome_bin_path: str | None = None
22+
2123
# S3 Files
2224
pi_remote_filepath: str = "PIs/PI.csv"
2325
alias_remote_filepath: str = "PIs/alias.csv"

process_report/tests/unit/invoices/test_pi_specific_invoice.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
import os
12
import tempfile
23
from unittest import TestCase, mock
34
import pandas
45

56
from process_report.tests import util as test_utils
6-
from process_report.invoices.pi_specific_invoice import CHROME_BIN_PATH
77

88

99
class TestPISpecificInvoice(TestCase):
@@ -155,7 +155,7 @@ def test_export_pi(self, mock_subprocess_run, mock_path_exists, mock_filter_cols
155155
for i, pi_pdf_path in enumerate([pi_pdf_1, pi_pdf_2]):
156156
chrome_arglist, _ = mock_subprocess_run.call_args_list[i]
157157
answer_arglist = [
158-
CHROME_BIN_PATH,
158+
os.environ.get("CHROME_BIN_PATH", "/usr/bin/chromium"),
159159
"--headless",
160160
"--no-sandbox",
161161
f"--print-to-pdf={pi_pdf_path}",

0 commit comments

Comments
 (0)