Git Product home page Git Product logo

bitpoll's Introduction

Bitpoll

Bitpoll is a software to conduct polls about Dates, Times or general Questions.

This is a new version of the Dudel from opatut (https://github.com/opatut/dudel) used on https://bitpoll.de, rewritten using the Django framework as a backend.

Using Docker

The docker image is built automatically from the current master branch. You can use the following commands to set up the docker container:

Create a directory for static and config files:

mkdir -p run/{log,static,config}

Get the example settings file and adapt it according to your needs:

wget https://raw.githubusercontent.com/fsinfuhh/Bitpoll/master/bitpoll/settings_local.sample.py -O run/config/settings.py

It is important to change at least the database settings, secret key, and allowed hosts.

Start the docker container:

docker run -a stdout -a stderr --rm --name bitpoll -p 3008:3008 -p 3009:3009 --volume ./run/static:/opt/static --volume ./run/config:/opt/config ghcr.io/fsinfuhh/bitpoll

The container is reachable on port 3009. If you use an external web server, you can use uwsgi traffic on port 3008 and serve the static assets from run/static at /static/.

Manual Install

Get the code:

git clone https://github.com/fsinfuhh/Bitpoll

Generate a Python virtualenv and install dependencies:

virtualenv -p $(which python3) .pyenv
source .pyenv/bin/activate
pip install -r requirements.txt

Copy bitpoll/settings_local.sample.py to bitpoll/settings_local.py and customize the local settings.

Initialise Database:

./manage.py migrate

Run Testserver:

./manage.py runserver

Production

In production Senty is used for error reporting. django-auth-ldap is used vor login via ldap uwsgi to serve the app

Install Dependencies for Production:

sudo apt install g++ make python3-psycopg2 python3-ldap3 gettext gcc python3-dev libldap2-dev libsasl2-dev

Install Python Dependencies

pip install -r requirements-production.txt

Configure examples are in settings_local.py

our used uwsgi config can be found at https://github.com/fsinfuhh/mafiasi-rkt/blob/master/bitpoll/uwsgi-bitpoll.ini

For Production systems it is nessesarry to run

./manage.py compilemessages
./manage.py collectstatic

Management of Dependencies

We use pip-tools to manage the dependencies. After modification or the requirements*.in files or for updates of packages run

pip-compile --upgrade --output-file requirements.txt requirements.in
pip-compile --upgrade --output-file requirements-production.txt  requirements-production.in requirements.in

to sync your enviroment with the requirements.txt just run

pip-sync

this will install/deinstall dependencies so that the virtualenv is matching the requirements file

bitpoll's People

Contributors

akasch avatar axelfoley85 avatar azrdev avatar chessmasterrr avatar dependabot[bot] avatar eliroca avatar femtobit avatar ftsell avatar hprid avatar irgendwr avatar kritzl avatar m0llux avatar markusneblung avatar miterion avatar rosalinddeibert avatar timonegk avatar tomabrafix avatar wichmannpas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitpoll's Issues

A probably paranoid user could not vote on mafiasi.de

German bug report title

Ein (Linux-)Nutzer kann auf Mafiasi.de nicht abstimmen

URL

https://bitpoll.mafiasi.de/poll/gurps-kw36/vote/

Actual HTTP-ERR-403 output reported (for german locale)

Verboten (403)
CSRF-Verifizierung fehlgeschlagen. Anfrage abgebrochen.

Sie sehen Diese Nachricht, da diese Seite einen CSRF-Cookie beim Verarbeiten von Formulardaten benötigt. Dieses Cookie ist aus Sicherheitsgründen notwendig, um sicherzustellen, dass Ihr Webbrowser nicht von Dritten missbraucht wird.

Falls Sie Cookies in Ihren Webbrowser deaktiviert haben, müssen Sie sie mindestens für diese Seite oder für „Same-Origin“-Verbindungen reaktivieren.

Mehr Information ist verfügbar mit DEBUG=True.

[feature] "rolling window" polls

This is a feature idea, probably quite complex:

Instead of having a fixed set of vote options, a poll might always cover a time range in the future, e.g. the next 2 weeks. One would have to configure

  • which time range (start, end relative to current time)
  • which options within the range: days, weeks, months, weekend/work days, something templated?
  • when to check & add new options (as soon as they enter the range, daily, weekly at $time)
  • when to make read-only and when to hide/delete options falling out of the range: immediately, if they become past, never
  • which shall be the default vote assigned to newly created time options for people who voted in the past (e.g. I voted for all 2 weeks, but then another one is added: The system assigns "Undecided" to me for these dates)

[Feature] Auto delete old polls

In my opinions polls are per definition short lived.
There should be no reason to keep them longer as needed to establish an result.

To increase privacy, the user should have the option to limit the lifetime (add an auto deletion date, no matter if the user is registered or not) of a self created poll.

The administrator of a page should be able to set a maximal lifetime of a poll (or deactivate it).

I will create a PR in the upcoming weeks.

Mafiasi Nickname

The nickname a user can set in their mafisia account is not used in bitpoll. When voting as a logged in user the full first name is shown.

API

Hello, does this app have an API ?

I would like to be able to create poll automatically and retrieve the link.

Regards

Provide Dockerfile

It would be cool to have this project enabled for Docker deployments.

Groups fixes

Hey, I just tested our BitPoll instance and found some minor bugs concerning the Groups feature:

  • dots "." don't work in group names, even though it specifically states they should work
  • group names can't be changed
  • groups can't be deleted
  • The invitation link for groups contains a "https://" too much (the link sent is "https://https://****/groups/")

Shouldn't be too hard to fix these but it would increase the usability of the feature quite a bit.
Tested with version 0c83e17

Sort poll answers when filling one out

When viewing and filling out a poll, the possible responses are currently sorted in an unintuitive way. We should change this to an order which makes more sense.

One such order would be to sort the responses by its weight (agree, only if necessary, maybe, disagree) or something like that.

Assign vote as unauthenticated user

Currently, when a user in unauthenticated, the button to assign a vote to a user is shown, but when the user tries to assign the vote, an empty page with status code 403 is shown. Instead, the "Assign user" button should not be displayed in this case.

Need multi-day event with multiple timeslots (aka symposium)...

Hi there,

I just tried bitpoll to plan the talks/discussions for our upcoming "Symposium on crossmodal learning", which runs for three days. We have email feedback from several people listing times they can and cannot attend. Bitpoll/Doodle would be a good option to plan this (and to allow other people to directly add their timeslots instead of sending emails).

But. Neither bitpoll (nor doodle) seem to support this. We can either have multiple timeslots on a single day, or multiple "whole" days without times. Why is that? Is this an inherent limitation of the underlying code, or just concentrating on the two most important use-cases?

Anyway, the bitpoll GUI promises that time information can be added after selecting the days, but pressing "next" finishes the poll with days-only.

[feature] Export poll results to csv

Hi,

I currently switch from Doodle to Bitpoll for our institute's lecture timing. So far, Bitpoll works great.

In Doodle, I had the option to export poll results to various spreadsheet formats.
I could not find a similar option in Bitpoll. Is there an option to create a csv file or similar, that would contain all votees along with their detailed votes? It would be very much sufficient to have the table from the overview page as csv.

I process the poll data in LibreOffice Calc to finalise our planing, so a more direct connection would be really helpful.

Copy&Pasting from the website sadly does not work, as the symbols for each vote do not get copied; also, the comments are lost.

Thanks,
Florian

declare poll as finished

When the date is decided it might make sense to finish voting and declare one date as the chosen one.
All participants should be notified of this.

Server error at Password reset

Hello,
we have an issue if we try to reset a password with the "Reset password" button. After clicking, we get a 500 server error. I recorded the webserver's error.log and it seems to be a problem with raven, but the pip package "raven" is installed as listed in requirements-production.txt (raven==6.3.0). It is possible to register new users and receive the registration mail, so our e-mail settings in general are set correctly. We use an Ubuntu 16.04 LTS with Apache as server and a python 3.5 virtualenv for Bitpoll. There is also a problem with encoding in the locale/de_DE/LC_MESSAGES/django.po at line 1971 because the "Ü" at "Passwort zurücksetzen" is not displayed correctly. I try to add this to the repository later. Please tell me if you need further information. Any ideas? Thanks in advance.
Greetings, Ludwig
error.log

Change default choice: "Only if absolutely necessary" looks a bit out of place

This may be nitpicky, but I do not like that "Only if absolutely necessary" is capitalized and so long compared to the other choices 😄

Current default:
image

A) Slightly better:
image

