Skip to content

Commit f920b51

Browse files
committed
feat: add track to users. modify: adjusted sync users function to add track based on groupName ('faction name' or 's2+')
1 parent 707584d commit f920b51

File tree

3 files changed

+43
-6
lines changed

3 files changed

+43
-6
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""add: track column to users
2+
3+
Revision ID: efcbeca45721
4+
Revises: 40774b92ab4a
5+
Create Date: 2025-08-15 03:41:47.298109
6+
7+
"""
8+
from typing import Sequence, Union
9+
10+
from alembic import op
11+
import sqlalchemy as sa
12+
13+
14+
# revision identifiers, used by Alembic.
15+
revision: str = 'efcbeca45721'
16+
down_revision: Union[str, None] = '40774b92ab4a'
17+
branch_labels: Union[str, Sequence[str], None] = None
18+
depends_on: Union[str, Sequence[str], None] = None
19+
20+
21+
def upgrade() -> None:
22+
"""Upgrade schema."""
23+
op.add_column('users', sa.Column('track', sa.Integer(), nullable=False ))
24+
25+
26+
def downgrade() -> None:
27+
"""Downgrade schema."""
28+
op.drop_column('users', 'track')
29+

app/db/crud.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ def submit_task(db: Session, mentee_id: int, task_id: int, start_date: date, com
6767
credentials = ServiceAccountCredentials.from_json_keyfile_name(CREDS_FILE, SCOPE)
6868
client = gspread.authorize(credentials)
6969
if(task.track_id == 1):
70-
sheet = client.open("Copy of Praveshan 2025 Master DB").worksheet("S1 Submissions")
70+
sheet = client.open("Copy of Praveshan 2025 Master DB").worksheet("Sheet16") # Change sheet name
7171
cell = sheet.find(mentee.name)
72+
print(sheet)
7273
if not cell:
7374
name_column = sheet.col_values(1)
7475
row = len(name_column) + 1
@@ -78,7 +79,7 @@ def submit_task(db: Session, mentee_id: int, task_id: int, start_date: date, com
7879
row = cell.row
7980
sheet.update_cell(row, task.task_no+2, commit_hash)
8081
elif(task.track_id == 2):
81-
sheet = client.open("Copy of Praveshan 2025 Master DB").worksheet("S2 Submissions")
82+
sheet = client.open("Copy of Praveshan 2025 Master DB").worksheet("Sheet16") # Change sheet name
8283
cell = sheet.find(mentee.name)
8384
if not cell:
8485
name_column = sheet.col_values(1)
@@ -179,8 +180,8 @@ def get_submissions_for_user(db: Session, email: str, track_id: Optional[int] =
179180
def get_sheet_data():
180181
creds = ServiceAccountCredentials.from_json_keyfile_name(CREDS_FILE, SCOPE)
181182
client = gspread.authorize(creds)
182-
worksheet = client.open_by_key(os.getenv("GOOGLE_SHEET_ID")).worksheet("Praveshan Phase 3") # Change sheet name
183-
expected_headers = ["Name", "Email Address"]
183+
worksheet = client.open_by_key(os.getenv("GOOGLE_SHEET_ID")).worksheet("Sheet17") # Change sheet name
184+
expected_headers = ["Name", "Email Address","Faction name"]
184185
data = worksheet.get_all_records(expected_headers=expected_headers)
185186
return data
186187

@@ -191,13 +192,18 @@ def sync_users_from_sheet():
191192
print(f"Loaded {len(rows)} rows from sheet.")
192193
inserted_count = 0
193194
for row in rows:
195+
Faction_name = row.get("Faction name", "")
194196
email = row.get("Email Address", "").strip()
195197
name = row.get("Name", "").strip()
196198
if not email or not name:
197199
continue
198200
if get_user_by_email(db, email):
199201
continue
200-
user = models.User(name=name, email=email, role="mentee")
202+
if Faction_name=="S2+":
203+
track = 2
204+
else:
205+
track=1
206+
user = models.User(name=name, email=email, role="mentee",group_name=Faction_name ,track=track)
201207
db.add(user)
202208
inserted_count += 1
203209

@@ -206,4 +212,5 @@ def sync_users_from_sheet():
206212
except Exception as e:
207213
print(f"Error syncing users: {e}")
208214
finally:
209-
db.close()
215+
db.close()
216+

app/db/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class User(Base):
1010
name = Column(String, nullable=False)
1111
role = Column(String, nullable=False) # "mentor" or "mentee"
1212
group_name = Column(String, nullable=True)
13+
track = Column(Integer, nullable=False) # first year or s2+
1314

1415
class Track(Base):
1516
__tablename__ = "tracks"

0 commit comments

Comments
 (0)