From 6f8ad838f40911e3ea36c27cea8b2a2e2a0d794d Mon Sep 17 00:00:00 2001 From: manuconcepbrito <manu041196@gmail.com> Date: Sat, 30 Oct 2021 17:51:13 +0200 Subject: [PATCH] API for creating elections --- wahlfang_api/views.py | 2 +- wahlfang_web/src/pages/ManagementApp.js | 3 +-- wahlfang_web/src/pages/management/AddSession.js | 6 ++---- wahlfang_web/src/pages/management/CreateElection.js | 11 +++++++---- wahlfang_web/src/pages/management/ManagerSessions.js | 3 ++- wahlfang_web/src/pages/management/SessionDetail.js | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/wahlfang_api/views.py b/wahlfang_api/views.py index 7eb09fc..710b3f3 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 d5e3123..a0dc748 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 4f2b709..5bf6436 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 c81fa3e..79494f7 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 6d780ea..4bfdf5b 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 5944465..8dd8bd3 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(); -- GitLab