B) I can finally exist in peace:
image

C) same as B but capitalized:
image

I guess it depends on personal preference, but it should at least be consistent. Should we vote on this?

Add possibility to login after filling out a poll but before saving without loosing your inputs

When you complete a long poll that does not require a login, it is a common problem that you reach the end of the poll and realize you were not logged in. Sadly, at this point you have only two options:

  1. Save and hope that the poll creator activated the option to edit answers by users that were not logged in.
  2. Log in in a new window and copy all your answers.

It would be great if you could log in after finishing the poll before saving and all your answers would be assigned to your account.

[feature] "Apply this to other mondays"

Hey,

I just filled in a bitpoll that was provided by your magnificient service.
Doing so, I recognized that I often find myself giving the same answers multiple times in a bitpoll.
More specifically our fachschaft tends to create forms that range over multiple weeks.

Most of the times the answers I give to one week or one weekday can be applied to the other week/-days
Soooooo could you add a button for this?

Thanks ^_^

High cpu usage

Even while nobody is using my bitpoll instance, the python process (running python ./manage.py runserver 0.0.0.0:8888) uses around 16% of my cpu (measured via top). Admittedly it is not a powerful NCU, but that still seems very high just for idling.
Is there anything I can do to help find the root cause?

[feature] Initialize "Create Choices" page with current set of choices

