Skip to content

Commit 2f35855

Browse files
committed
Did some backend work
1 parent 26cac3b commit 2f35855

File tree

15 files changed

+221
-41
lines changed

15 files changed

+221
-41
lines changed

.idea/workspace.xml

Lines changed: 50 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/.idea/backend.iml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/.idea/misc.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/.idea/modules.xml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/barnyard/AddPartHandler.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import gspread
2+
import tornado.web
3+
import uuid
4+
5+
from barnyard.GspreadApiHandler import GspreadApiHandler, PART_START_RANGE, PART_END_RANGE
6+
7+
8+
class AddPartHandler(GspreadApiHandler):
9+
async def _add_part(self, uuid_str: str, name: str, description: str, location: str, image_url: str,
10+
component_group: str) -> None:
11+
# TODO(Bobby): Add component group name whitelist verification
12+
13+
part_sheet = self.work_sheet.sheet1
14+
15+
parts_found = len(await part_sheet.col_values(1))
16+
17+
batch_dict = {
18+
"range": PART_START_RANGE + str(parts_found + 1) + ":" + PART_END_RANGE + str(parts_found + 1),
19+
"values": [[uuid_str, name, description, location, image_url, component_group]]
20+
}
21+
22+
await part_sheet.batch_update(batch_dict)
23+
24+
async def _add_part_to_bom(self, name: str, description: str, location: str, image_url: str,
25+
component_group: str) -> None:
26+
await self._add_part(name, description, location, image_url, component_group)
27+
28+
@tornado.web.asynchronous
29+
async def post(self):
30+
await self.initialize()
31+
32+
add_bom = self.get_argument("add_bom", "")
33+
component_group = self.get_argument("component_group")
34+
description = self.get_argument("description")
35+
image_url = self.get_argument("image_url")
36+
location = self.get_argument("location")
37+
name = self.get_argument("name")
38+
uuid_str = "tempuuid-" + str(uuid.uuid4())
39+
40+
await self._add_part(uuid_str, name, description, location, image_url, component_group)
41+
42+
if bool(add_bom):
43+
item_name = self.get_argument("item_name", "")
44+
price_per_item = self.get_argument("price_per_item")
45+
quantity = self.get_argument("quantity")
46+
robot = bool(self.get_argument("robot", ""))
47+
exempt = bool(self.get_argument("exempt", ""))
48+
owned = bool(self.get_argument("owned", ""))
49+
order_link = self.get_argument()
50+
51+
await self._add_part_to_bom(uuid_str, name, item_name)
52+
53+
await self.finish()
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import tornado.web
2+
3+
4+
class EditPartHandler(tornado.web.RequestHandler):
5+
pass
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import gspread
2+
import tornado.web
3+
4+
from google.auth.transport import requests
5+
from google.oauth2 import id_token
6+
7+
from oauth2client.service_account import ServiceAccountCredentials
8+
9+
#BOM_SPREADSHEET_KEY = "1wbed8AVmHUnviFJ5UjbqFI_ShyPjAE1CBUEJyeIE8n4"
10+
CLIENT_ID = "637060621328-uc4ag2saftdl5vr82i2jjpk1l0tk76m4.apps.googleusercontent.com"
11+
SCOPES = ['https://spreadsheets.google.com/feeds',
12+
'https://www.googleapis.com/auth/drive']
13+
SPREADSHEET_KEY = "1zRSYqFLEEHLTDiMwv_tjmZ2aUK3V4LZ9E4OVBDFX_OI"
14+
15+
PART_START_RANGE = "A"
16+
PART_END_RANGE = "F"
17+
18+
19+
class GspreadApiHandler(tornado.web.RequestHandler):
20+
bom_sheet = None
21+
config = {}
22+
work_sheet = None
23+
24+
_initialized = False
25+
_sheets_service = None
26+
27+
async def initialize(self) -> None:
28+
if not self._initialized:
29+
credentials = await ServiceAccountCredentials.from_json_keyfile_name("client_secret.json", SCOPES)
30+
31+
self._sheets_service = await gspread.authorize(credentials)
32+
33+
self.work_sheet = await self._sheets_service.open_by_key(SPREADSHEET_KEY)
34+
35+
afondkljjbfdjdgfklfggfd
36+
37+
self._initialized = True
38+
39+
assert(self.bom_sheet is not None and self.work_sheet is not None)
40+
41+
async def verify_login(self, token) -> str:
42+
try:
43+
id_info = await id_token.verify_oauth2_token(token, requests.Request(), CLIENT_ID)
44+
except ValueError:
45+
return "invalid token"
46+

0 commit comments

Comments
 (0)