diff --git a/backend/hoagiehelp/api/study_group_views.py b/backend/hoagiehelp/api/study_group_views.py index 27cb53f..04a201c 100644 --- a/backend/hoagiehelp/api/study_group_views.py +++ b/backend/hoagiehelp/api/study_group_views.py @@ -20,6 +20,7 @@ class Meta: "created_at", "updated_at", ) + read_only_fields = ("id", "leader", "created_at", "updated_at") class StudyGroupListView(APIView): @@ -35,7 +36,7 @@ def post(self, request) -> Response: """Create a new study group.""" serializer = StudyGroupSerializer(data=request.data) if serializer.is_valid(): - serializer.save() + serializer.save(leader=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/frontend/api/studyGroupService.ts b/frontend/api/studyGroupService.ts index 2152908..7e8262d 100644 --- a/frontend/api/studyGroupService.ts +++ b/frontend/api/studyGroupService.ts @@ -19,7 +19,6 @@ type StudyGroup = z.infer; type StudyGroupPayload = { title: string; description: string; - leader: number; meeting_datetime: string; max_spots: number; members: number[]; diff --git a/frontend/components/StudyGroupForm.tsx b/frontend/components/StudyGroupForm.tsx index 7c80f0e..d1e5918 100644 --- a/frontend/components/StudyGroupForm.tsx +++ b/frontend/components/StudyGroupForm.tsx @@ -4,6 +4,7 @@ import React, { useState } from 'react'; import { Pane, Textarea, Button, majorScale, minorScale } from 'evergreen-ui'; +import { createNewStudyGroup } from '@/api/studyGroupService'; interface FormState { title: string; category: string; @@ -22,7 +23,7 @@ const initialFormState: FormState = { date: '', time: '', location: '', - maxParticipants: 0, + maxParticipants: 5, description: '', }; @@ -39,10 +40,17 @@ export default function StudyGroupForm(): React.ReactElement { })); }; - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSubmitted(true); setCanceled(false); + await createNewStudyGroup({ + title: form.title, + description: form.description, + meeting_datetime: form.date + ' ' + form.time, + max_spots: form.maxParticipants, + members: [], + }); setForm(initialFormState); }; @@ -179,7 +187,7 @@ export default function StudyGroupForm(): React.ReactElement { {submitted && ( - Sutdy Group created successfully! + Study Group created successfully! )} {canceled && Edit canceled.}