Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conflict resolution #355

Merged
merged 7 commits into from
May 20, 2023
Merged
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
57 changes: 43 additions & 14 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ def create_club(request: CreateClubRequest):
clubs = db.collection(u'clubs').stream()
for club in clubs:
if club.to_dict()['name'] == request.name:
return {"message": "club already exists"}
return {"message": "failed", "exception" : "club already exists"}

club = Club(
id=str(uuid.uuid4()),
Expand All @@ -390,8 +390,11 @@ def create_club(request: CreateClubRequest):
)

db.collection(u'clubs').document(f'{club.id}').set(club.serialize())

# add club to each leader's club list in their user document

for leader_id in request.leader_ids:
user = db.collection(u'users').document(f'{leader_id}').get().to_dict()
user['club_ids'].append(club.id)
db.collection(u'users').document(f'{leader_id}').update(user)

return {"message": "success"}

Expand Down Expand Up @@ -467,6 +470,7 @@ def announce_club(request: AnnounceClubRequest):

club['group_notice'] = request.announcement
club['group_notice_last_updated'] = datetime.now()
club['group_notice_author'] = request.leader_name
try:
db.collection(u'clubs').document(f'{request.club_id}').update(club)
return {"message": "success"}
Expand All @@ -476,13 +480,17 @@ def announce_club(request: AnnounceClubRequest):
@app.post("/club/event/create", status_code=200)
def create_club_event(request: CreateClubEventRequest):

start = datetime.strptime(f'{request.start_date} {request.start_time}', '%Y-%m-%d %H:%M:%S')
end = datetime.strptime(f'{request.end_date} {request.end_time}', '%Y-%m-%d %H:%M:%S')
club = db.collection(u'clubs').document(f'{request.club_id}').get().to_dict()
if request.leader_id not in club['leader_ids']:
return {"message" : "user is not a leader of the club"}

start = datetime.strptime(f'{request.start}', '%Y-%m-%d %H:%M:%S')
end = datetime.strptime(f'{request.end}', '%Y-%m-%d %H:%M:%S')

event = ClubEvent(
id=str(uuid.uuid4()),
club_id=request.club_id,
name=request.name,
title=request.title,
description=request.description,
start = start,
end = end,
Expand All @@ -498,16 +506,23 @@ def create_club_event(request: CreateClubEventRequest):

@app.post("/club/event/delete", status_code=200)
def delete_club_event(request: DeleteClubEventRequest):

club = db.collection(u'clubs').document(f'{request.club_id}').get().to_dict()
if request.leader_id not in club['leader_ids']:
return {"message": "user is not a leader of the club"}

try:

club = db.collection(u'clubs').document(f'{request.club_id}').get().to_dict()
events = club['club_events']

for event in events:
if event['id'] == request.event_id:
if event['id'] == request.id:
events.remove(event)
break

club['club_events'] = events
db.collection(u'clubs').document(f'{request.club_id}').update(club)

return {"message": "success"}

Expand All @@ -518,13 +533,20 @@ def delete_club_event(request: DeleteClubEventRequest):
@app.post("/club/event/update", status_code=200)
def update_club_event(request: UpdateClubEventRequest):

start = datetime.strptime(f'{request.start_date} {request.start_time}', '%Y-%m-%d %H:%M:%S')
end = datetime.strptime(f'{request.end_date} {request.end_time}', '%Y-%m-%d %H:%M:%S')
try:
club = db.collection(u'clubs').document(f'{request.club_id}').get().to_dict()
if request.leader_id not in club['leader_ids']:
return {"message": "user is not a leader of the club"}
except:
return {"message": "failed", "exception": "club does not exist"}

start = datetime.strptime(f'{request.start}', '%Y-%m-%d %H:%M:%S')
end = datetime.strptime(f'{request.end}', '%Y-%m-%d %H:%M:%S')

event = ClubEvent(
id=request.event_id,
id=request.id,
club_id=request.club_id,
name=request.name,
title=request.title,
description=request.description,
start = start,
end = end,
Expand All @@ -534,11 +556,18 @@ def update_club_event(request: UpdateClubEventRequest):
club = db.collection(u'clubs').document(f'{request.club_id}').get().to_dict()
events = club['club_events']

for i in range(len(events)):
if events[i]['id'] == request.event_id:
events[i] = event.serialize()
for e in events:
if e['id'] == request.id:
events.remove(e)
events.append(event.serialize())
break

try:
club['club_events'] = events
db.collection(u'clubs').document(f'{request.club_id}').update(club)
except:
return {"message": "failed"}

return {"message": "success"}

####### ROUTES [SPORTS] #######
Expand Down
2 changes: 2 additions & 0 deletions src/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ def __init__(self, id, name, description, leader_ids, member_ids, group_notice,
self.member_ids = member_ids
self.group_notice = group_notice
self.group_notice_last_updated = datetime.now()
self.group_notice_author = ""
self.leader_names = leader_names
self.member_names = member_names
self.club_events = []
Expand All @@ -235,6 +236,7 @@ def serialize(self):
'member_ids': self.member_ids,
'group_notice': self.group_notice,
'group_notice_last_updated': self.group_notice_last_updated,
'group_notice_author': self.group_notice_author,
'leader_names': self.leader_names,
'member_names': self.member_names,
'club_events': self.club_events,
Expand Down
34 changes: 17 additions & 17 deletions src/requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,41 +76,41 @@ class AnnounceClubRequest(BaseModel):
club_id: str
leader_id: str
announcement: str
leader_name: str

class CreateClubEventRequest(BaseModel):
club_id: str
name: str
title: str
description: str
start_date: str
start_time: str
end_date: str
end_time: str
start: str
end: str
location: str
leader_id: str

class Config:
schema_extra = {
"example": {
"start_time" : "12:00:00",
"start_date" : "2021-01-01",
"end_time" : "13:00:00",
"end_date" : "2021-01-01",
"name" : "Cringe Club Meeting",
"club_id" : "1234567890",
"start": "2012-01-01 12:00:00",
"end": "2012-01-01 13:00:00",
"title" : "Cringe Club Meeting",
"description" : "Meeting to discuss how cringe we are.",
"location" : "Room 123"
"location" : "Room 123",
"leader_id" : "0987654321",
}
}

class UpdateClubEventRequest(BaseModel):
club_id: str
id: str
name: str
title: str
description: str
start_date: str
start_time: str
end_date: str
end_time: str
start: str
end: str
location: str
leader_id: str

class DeleteClubEventRequest(BaseModel):
club_id: str
id: str
id: str
leader_id: str
Loading