Prevent stopping an analog poll

Fixed too much logging with the new autoupdate bundling
This commit is contained in:
FinnStutzenstein 2019-11-13 07:46:13 +01:00
parent 90b04366b5
commit b50cf42543
4 changed files with 30 additions and 7 deletions

View File

@ -58,6 +58,13 @@ class BasePollViewSet(ModelViewSet):
@detail_route(methods=["POST"])
def stop(self, request, pk):
poll = self.get_object()
# Analog polls could not be stopped; they are stopped when
# the results are entered.
if poll.type == BasePoll.TYPE_ANALOG:
raise ValidationError(
{"detail": "Analog polls can not be stopped. Please enter votes."}
)
if poll.state != BasePoll.STATE_STARTED:
raise ValidationError({"detail": "Wrong poll state"})

View File

@ -146,7 +146,10 @@ class RESTModelMixin:
"""
Returns all elements as full_data.
"""
logger.info(f"Loading {cls.get_collection_string()}")
do_logging = not bool(ids)
if do_logging:
logger.info(f"Loading {cls.get_collection_string()}")
# Get the query to receive all data from the database.
try:
query = cls.objects.get_prefetched_queryset(ids=ids) # type: ignore
@ -167,11 +170,12 @@ class RESTModelMixin:
for i, instance in enumerate(instances):
# Append full data from this instance
full_data.append(instance.get_full_data())
# log progress every 5 seconds
current_time = time.time()
if current_time > last_time + 5:
last_time = current_time
logger.info(f"\t{i+1}/{instances_length}...")
if do_logging:
# log progress every 5 seconds
current_time = time.time()
if current_time > last_time + 5:
last_time = current_time
logger.info(f"\t{i+1}/{instances_length}...")
return full_data
@classmethod

View File

@ -582,6 +582,12 @@ class VoteAssignmentPollAnalogYNA(VoteAssignmentPollBaseTestClass):
self.assertEqual(poll.votescast, None)
self.assertFalse(poll.get_votes().exists())
def test_stop_poll(self):
self.start_poll()
response = self.client.post(reverse("assignmentpoll-stop", args=[self.poll.pk]))
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(self.poll.state, AssignmentPoll.STATE_STARTED)
def test_vote(self):
self.add_candidate()
self.start_poll()

View File

@ -407,6 +407,12 @@ class VoteMotionPollAnalog(TestCase):
self.assertEqual(poll.votescast, None)
self.assertFalse(poll.get_votes().exists())
def test_stop_poll(self):
self.start_poll()
response = self.client.post(reverse("motionpoll-stop", args=[self.poll.pk]))
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(self.poll.state, MotionPoll.STATE_STARTED)
def test_vote(self):
self.start_poll()
response = self.client.post(
@ -995,7 +1001,7 @@ class StopMotionPoll(TestCase):
motion=self.motion,
title="test_title_Hu9Miebopaighee3EDie",
pollmethod="YNA",
type=BasePoll.TYPE_ANALOG,
type=BasePoll.TYPE_NAMED,
)
self.poll.create_options()