Skip to content
Open
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
14 changes: 14 additions & 0 deletions app/database_etl/tableau_data_connector/google_services_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 1 addition & 0 deletions app/namespaces/google_spreadsheet/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .google_spreadsheet_controller import google_spreadsheet_ns
25 changes: 25 additions & 0 deletions app/namespaces/google_spreadsheet/google_spreadsheet_controller.py
Original file line number Diff line number Diff line change
@@ -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"
Comment on lines +17 to +19
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NP: Will we eventually move this to a constants file or .env? I know these are testing values but might be cleaner to keep them somewhere where we store constants.

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
8 changes: 0 additions & 8 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment on lines -72 to -79
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Saw your message about removing this diff but I thought I would just add a reminder :)

keyring~=23.0.1
kiwisolver~=1.3.1
lerc~=0.1.0
Expand Down