Skip to content

Commit d00d656

Browse files
goapunkm4ra
authored andcommitted
polls: add new django setting to enable or disable the unregistered poll
voting - add missing changelog
1 parent cb21e2e commit d00d656

File tree

5 files changed

+29
-16
lines changed

5 files changed

+29
-16
lines changed

adhocracy4/polls/serializers.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.conf import settings
12
from rest_framework import serializers
23

34
from adhocracy4.dashboard import components
@@ -153,7 +154,12 @@ def get_has_user_vote(self, poll):
153154
return False
154155

155156
def update(self, instance, data):
156-
instance.allow_unregistered_users = data.get("allow_unregistered_users", False)
157+
if getattr(settings, "A4_POLL_ENABLE_UNREGISTERED_USERS", False):
158+
instance.allow_unregistered_users = data.get(
159+
"allow_unregistered_users", False
160+
)
161+
else:
162+
instance.allow_unregistered_users = False
157163
instance.save()
158164
# Delete removed questions from the database
159165
instance.questions.exclude(

adhocracy4/polls/static/PollDashboard/EditPollManagement.jsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,11 @@ export const EditPollManagement = (props) => {
208208
onSubmit={(e) => handleSubmit(e)} onChange={() => removeAlert()}
209209
className="editpoll__questions"
210210
>
211-
<div>
212-
<label htmlFor="allowUnregisteredUsersCheckbox">Allow unregistered user to vote</label>
213-
<input type="checkbox" id="allowUnregisteredUsersCheckbox" onChange={() => setAllowUnregisteredUsers((state) => !state)} checked={allowUnregisteredUsers} />
214-
</div>
211+
{props.enableUnregisteredUsers &&
212+
<div>
213+
<label htmlFor="allowUnregisteredUsersCheckbox">Allow unregistered user to vote</label>
214+
<input type="checkbox" id="allowUnregisteredUsersCheckbox" onChange={() => setAllowUnregisteredUsers((state) => !state)} checked={allowUnregisteredUsers} />
215+
</div>}
215216
<FlipMove easing="cubic-bezier(0.25, 0.5, 0.75, 1)">
216217
{
217218
questions.map((question, index, arr) => {

adhocracy4/polls/static/react_poll_management.jsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ import { EditPollManagement } from './PollDashboard/EditPollManagement'
77
function init () {
88
ReactWidgetInit('a4', 'poll-management',
99
function (el) {
10-
const pollId = el.dataset.pollId
10+
const props = JSON.parse(el.dataset.attributes)
1111
const root = createRoot(el)
1212

13-
const reloadOnSuccess = JSON.parse(el.getAttribute('data-reloadOnSuccess'))
14-
1513
root.render(
16-
<EditPollManagement pollId={pollId} reloadOnSuccess={reloadOnSuccess} />
14+
<EditPollManagement {...props} />
1715
)
1816
}
1917
)

adhocracy4/polls/templatetags/react_polls.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@ def react_polls(poll: Poll):
2121

2222
@register.simple_tag
2323
def react_poll_form(poll, reload_on_success=False):
24+
attributes = {
25+
"pollId": poll.pk,
26+
"reloadOnSuccess": reload_on_success,
27+
"enableUnregisteredUsers": getattr(
28+
settings, "A4_POLL_ENABLE_UNREGISTERED_USERS", False
29+
),
30+
}
2431
reload_on_success = json.dumps(reload_on_success)
2532

2633
return format_html(
27-
(
28-
'<div data-a4-widget="poll-management" data-poll-id="{pollId}" '
29-
' data-reloadOnSuccess="{reload_on_success}">'
30-
"</div>"
31-
),
32-
pollId=poll.pk,
33-
reload_on_success=reload_on_success,
34+
'<div data-a4-widget="poll-management" data-attributes="{attributes}"></div>',
35+
attributes=json.dumps(attributes),
3436
)

changelog/8381.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
### Added
2+
3+
- add option to allow unregistered users to vote in a poll:
4+
- the feature is controlled via a new django setting `A4_POLL_ENABLE_UNREGISTERED_USERS` to enable or disable it
5+
- add a new captcha react component to integrate the captcha in the poll
6+

0 commit comments

Comments
 (0)