diff --git a/wahlfang_api/views.py b/wahlfang_api/views.py index 7eb09fc6671f3c468b42be7f73e0d7f135da52b4..710b3f31dbb788039ab63a2b0419c92902e4b792 100644 --- a/wahlfang_api/views.py +++ b/wahlfang_api/views.py @@ -94,7 +94,7 @@ class ManagerElectionView(generics.ListCreateAPIView, generics.DestroyAPIView): return election def perform_create(self, serializer): - serializer.save(manager=self.request.user) + serializer.save() def get_queryset(self): manager_sesions = self.request.user.sessions.all() diff --git a/wahlfang_web/src/pages/ManagementApp.js b/wahlfang_web/src/pages/ManagementApp.js index d5e3123a6f6760864d1f043da37b6c30ffe34ce5..a0dc74827dbb9affb948135c1d1775888cfba2c2 100644 --- a/wahlfang_web/src/pages/ManagementApp.js +++ b/wahlfang_web/src/pages/ManagementApp.js @@ -24,7 +24,6 @@ export default function ManagementApp() { useEffect(() => { const authToken = loadManagerToken(); if (authToken && authToken.access && isTokenValid(authToken.access)) { - console.log(authToken.access) setAuthenticated(true); setLoading(false); managementWS.initWs(); @@ -71,7 +70,7 @@ export default function ManagementApp() { <Route exact path={`${path}/sessions/:id`}> <SessionDetail/> </Route> - <Route exact path={`${path}/election`}> + <Route exact path={`${path}/sessions/:id/election`}> <CreateElection/> </Route> <ManagerAuthenticatedRoute> diff --git a/wahlfang_web/src/pages/management/AddSession.js b/wahlfang_web/src/pages/management/AddSession.js index 4f2b709d9f976b9b8fccc36f579b29caf131ff37..5bf64365545e8f4e92685de05b47f12e52e8d43f 100644 --- a/wahlfang_web/src/pages/management/AddSession.js +++ b/wahlfang_web/src/pages/management/AddSession.js @@ -17,9 +17,7 @@ import {sessionList} from "../../state/management"; export default function AddSession() { const [toggle, setToggle] = useState(false); const [date, onDateChange] = useState(new Date()); - const [sessions, setSessions] = useRecoilState(sessionList); - - + const [sessions, setSessions] = useRecoilState(sessionList); const history = useHistory(); @@ -128,7 +126,7 @@ export default function AddSession() { </Formik> </div> ); - + // TODO: Change advanced options to accordion const SendTestEmailForm = () => ( <div> <Formik diff --git a/wahlfang_web/src/pages/management/CreateElection.js b/wahlfang_web/src/pages/management/CreateElection.js index c81fa3e4e03dd0bf105d36abc2cd0e812548c5fa..79494f7c714bcbe98623985d73739931f507e1bc 100644 --- a/wahlfang_web/src/pages/management/CreateElection.js +++ b/wahlfang_web/src/pages/management/CreateElection.js @@ -5,7 +5,7 @@ import Collapse from 'react-bootstrap/Collapse'; import Button from 'react-bootstrap/Button'; import * as yup from 'yup'; import {createElection} from "../../api/management"; -import {Redirect, useHistory} from "react-router-dom"; +import {Redirect, useHistory, useParams} from "react-router-dom"; import moment from "moment"; import TextField from '@mui/material/TextField'; import BasicDatePicker from "../../components/BasicDatePicker" @@ -18,13 +18,16 @@ export default function CreateSession() { const [toggle, setToggle] = useState(false); const [date, onDateChange] = useState(new Date()); const [elections, setElections] = useRecoilState(electionsListManager); + // get session id from url + const {id} = useParams(); - const handleSubmitAddSessionForm = (values, {setSubmitting}) => { + const handleSubmitAddElectionForm = (values, {setSubmitting}) => { let moment_date = new moment(values.start_date); // keepOffset must be true, bug info here https://github.com/moment/moment/issues/947 values.start_date = moment_date.toISOString(true) values.end_date = moment_date.toISOString(true) + values.session = id createElection(values) .then(res => { setSubmitting(false) @@ -50,7 +53,7 @@ export default function CreateSession() { <Formik initialValues={{ title: '', start_date: '', end_date: '', maximum_votes: 0}} validationSchema={validationSchema} - onSubmit={handleSubmitAddSessionForm} + onSubmit={handleSubmitAddElectionForm} > {({ values, @@ -88,7 +91,7 @@ export default function CreateSession() { <div className="mt-3 form-group"> <TextField style ={{width: '100%'}} - id="maximumVotes" + id="maximum_votes" type="number" label="Maximum number of votes" variant="standard" diff --git a/wahlfang_web/src/pages/management/ManagerSessions.js b/wahlfang_web/src/pages/management/ManagerSessions.js index 6d780eaef97fb9bdac76b41274df774227cbbbd3..4bfdf5bbe3e47ec109ed8cd1f9dfe84a553a988c 100644 --- a/wahlfang_web/src/pages/management/ManagerSessions.js +++ b/wahlfang_web/src/pages/management/ManagerSessions.js @@ -10,7 +10,7 @@ import ListItemText from '@mui/material/ListItemText'; import Divider from '@mui/material/Divider'; import DeleteIcon from '@mui/icons-material/Delete'; import { Typography } from '@mui/material'; -import { useHistory } from "react-router-dom"; +import {useHistory} from "react-router-dom"; import moment from "moment"; import {deleteSession} from "../../api/management" import Dialog from '@mui/material/Dialog'; @@ -27,6 +27,7 @@ export default function ManagerSessions() { const [sessions, setSessions] = useRecoilState(sessionList); const history = useHistory(); + const handleClickOpen = (e, index) => { e.stopPropagation(); setOpen(true); diff --git a/wahlfang_web/src/pages/management/SessionDetail.js b/wahlfang_web/src/pages/management/SessionDetail.js index 59444656cb58f5224f5ef1b1876d639b99f4ca0a..8dd8bd379f801a6f3dc423342aa0093405f07a6c 100644 --- a/wahlfang_web/src/pages/management/SessionDetail.js +++ b/wahlfang_web/src/pages/management/SessionDetail.js @@ -53,7 +53,7 @@ export default function SessionDetail() { return displayDate } const handleToCreateElection = () => { - history.push('/management/election') + history.push(`/management/sessions/${id}/election`) } const handleClickOpen = (e, index) => { e.stopPropagation();