diff --git a/app/database_etl/tableau_data_connector/google_services_manager.py b/app/database_etl/tableau_data_connector/google_services_manager.py index aa983b5b..c6cff5f8 100644 --- a/app/database_etl/tableau_data_connector/google_services_manager.py +++ b/app/database_etl/tableau_data_connector/google_services_manager.py @@ -57,3 +57,17 @@ def update_sheet(self, spreadsheet_id, df): body = f'Error loading Tableau CSV to google sheets: {e}' send_slack_message(body, channel='#dev-logging-etl') return + + def append_sheet(self, spreadsheet_id, values, range_name): + sheet = self.client_service.spreadsheets() + body = { + 'values': values + } + try: + # Not sure about the range, will have to test to see if it works + sheet.values().append(spreadsheetId=spreadsheet_id, range=self.range, + body=body, valueInputOption="RAW").execute() + except (HttpError, BatchError) as e: + body = f'Error loading Tableau CSV to google sheets: {e}' + send_slack_message(body, channel='#dev-logging-etl') + return diff --git a/app/namespaces/google_spreadsheet/__init__.py b/app/namespaces/google_spreadsheet/__init__.py new file mode 100644 index 00000000..3ddf0b90 --- /dev/null +++ b/app/namespaces/google_spreadsheet/__init__.py @@ -0,0 +1 @@ +from .google_spreadsheet_controller import google_spreadsheet_ns \ No newline at end of file diff --git a/app/namespaces/google_spreadsheet/google_spreadsheet_controller.py b/app/namespaces/google_spreadsheet/google_spreadsheet_controller.py new file mode 100644 index 00000000..f2e49f2f --- /dev/null +++ b/app/namespaces/google_spreadsheet/google_spreadsheet_controller.py @@ -0,0 +1,25 @@ +from flask import request +from flask_restplus import Resource, Namespace + +from app.database_etl.tableau_data_connector.google_services_manager import GoogleSheetsManager + +google_spreadsheet_ns = Namespace('google_spreadsheet', description='Endpoints for making changes to google sheets') + + +@google_spreadsheet_ns.route("/newsletter", methods=["POST"]) +class AppendNewsletterSignup(Resource): + @google_spreadsheet_ns.doc("An endpoint for adding new newslettter signups to the newsletter spreadsheet") + def post(self): + data = request.get_json() + if not data: + return {"message": "No input payload provided"}, 400 + + sheet_name = "Sheet1" + spreadsheet_id = "" + range_name = "!A1:B1" + values = data.get("values") + + g_client = GoogleSheetsManager(sheet_name) + g_client.append_sheet(spreadsheet_id=spreadsheet_id, range_name=range_name, values=values) + + return {"Message": "Added email to spreadsheet"}, 200 diff --git a/requirements.txt b/requirements.txt index b7c7db6c..ba969097 100644 --- a/requirements.txt +++ b/requirements.txt @@ -69,14 +69,6 @@ Jinja2~=2.11.2 jmespath~=0.10.0 json5~=0.9.5 jsonschema~=3.2.0 -jupyter-client~=6.1.11 -jupyter-core~=4.7.1 -jupyter-packaging~=0.9.2 -jupyter-server~=1.6.4 -jupyterlab~=3.0.14 -jupyterlab-pygments~=0.1.2 -jupyterlab-server~=2.5.0 -jupyterlab-widgets~=1.0.0 keyring~=23.0.1 kiwisolver~=1.3.1 lerc~=0.1.0