If one attempts to change the parings of days and times to choose from, the table representing those options are always initialized, so that every paring is available, ignoring what has been set previously.
It would be handy and more collaborative, if the table was filled with existing pairings.

Apache WSGI problem

Hello,
we have some problems with the Apache WSGI module. The ./manage.py runserver command runs without any issues. But if we configure Apache to serve the project, we get a 500 server error and the error.log shows the following if we try to access the page:

[Tue Nov 21 11:59:36.362213 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] mod_wsgi (pid=3920): Target WSGI script '/opt/Bitpoll/bitpoll/wsgi.py' cannot be loaded as Python module.
[Tue Nov 21 11:59:36.362278 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] mod_wsgi (pid=3920): Exception occurred processing WSGI script '/opt/Bitpoll/bitpoll/wsgi.py'.
[Tue Nov 21 11:59:36.363007 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] Traceback (most recent call last):
[Tue Nov 21 11:59:36.363055 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/bitpoll/wsgi.py", line 22, in
[Tue Nov 21 11:59:36.363059 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] application = Sentry(get_wsgi_application())
[Tue Nov 21 11:59:36.363065 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/.pyenv/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Tue Nov 21 11:59:36.363068 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] django.setup(set_prefix=False)
[Tue Nov 21 11:59:36.363072 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/.pyenv/lib/python3.5/site-packages/django/init.py", line 22, in setup
[Tue Nov 21 11:59:36.363075 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
[Tue Nov 21 11:59:36.363080 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/.pyenv/lib/python3.5/site-packages/django/conf/init.py", line 56, in getattr
[Tue Nov 21 11:59:36.363083 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] self._setup(name)
[Tue Nov 21 11:59:36.363096 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/.pyenv/lib/python3.5/site-packages/django/conf/init.py", line 41, in _setup
[Tue Nov 21 11:59:36.363099 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] self._wrapped = Settings(settings_module)
[Tue Nov 21 11:59:36.363104 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/.pyenv/lib/python3.5/site-packages/django/conf/init.py", line 110, in init
[Tue Nov 21 11:59:36.363106 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] mod = importlib.import_module(self.SETTINGS_MODULE)
[Tue Nov 21 11:59:36.363113 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "/opt/Bitpoll/.pyenv/lib/python3.5/importlib/init.py", line 126, in import_module
[Tue Nov 21 11:59:36.363115 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] return _bootstrap._gcd_import(name[level:], package, level)
[Tue Nov 21 11:59:36.363120 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 986, in _gcd_import
[Tue Nov 21 11:59:36.363125 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 969, in _find_and_load
[Tue Nov 21 11:59:36.363130 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 944, in _find_and_load_unlocked
[Tue Nov 21 11:59:36.363134 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 222, in _call_with_frames_removed
[Tue Nov 21 11:59:36.363139 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 986, in _gcd_import
[Tue Nov 21 11:59:36.363144 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 969, in _find_and_load
[Tue Nov 21 11:59:36.363148 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] File "", line 956, in _find_and_load_unlocked
[Tue Nov 21 11:59:36.363164 2017] [wsgi:error] [pid 3920:tid 140031723976448] [remote 10.172.100.97:39859] ImportError: No module named 'bitpoll'

We use a Python 3.5 virtual environment on a Ubuntu 16.04 LTS x64 server. There is no information about that issue neither in your project documentation nor the official Django documentation. Who can help here?

Our Apache host configuration is the following:

<VirtualHost *:80>
WSGIDaemonProcess bitpoll python-home=/opt/Bitpoll/.pyenv python-path=/opt/Bitpoll/bitpoll
WSGIProcessGroup bitpoll
WSGIScriptAlias / /opt/Bitpoll/bitpoll/wsgi.py process-group=bitpoll
Alias /static/ /opt/Bitpoll/_static/
<Directory /opt/Bitpoll>
Require all granted

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Greetings,
Ludwig

Meeting/event duration or end time

I have just encountered Bitpoll and really like it. The only thing stopping me switching from e.g. Doodle is that I could not find a way to specify the event duration and/or end time (apart from as a comment in the poll). I consider this critical for people to easily see which blocks of time they may be available for.

Did I miss this someone? Or, if not, is it on the roadmap?

Thanks!

sort poll overview by creation date

I have a hard time finding my recently created polls in the poll overview. They seem to be sorted by due date, but then many of my polls don't have due dates. It might be good to have the option to sort polls by creation date. (One might even argue that this is the better default.)

Allowing name to be edited after submitting an entry

This is a great tool in place of doodle and offers a lot of flexibility.

A suggestion: As people make typos, it is good to have the edit function with which entries can be modified. As hard as it may be to believe, people even mis-type their names, and it would be useful to allow changing the name as well.

Add compiled coffeescript & sass files to repo

I suggest to add the output of the coffee and sass compilers to the repository, so people using the software don't need them as dependency (installing both for the current user if no superuser privileges are available can be quite a hassle, like on a uberspace account).

Feature Request: Do not present results before vote

Prior votes seem to be influencing bitpoll participants so it would be nice if there was an option that you had to vote before you see the poll results.

I'm not exactly sure how this would work for anonymous users (ones that are not logged in). I guess you'd need to store it in a cookie, that they have already voted for this specific poll so that they can see the results if they revisit in the future.

Would be a great feature to have.

Error when creating new user without first name

When creating a new user without first and last name, a link is sent to the user by e-mail. Thereupon he can choose a password, but this always leads to the following error:
"Sorry, but the provided token is invalid."

Creating a user with first and last name works without problems.

Expected behavior: When creating a user, the system already informs the user that he or she must enter first and last name.

The database used is sqlite.

Escape slash in url in choice

If a url is inserted into the choice text it is automatically stripped apart due to grouping. Is there a possibility to escape slashes to prevent grouping?

can't switch locale

i would like to use a german locale but it stays english. i found LANGUAGE_CODE = 'de-de' in bitpoll/settings.py by default (while #LANGUAGE_CODE = 'en-us' is in bitpoll/settings_local.sample.py - wasnt that meant to doc the default?) but however i change that setting i see english.

i wonder why that is "en-us" while the name of the locale is "en_US", but even if i set it to en_US or de_DE it doesnt work for me. what did i do wrong? i blindly followed the instructions in the README...

weight answer by person

If a person is required (or important) to be there, it might make sense to have a different weight for the different participants.
This could either be solved by predetermining this at the creation of the bitpoll or by the participant themselves declaring their importance.

Data protection (Datenschutz)

Hi there, I have a question.
as far as I know

  • It is possible to start a poll without being logged-in or be a member of mafiasi
  • It is possible to participate in the same poll without being logged-in or be a member of mafiasi
  • It is not possible to delete the same poll without being logged-in or be a member of mafiasi
  • It is not possible to delete or edit names in the same poll without being logged-in or be a member of mafiasi
    If I am wrong you may correct me, sorry for that.

If I am right, I wonder who takes care of the personal data, if people just decide to step back from that poll at any time.
If the initiator is no mafiasi member, he cannot fulfill the voters request to delete their personal data.

Am I right?

Mouse Cursor does not change to hand when hovering vote icons.

When hovering the mouse above the options, the cursor does not change to the hand as it does when hovering other options.
enhanced-buzz-2983-1339426752-2
This is a potential usability issue. I had a user report that "they could not vote". I presume it is because of this.

Just a heads up.

Currently not buildable

Hello,
after I had to rebuild my container images I'm unable to build the production requirements:

Could not find a version that satisfies the requirement django-markdown-app==0.11.1 (from -r requirements-production.txt (line 8)) (from versions: 0.8.5, 0.8.5.1, 0.9.3.1, 0.9.4, 0.9.4.1) No matching distribution found for django-markdown-app==0.11.1 (from -r requirements-production.txt (line 8))

Both of the requirement files are listing the same version so I can't build dudle with that version provided.

Screenshots? Demo?

Hi!

It would be cool to see some screenshots or a live demo. Are there any?

Thanks and best, Sebastian

Feature Request: Setting to limit each person to one time slot and each time slot to one person

Use Case:
When you are conducting studies you usually have a few time slots per day. In each slot you need exactly one person. Each person can only participate in the study one time. Therefore it is necessary to limit each time slot to one person and each person to one time slot.

Implementation:
This use case is obviously only one of many for the Bitpoll. A poll setting is therefore the best way to realize this from the user perspective.

Assign votes/poll ownership not showing available users

While testing I also found an inconvenience with assigning votes and the ownership of a poll to users.
When inviting Users to a group it shows you the available users when you start typing the name.
However when assigning a vote to a user, or claiming ownership of a poll, it doesn't show the available users, so you need to know the exact name of the user you want to assign it to.
It would be quite nice if this feature would be available for assigning users here as well.

Also I sometimes had problems assigning Ownership of a poll to an account, however I can't trigger this bug reliably and it occours quite rarely, so I don't know what could be the cause of this and it may well be a problem with my browser.

Tested with version 0c83e17

How to delete a double entry

Hi there, If people want to change their vote, they often submit a second vote instead of editing the first one. How can a double entry (twice the same person) be deleted?

Table "django_content_type" missing when running migrate

First of all, thanks for your great work!

When I try to install your application in release version 0.9 and run the ./manage.py migrate command, I get the following error:
django.db.utils.OperationalError: no such table: django_content_type

How to reproduce:

  • I am trying to run bitpoll in a docker container with this Dockerfile.
  • Run this container: docker run -p 8000:8000 -v /path/on/host/settings_local.py:/Bitpoll/bitpoll/settings_local.py -v /path/on/host/database/:/Bitpoll/database/ -d chessmasterrr/bitpoll:latest
  • Try to generate a database via docker exec <containerID> ./manage.py migrate resulting in this error trace:
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: django_content_type

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 87, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 206, in build_graph
    self.load_disk()
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 108, in load_disk
    migration_module = import_module(migration_path)
  File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.8/site-packages/django_token_bucket/migrations/0002_auto_20191216_1228.py", line 10, in <module>
    class Migration(migrations.Migration):
  File "/usr/local/lib/python3.8/site-packages/django_token_bucket/migrations/0002_auto_20191216_1228.py", line 26, in Migration
    field=models.ForeignKey(default=ContentType.objects.get_for_model(get_user_model()).id, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'),
  File "/usr/local/lib/python3.8/site-packages/django/contrib/contenttypes/models.py", line 51, in get_for_model
    ct = self.get(app_label=opts.app_label, model=opts.model_name)
  File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 402, in get
    num = len(clone)
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 256, in __len__
    self._fetch_all()
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 1242, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 55, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1133, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 67, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.8/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: django_content_type

Can you give me a hint what I am doing wrong?
If any further information are needed I will be happy to provide them.

Option to reduce available choices

It would be useful if a poll owner could disable all options which already have too less support (say, below a static or user-specified threshold) in a poll. This feature should be available to the poll owner, but not automatically applied; i.e., the poll owner should actively decide that a sufficiently large "critical mass" has voted.

  • voting is more efficient for future voters as a lower number of options has to be considered
  • the display of the results is much more compact

-- Maybe we want to separate this issue from the following thoughts:
Furthermore, we may consider hiding some options having very low acceptance while displaying the poll (bonus points if hidden options can be interactively re-shown). This could be done on each request based on the current votes; however, as this is rather counter-productive for some kinds of polls, it should be possible to disable this behaviour.

[feature] vote options: date ranges

It is possible to select dates to be voted on, but date ranges would also be useful. E.g. selecting one of several weekends. You can emulate this by inserting always the Friday (which is not intuitive and needs extra explanation), or by selecting a "normal poll" and naming the entries yourself, which can be cumbersome for a lot of options

[feature] Weekdays in the create choices view

I would love to see the following:

In the "Create choice" view when you select which times should be combined with which days, the respective weekday could be displayed additionally.

TypeError: attribute name must be string, not 'bytes'

Hi,
I'm trying to implement and start your project on my Win10, python 3.6.
When trying to migrate the manage.py, the error

"TypeError: attribute name must be string, not 'bytes'"

pops up, with multiple files and lines in reference. The last one is

.pyenv\lib\site-packages\django\db\models\fields\related.py", line 744, in contribute_to_related_class
setattr(cls._meta.concrete_model, related.get_accessor_name(), self.related_accessor_class(related))

As I do not have much knowledge about python and coding in general, I don't know whether this matters or not - when starting the server without migrating, the error when opening the page is

"django.template.exceptions.TemplateSyntaxError: 'raven' is not a registered tag library. Must be one of: [...] "

Thanks and regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.