{ "info": { "author": "Authors of OpenSlides Voting Plugin, see AUTHORS", "author_email": "support@openslides.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Plugins", "Environment :: Web Environment", "Framework :: Django", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# OpenSlides Voting Plugin\n\nThis plugin provides electronic voting of motions and elections for OpenSlides.\nIt's a further development of the outdated\n[OpenSlides VoteCollector Plugin](https://github.com/OpenSlides/openslides-votecollector>).\n\n\n## Requirements\n- OpenSlides 2.3\n- [VoteCollector 1.10.2+](http://software.voteworks.eu/VoteCollector.zip) (for voting modes with keypads)\n\n\n## Features\n\n- Electronic voting for motions and elections in OpenSlides with 4 voting modes (see below) \n- Supports the voting software 'VoteCollector' for using hardware keypads of\n [Voteworks](https://www.voteworks.de) with OpenSlides.\n- Overview with single votes for verification of each vote.\n- Visualize live voting as delegate board on projector.\n- Allows list of speakers voting (add/remove as speaker), with VoteCollector only.\n- Supports multiple voting shares per delegate.\n- Supports proxies/principals and absentee votes.\n\n\n## Voting modes\n\nOn creation of any poll (motions and election) you will be ask which voting mode\nthis poll has. You can choose between four modes:\n\n1. **Analog voting**: Just enter the offline counted votes, so the assembly can\n see the result.\n2. **Named electronic voting**: Every delegate needs an OpenSlides login and can \n vote inside of OpenSlides. It's a public vote. The name of delegate is saved to the vote.\n This can be pseudo-anonymized later (delete\n the association between user and the vote, but remember, there might be ways\n to reconstruct it later).\n3. **Token-based electronic voting**: This is a mode for polling booths.\n Delegates don't need an own OpenSlides login. There have to be a few OpenSlides \n voting machines where delegates can vote by entering a valid voting token.\n The voting tokens are randomly generated by the voting manager.\n After authenticating the delegates they get the activated voting token.\n After voting you get a (short, randomly generated) result number to\n verify your own vote in a list of all votes.\n4. **VoteCollector**: If you have voting devices (keypads) that supports the\n VoteCollector, you can enable the VoteCollector mode in the settings. Note\n that not all voting methods (like yes/no/abstain for multiple candidates) are\n supported by the VoteCollector. See below for more details.\n\n### Token-based voting interface\nTo run the token-based voting interface on voting machines you need to create an own\nOpenSlides login, so OpenSlides can validate that the votes comes from an authorized\ncomputer.\n\nCreate a new user group (e.g. 'voting') which has only three permissions:\n`Can see motions`, `Can see assignments` and `Can see the token voting interface`.\nAdd this new group to a new created voting user. Now, login with this user account on voting machines.\n\nImportant: Do not give any delegate the permission `Can see the token voting interface` -\notherwise they can see no longer the default OpenSlides interface but see always the\nvoting interface.\n\nIf anyone should be allowed to vote at their own computer, please make a voting\nuser with a simple password and distribute that, so a user has to login\nseperatly to vote. Note, that this may reveal the users vote because one can\ncheck from which computer came the vote and check if a user was logged in\non the computer before.\n\nAdd `VOTING_RESULT_TOKEN_TIMEOUT` to `settings.py` if you want to change the timeout in\nseconds until vote success view is closed during token-based voting. The timeout is\nimportant so the next one cannot get the result number if the user didn't click on\ncontinue. The result number view can be disabled by setting the timeout to 0.\n\n### VoteCollector supported voting modes\n- Yes/No/Abstain for motions\n- Yes/No(/Abstain) for elections with just one candidate\n- 1-of-n elections (choose one from many candidates), supports also\n abstain (key '0') and invalid votes (key > n)\n- Yes/No for list of speakers voting (add/remove as speaker)\n\nNot supported is Yes/No(/Abstain) for multiple candidates.\n\n### Configure SECRET_KEY in VoteCollector\nThe VoteCollector sends the POST requests (with the important voting results) protected to\nthe OpenSlides server. OpenSlides and VoteCollector supports [HMAC](https://en.wikipedia.org/wiki/HMAC) - a\nhashed-based message authentication code using the secret key of OpenSlides. To use\nthe VoteCollector successfully with OpenSlides you have to insert the `SECRET_KEY` from\nOpenSlides' `settings.py` into `VoteCollector.exe.config`. If no secret key used in\nVoteCollector you get an error if you start a new voting.\n\n\n## Installation\n\n### OpenSlides portable for Windows \n\nTo install the plugin in a OpenSlides portable for Windows:\n\n- Download and extract the zip archive of the latest plugin release from [files.openslides.org](https://files.openslides.org/plugins/openslides-voting/).\n- Copy the `openslides_voting` directory into `openslides\\plugins` of your OpenSlides portable.\n- Restart OpenSlides server.\n\n### Install via pypi\n\nTo install the plugin in a python environment run::\n```\npip install openslides-voting\n```\n\n### Install for development\nSet up Openslides as described in [DEVELOPMENT.rst of OpenSlides](https://github.com/OpenSlides/OpenSlides/blob/master/DEVELOPMENT.rst).\nThen fork and clone this plugin repository. Create a\nsymlink from the `openslides_voting` folder into the `OpenSlides` folder from\nthe main OpenSlides repo:\n```\nls -s //openslides-voting/openslides_voting //OpenSlides/openslides_voting\n```\nAdd `openslides_voting` in your `settings.py` to `INSTALLED_PLUGINS`.\n\nThen, from the `openslides-voting` directory, run `yarn` and for further\ndevelopment a watcher:\n```\nnode_modules/.bin/gulp watch\n```\n\nHappy Contributing!", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/OpenSlides/openslides-voting", "keywords": "OpenSlides", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "openslides-voting", "package_url": "https://pypi.org/project/openslides-voting/", "platform": "", "project_url": "https://pypi.org/project/openslides-voting/", "project_urls": { "Homepage": "https://github.com/OpenSlides/openslides-voting" }, "release_url": "https://pypi.org/project/openslides-voting/3.1/", "requires_dist": null, "requires_python": "", "summary": "OpenSlides Voting Plugin", "version": "3.1" }, "last_serial": 5730488, "releases": { "3.0.1": [ { "comment_text": "", "digests": { "md5": "e8f00ec51beff3bc53de1279791e5894", "sha256": "cefcee3020a7b75750c25b3829d89c3de2b7b0b735c167eafef04ab134590634" }, "downloads": -1, "filename": "openslides-voting-3.0.1.tar.gz", "has_sig": false, "md5_digest": "e8f00ec51beff3bc53de1279791e5894", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 120489, "upload_time": "2018-09-28T11:17:19", "url": "https://files.pythonhosted.org/packages/0d/22/f6f2fa5c2cae99c3cb5123bfde01b05e88a8fe3282538865e68b7d8ec1b3/openslides-voting-3.0.1.tar.gz" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "c2ab2325a373f7e3a736b708b000eaa9", "sha256": "8cd4baa21410e55a0e22dd5ed406b9812f16d3e94ecf7100b5a4cdf20ecfcf74" }, "downloads": -1, "filename": "openslides-voting-3.1.tar.gz", "has_sig": false, "md5_digest": "c2ab2325a373f7e3a736b708b000eaa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129942, "upload_time": "2019-08-26T12:24:38", "url": "https://files.pythonhosted.org/packages/dd/dd/3e8c4d4aec3cbcc9fa2919ca56b8d21dbf6b5ae317842d314076db2a7e82/openslides-voting-3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c2ab2325a373f7e3a736b708b000eaa9", "sha256": "8cd4baa21410e55a0e22dd5ed406b9812f16d3e94ecf7100b5a4cdf20ecfcf74" }, "downloads": -1, "filename": "openslides-voting-3.1.tar.gz", "has_sig": false, "md5_digest": "c2ab2325a373f7e3a736b708b000eaa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129942, "upload_time": "2019-08-26T12:24:38", "url": "https://files.pythonhosted.org/packages/dd/dd/3e8c4d4aec3cbcc9fa2919ca56b8d21dbf6b5ae317842d314076db2a7e82/openslides-voting-3.1.tar.gz" } ] }