saq1b commited on
Commit
79d4dc3
·
verified ·
1 Parent(s): 4e4b096

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +52 -8
main.py CHANGED
@@ -43,7 +43,11 @@ VALUES_DUPE_SPREADSHEET_ID = os.getenv('VALUES_DUPE_SPREADSHEET_ID', '1Toe07o3P5
43
  # New spreadsheet for Teams and Servers data
44
  TEAMS_SERVERS_SPREADSHEET_ID = os.getenv('TEAMS_SERVERS_SPREADSHEET_ID', '1HWnvzPd4AtRdAroXnwQaN4Dcpj6lZbtnCBavqiAxokQ')
45
 
46
- SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']
 
 
 
 
47
 
48
  # Sheet Names and Ranges within SCAMMER_DWC_SPREADSHEET_ID
49
  USER_SCAMMER_SHEET = "User Scammer Files"
@@ -1280,20 +1284,60 @@ class TeamMemberLike(BaseModel):
1280
 
1281
  @app.post("/api/teams/like")
1282
  async def like_team_member(data: TeamMemberLike):
1283
- """Increment like count for a team member (to be implemented with spreadsheet update)"""
1284
  check_cache_readiness()
1285
 
1286
  # Find the team member by discord_user_id
1287
  discord_user_id = data.discord_user_id.strip()
1288
  teams = cache.get("teams", [])
1289
 
1290
- for member in teams:
1291
  if member.get("discord_user_id") == discord_user_id:
1292
- # In a real implementation, this would update the spreadsheet
1293
- # For now, just update the cache
1294
- member["likes"] = member.get("likes", 0) + 1
1295
- member["last_updated"] = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
1296
- return {"success": True, "likes": member["likes"]}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1297
 
1298
  raise HTTPException(status_code=404, detail=f"Team member with discord_user_id {discord_user_id} not found")
1299
 
 
43
  # New spreadsheet for Teams and Servers data
44
  TEAMS_SERVERS_SPREADSHEET_ID = os.getenv('TEAMS_SERVERS_SPREADSHEET_ID', '1HWnvzPd4AtRdAroXnwQaN4Dcpj6lZbtnCBavqiAxokQ')
45
 
46
+ # Scopes for read and write access to spreadsheets
47
+ SCOPES = [
48
+ 'https://www.googleapis.com/auth/spreadsheets.readonly',
49
+ 'https://www.googleapis.com/auth/spreadsheets' # Added write access
50
+ ]
51
 
52
  # Sheet Names and Ranges within SCAMMER_DWC_SPREADSHEET_ID
53
  USER_SCAMMER_SHEET = "User Scammer Files"
 
1284
 
1285
  @app.post("/api/teams/like")
1286
  async def like_team_member(data: TeamMemberLike):
1287
+ """Increment like count for a team member and update spreadsheet"""
1288
  check_cache_readiness()
1289
 
1290
  # Find the team member by discord_user_id
1291
  discord_user_id = data.discord_user_id.strip()
1292
  teams = cache.get("teams", [])
1293
 
1294
+ for index, member in enumerate(teams):
1295
  if member.get("discord_user_id") == discord_user_id:
1296
+ # Increment the like count
1297
+ current_likes = member.get("likes", 0)
1298
+ new_likes = current_likes + 1
1299
+ member["likes"] = new_likes
1300
+
1301
+ # Update the spreadsheet
1302
+ try:
1303
+ # We need to use sheets.spreadsheets().values().update()
1304
+ # First, find the row index in the sheet for this member
1305
+ if sheets_service:
1306
+ # Get all values to find the correct row
1307
+ result = sheets_service.spreadsheets().values().get(
1308
+ spreadsheetId=TEAMS_SERVERS_SPREADSHEET_ID,
1309
+ range=f"{quote_sheet_name(TEAMS_SHEET)}!B:C" # Get discord usernames and IDs
1310
+ ).execute()
1311
+
1312
+ values = result.get('values', [])
1313
+ row_index = None
1314
+
1315
+ # Find the row with matching discord_user_id (column C in the sheet)
1316
+ for i, row in enumerate(values):
1317
+ if len(row) > 1 and row[1] == discord_user_id:
1318
+ # Add 1 for header row and +5 since we start from row 6
1319
+ row_index = i + 6
1320
+ break
1321
+
1322
+ if row_index:
1323
+ # Update likes (column J)
1324
+ sheets_service.spreadsheets().values().update(
1325
+ spreadsheetId=TEAMS_SERVERS_SPREADSHEET_ID,
1326
+ range=f"{quote_sheet_name(TEAMS_SHEET)}!J{row_index}",
1327
+ valueInputOption="RAW",
1328
+ body={"values": [[new_likes]]}
1329
+ ).execute()
1330
+
1331
+ logger.info(f"Updated likes for user {discord_user_id} to {new_likes} in spreadsheet")
1332
+ else:
1333
+ logger.error(f"Could not find row for user {discord_user_id} in spreadsheet")
1334
+ else:
1335
+ logger.error("Google Sheets service not available for updating likes")
1336
+ except Exception as e:
1337
+ logger.error(f"Error updating likes in spreadsheet: {e}")
1338
+ # Continue with returning updated likes even if spreadsheet update fails
1339
+
1340
+ return {"success": True, "likes": new_likes}
1341
 
1342
  raise HTTPException(status_code=404, detail=f"Team member with discord_user_id {discord_user_id} not found")
1343