iyosha commited on
Commit
bea458c
·
verified ·
1 Parent(s): 9aacb8e

Update backend/backend.py

Browse files
Files changed (1) hide show
  1. backend/backend.py +27 -49
backend/backend.py CHANGED
@@ -7,7 +7,7 @@ from oauth2client.service_account import ServiceAccountCredentials
7
 
8
  class Backend:
9
  def __init__(self, sheet_name: str, credentials: str):
10
- creds_dict = json.loads(credentials)
11
  scope = [
12
  "https://spreadsheets.google.com/feeds",
13
  "https://www.googleapis.com/auth/drive",
@@ -26,82 +26,60 @@ class Backend:
26
  def add_row(
27
  self,
28
  index_in_dataset,
29
- audio_id,
30
- interpretation,
31
  transcription_id,
32
  user_id,
 
33
  user_name,
34
- ssr_answer,
35
- user_ssr_answer,
36
- ssr_label,
37
- ssd_answer,
38
- user_ssd_answer,
39
- ssd_label,
40
  ):
41
  timestamp = datetime.utcnow().isoformat()
42
  self.sheet.append_row(
43
  [
44
  index_in_dataset,
45
- audio_id,
46
- interpretation,
47
  transcription_id,
48
  user_id,
49
  user_name,
50
- ssr_answer,
51
- user_ssr_answer,
52
- ssr_label,
53
- ssd_answer,
54
- user_ssd_answer,
55
- ssd_label,
56
  timestamp,
57
  ]
58
  )
59
 
60
  def update_row(
61
- self,
62
- index_in_dataset,
63
- audio_id,
64
- user_id,
65
- new_ssr_answer=None,
66
- new_user_ssr_answer=None,
67
- new_ssr_label=None,
68
- new_ssd_answer=None,
69
- new_user_ssd_answer=None,
70
- new_ssd_label=None,
71
  ):
72
  records = self.get_all_rows().to_dict("records")
73
  for idx, row in enumerate(records):
74
  if (
75
- row["audio_id"] == audio_id
76
  and row["index_in_dataset"] == index_in_dataset
77
  and row["user_id"] == user_id
78
  ):
 
79
  sheet_row = (
80
  idx + 2
81
  ) # +2 because sheet rows are 1-indexed and header is row 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
 
83
- def update_cell_if_needed(column_name, new_value):
84
- if new_value is not None and row[column_name] != new_value:
85
- self.sheet.update_cell(
86
- sheet_row, self.header.index(column_name) + 1, new_value
87
- )
88
-
89
- update_cell_if_needed("ssr_answer", new_ssr_answer)
90
- update_cell_if_needed("user_ssr_answer", new_user_ssr_answer)
91
- update_cell_if_needed("ssr_label", new_ssr_label)
92
- update_cell_if_needed("ssd_answer", new_ssd_answer)
93
- update_cell_if_needed("user_ssd_answer", new_user_ssd_answer)
94
- update_cell_if_needed("ssd_label", new_ssd_label)
95
-
96
- # Always update timestamp if any answer was updated
97
- self.sheet.update_cell(
98
- sheet_row,
99
- self.header.index("timestamp") + 1,
100
- datetime.utcnow().isoformat(),
101
- )
102
  return True
103
  return False
104
 
105
- def get_answer_count(self, audio_id):
106
  df = self.get_all_rows()
107
- return df[df["audio_id"] == audio_id]["user_id"].nunique()
 
7
 
8
  class Backend:
9
  def __init__(self, sheet_name: str, credentials: str):
10
+ creds_dict = json.load(open(credentials))
11
  scope = [
12
  "https://spreadsheets.google.com/feeds",
13
  "https://www.googleapis.com/auth/drive",
 
26
  def add_row(
27
  self,
28
  index_in_dataset,
29
+ interpretation_id,
 
30
  transcription_id,
31
  user_id,
32
+ answer,
33
  user_name,
34
+ is_correct=None,
 
 
 
 
 
35
  ):
36
  timestamp = datetime.utcnow().isoformat()
37
  self.sheet.append_row(
38
  [
39
  index_in_dataset,
40
+ interpretation_id,
 
41
  transcription_id,
42
  user_id,
43
  user_name,
44
+ answer,
45
+ is_correct if is_correct is not None else "",
 
 
 
 
46
  timestamp,
47
  ]
48
  )
49
 
50
  def update_row(
51
+ self, index_in_dataset, interpretation_id, user_id, new_answer, is_correct=None
 
 
 
 
 
 
 
 
 
52
  ):
53
  records = self.get_all_rows().to_dict("records")
54
  for idx, row in enumerate(records):
55
  if (
56
+ row["interpretation_id"] == interpretation_id
57
  and row["index_in_dataset"] == index_in_dataset
58
  and row["user_id"] == user_id
59
  ):
60
+ # Update the is_correct field if provided
61
  sheet_row = (
62
  idx + 2
63
  ) # +2 because sheet rows are 1-indexed and header is row 1
64
+ if row["answer"] != new_answer:
65
+ self.sheet.update_cell(
66
+ sheet_row, self.header.index("answer") + 1, new_answer
67
+ )
68
+ self.sheet.update_cell(
69
+ sheet_row,
70
+ self.header.index("timestamp") + 1,
71
+ datetime.utcnow().isoformat(),
72
+ )
73
+ # update is_correct column
74
+ self.sheet.update_cell(
75
+ sheet_row,
76
+ self.header.index("is_correct") + 1,
77
+ is_correct if is_correct is not None else "",
78
+ )
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  return True
81
  return False
82
 
83
+ def get_answer_count(self, interpretation_id):
84
  df = self.get_all_rows()
85
+ return df[df["interpretation_id"] == interpretation_id]["user_id"].nunique()