From f0e19c8feb530a598d9ef503afd167ab7e349aca Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Tue, 3 Nov 2020 21:34:46 +0100 Subject: [PATCH 001/123] Primer commit --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d5860a1eb4..901ca8dece 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ djangorestframework==3.7.7 django-cors-headers==2.1.0 requests==2.18.4 django-filter==1.1.0 -psycopg2==2.7.4 +psycopg2-binary==2.8.4 django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 From 8ca5c8748279627fe53d70341be9d0d6893d37d3 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 4 Nov 2020 11:01:57 +0100 Subject: [PATCH 002/123] local_settings subido --- .gitignore | 1 - decide/local_settings.py | 43 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 decide/local_settings.py diff --git a/.gitignore b/.gitignore index b823e313b4..cc0877af2f 100644 --- a/.gitignore +++ b/.gitignore @@ -52,7 +52,6 @@ coverage.xml # Django stuff: *.log -local_settings.py # Flask stuff: instance/ diff --git a/decide/local_settings.py b/decide/local_settings.py new file mode 100644 index 0000000000..375fc61e9b --- /dev/null +++ b/decide/local_settings.py @@ -0,0 +1,43 @@ +ALLOWED_HOSTS = ["*"] + +# Modules in use, commented modules that you won't use +MODULES = [ + 'authentication', + 'base', + 'booth', + 'census', + 'mixnet', + 'postproc', + 'store', + 'visualizer', + 'voting', +] +BASEURL = 'http://localhost:8000' + +APIS = { + 'authentication': BASEURL , + 'base': BASEURL , + 'booth': BASEURL , + 'census': BASEURL , + 'mixnet': BASEURL , + 'postproc': BASEURL , + 'store': BASEURL , + 'visualizer': BASEURL , + 'voting': BASEURL , +} + + + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'decidedb', + 'USER': 'decide2', + 'PASSWORD': 'decide', + 'HOST': 'localhost', + 'PORT': '5432', + } +} + +# number of bits for the key, all auths should use the same number of bits +KEYBITS = 256 From 27483fddbc21ff4f17ec6677c2d76dfa1180d748 Mon Sep 17 00:00:00 2001 From: pabfrasan <56022165+pabfrasan@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:46:19 +0100 Subject: [PATCH 003/123] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b72f88a6e0..0300fc26ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,8 @@ services: addons: postgresql: "9.4" before_script: - - psql -U postgres -c "create user decide password 'decide'" - - psql -U postgres -c "create database test_decide owner decide" + - psql -U postgres -c "create user decide2 password 'decide'" + - psql -U postgres -c "create database decidedb owner decide" - psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: From 7c48db0aa499a26f6f7a45bd78eb544e443be1fb Mon Sep 17 00:00:00 2001 From: pabfrasan <56022165+pabfrasan@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:48:28 +0100 Subject: [PATCH 004/123] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0300fc26ec..a9b3f23493 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ addons: postgresql: "9.4" before_script: - psql -U postgres -c "create user decide2 password 'decide'" - - psql -U postgres -c "create database decidedb owner decide" + - psql -U postgres -c "create database decidedb owner decide2" - psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: From 2783fc126cd09f0c5fe5c87e2ba999e8c8eb3721 Mon Sep 17 00:00:00 2001 From: pabfrasan <56022165+pabfrasan@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:56:03 +0100 Subject: [PATCH 005/123] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a9b3f23493..8676666719 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ addons: before_script: - psql -U postgres -c "create user decide2 password 'decide'" - psql -U postgres -c "create database decidedb owner decide2" - - psql -U postgres -c "ALTER USER decide CREATEDB" + - psql -U postgres -c "ALTER USER decide2 CREATEDB" language: python python: - "3.6" From ad8a86f3e0a8f7acb8dda01c0873e801aa211d22 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 12 Nov 2020 12:51:42 +0100 Subject: [PATCH 006/123] Un cambio en el README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 83d0a57e27..4ac97190d5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ [![Build Status](https://travis-ci.com/wadobo/decide.svg?branch=master)](https://travis-ci.com/wadobo/decide) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Coverage) +Prueba: +pabfrasan Plataforma voto electrónico educativa ===================================== From 3b7e21b7d40d79b723831b0c85340b73c4056702 Mon Sep 17 00:00:00 2001 From: abrgarvil Date: Thu, 12 Nov 2020 14:12:50 +0000 Subject: [PATCH 007/123] Un cambio en el README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ac97190d5..56ed957699 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Build Status](https://travis-ci.com/wadobo/decide.svg?branch=master)](https://travis-ci.com/wadobo/decide) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Coverage) Prueba: pabfrasan - +abrgarvil Plataforma voto electrónico educativa ===================================== From 4847ff9d884ed75feecad671a44b8a942ff976d4 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Tue, 24 Nov 2020 12:37:16 +0100 Subject: [PATCH 008/123] Docker actualizado --- docker/Dockerfile | 4 ++-- docker/docker-compose.yml | 4 +++- docker/docker-settings.py | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 032eed28e2..3bb98458b2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -from python:alpine +from python:3.7-alpine RUN apk add --no-cache git postgresql-dev gcc libc-dev RUN apk add --no-cache gcc g++ make libffi-dev python3-dev build-base @@ -10,7 +10,7 @@ RUN pip install ipython WORKDIR /app -RUN git clone https://github.com/wadobo/decide.git . +RUN git clone https://github.com/pabfrasan/decide . RUN pip install -r requirements.txt WORKDIR /app/decide diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 095583eb02..4689c5ff98 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -4,11 +4,13 @@ services: db: restart: always container_name: decide_db - image: postgres:alpine + image: postgres:10.15-alpine volumes: - db:/var/lib/postgresql/data networks: - decide + environment: + - POSTGRES_PASSWORD=postgres web: restart: always container_name: decide_web diff --git a/docker/docker-settings.py b/docker/docker-settings.py index 01e643d936..49efb3d78f 100644 --- a/docker/docker-settings.py +++ b/docker/docker-settings.py @@ -5,6 +5,7 @@ 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', + 'PASSWORD' : 'postgres', 'HOST': 'db', 'PORT': 5432, } From 2c2960f0066c7ff3e28ab8ec0df16c5c4cf39c09 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:04:58 +0100 Subject: [PATCH 009/123] =?UTF-8?q?Heroku:=20a=C3=B1adido=20el=20Procfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Procfile | 4 ++++ requirements.txt | 2 +- vagrant/.python.yml.swp | Bin 0 -> 12288 bytes vagrant/Vagrantfile | 4 ++-- 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 Procfile create mode 100644 vagrant/.python.yml.swp diff --git a/Procfile b/Procfile new file mode 100644 index 0000000000..818fef7fe3 --- /dev/null +++ b/Procfile @@ -0,0 +1,4 @@ +% prepara el repositorio para su despliegue. +release: sh -c 'cd decide && python manage.py migrate' +% especifica el comando para lanzar Decide +web: sh -c 'cd decide && gunicorn decide.wsgi --log-file -' diff --git a/requirements.txt b/requirements.txt index 901ca8dece..1acd8af5d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ djangorestframework==3.7.7 django-cors-headers==2.1.0 requests==2.18.4 django-filter==1.1.0 -psycopg2-binary==2.8.4 +psycopg2-binary==2.7.4 django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 diff --git a/vagrant/.python.yml.swp b/vagrant/.python.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..9b9c508ee8b80d3e4c83830fd8ee987ec15420db GIT binary patch literal 12288 zcmeI&&uSAv90%~Jh_|ZPi+CDSXivM7+Dn;(f>MeHK?)Ij3X^1-3}k25+1X$~^x&n? zC-4b8`39EWe2PAS&miJAo3+Fu)F=pr@4%N~cYgC{Kev$SwO>4aCU?>;fp%MnC_i-{ zZM4L}V<8ID8|Sn4m$W~vds`Q(j(2Kz?}-}Nz8hFIF~eYdRK+xoa-UAK@g>`Fm;w}7 zR-lT9$rP3Q&Lo6u5!{W+24Tsu0(2;_&$Y|L5=jZ?}Z_iku-| zkW=Is$&dr&CGrqyBlnOs>}&PY_AwDsp0SZun0u-PC z1t>rP3jALIi8gT|R%UGdq&vTet>wJm7QYT_sYZEb&u?#IMqLr?tI7qNSs%*_HO)ou z#fmh(j+j=sLZj>1K9=lOr43rntIywRIklxoq&Jz>a(`hLQSbZD2cIw88dl!*^Wa;5 zbFAm}-Sq{;=4>{UF85kyri?b!=N;HG{??}+4YtU&+#JPNlv=5wi=(QSLPz25{9!Pq Z@r`_nu}#cDw;bV~i?Tn?y%kB4h#&r2)Up5o literal 0 HcmV?d00001 diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index 87c50e7375..54ed0beb3a 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -58,8 +58,8 @@ Vagrant.configure("2") do |config| # end config.vm.provider "virtualbox" do |v| - v.memory = 512 - v.cpus = 1 + v.memory = 1024 + v.cpus = 2 end # View the documentation for the provider you are using for more From e5cbb96e7b6826c7d2d6b2e9d053aee50be4eb0f Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:14:28 +0100 Subject: [PATCH 010/123] Configuracion Heroku --- decide/.local_settings.py.swp | Bin 0 -> 12288 bytes decide/decide/settings.py | 3 +++ requirements.txt | 2 ++ 3 files changed, 5 insertions(+) create mode 100644 decide/.local_settings.py.swp diff --git a/decide/.local_settings.py.swp b/decide/.local_settings.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..0dc1795c59956186ebb05575a15d16c755cfe7e6 GIT binary patch literal 12288 zcmeI2%}*0S6u=+eKtQ7&jTs?v6RBR-f!m8blv2`OpZ;&hXKoF z0L4D6J-9XvU+w_Z95)cU|AcbdanBnA6Q$5kq-XCXJYM!a-l_soc7ip@mGZ+48L#b} zuqcJe02w%=fj$@=8BXd+g9A6&)hnel&ZpsIfDDiUGC&5%02v?yWPl8uX9KF%1urmx z3nqynQ+Ku1rb!hUAOmE843GgbKnBPF86X2>fDDiUGH?zJI37SxFTi(1|Nr0m{l9k! z;3x7Cd5^q7ULo6vkE|eb$TSi|ZXnl@Km7o|kzdGHDGgaYilkdcs69mkOR7Emb5mDf=Nb*KhI#u2_ z6W|#zEX_~-&05G87OhEUjgO6vSTWFjx>)z~#YTVQo#u*=3WMF&f?X^wcX|0%C`#-tK;-r21; zP^*h_XQb*s3Ax@!+ahHi%1CzhyF#eSG2M%~X`4Jv%VcL-&74{dor(G0w*MI9@~Kj` zaZoFGqjSQG0xp>!>iZgFWl^nSy4+(`6HygMu^kbyZA@S3Q2=%}n_o(&*7W7n3RVVg H53IsJZzU5> literal 0 HcmV?d00001 diff --git a/decide/decide/settings.py b/decide/decide/settings.py index 1d22b67324..ae563c3dcf 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -180,3 +180,6 @@ INSTALLED_APPS = INSTALLED_APPS + MODULES + +import django_heroku +django_heroku.settings(locals()) diff --git a/requirements.txt b/requirements.txt index 1acd8af5d3..9b83fb4496 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,5 @@ django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 jsonnet==0.12.1 +django-heroku +gunicorn From d144f14c551f5409dbd7b98e5a3dba0c5945764e Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:23:10 +0100 Subject: [PATCH 011/123] Configuracion Heroku --- decide/decide/settings.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/decide/decide/settings.py b/decide/decide/settings.py index ae563c3dcf..e55c88e1b3 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -70,7 +70,9 @@ 'voting', ] -BASEURL = 'http://localhost:8000' +BASEURL = 'https://picaro-decide.herokuapp.com' + +APIS = {} MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', From 06d68f2ccb05d25be98e91f41c70a2a285280da7 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:39:02 +0100 Subject: [PATCH 012/123] Configuracion Heroku --- decide/decide/settings.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/decide/decide/settings.py b/decide/decide/settings.py index e55c88e1b3..6ea3ab1e6e 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -72,7 +72,17 @@ BASEURL = 'https://picaro-decide.herokuapp.com' -APIS = {} +APIS = { + 'authentication': BASEURL , + 'base': BASEURL , + 'booth': BASEURL , + 'census': BASEURL , + 'mixnet': BASEURL , + 'postproc': BASEURL , + 'store': BASEURL , + 'visualizer': BASEURL , + 'voting': BASEURL , + } MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', From 63e0044096b0f1adc2a526ce3b98ad2b9cc156a4 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:46:02 +0100 Subject: [PATCH 013/123] Configuracion Heroku --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cc0877af2f..b823e313b4 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,7 @@ coverage.xml # Django stuff: *.log +local_settings.py # Flask stuff: instance/ From ef8247f717cffbc89a8850b76024c2376a745967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 10 Dec 2020 18:53:25 +0100 Subject: [PATCH 014/123] Delete local_settings.py --- decide/local_settings.py | 43 ---------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 decide/local_settings.py diff --git a/decide/local_settings.py b/decide/local_settings.py deleted file mode 100644 index 375fc61e9b..0000000000 --- a/decide/local_settings.py +++ /dev/null @@ -1,43 +0,0 @@ -ALLOWED_HOSTS = ["*"] - -# Modules in use, commented modules that you won't use -MODULES = [ - 'authentication', - 'base', - 'booth', - 'census', - 'mixnet', - 'postproc', - 'store', - 'visualizer', - 'voting', -] -BASEURL = 'http://localhost:8000' - -APIS = { - 'authentication': BASEURL , - 'base': BASEURL , - 'booth': BASEURL , - 'census': BASEURL , - 'mixnet': BASEURL , - 'postproc': BASEURL , - 'store': BASEURL , - 'visualizer': BASEURL , - 'voting': BASEURL , -} - - - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': 'decidedb', - 'USER': 'decide2', - 'PASSWORD': 'decide', - 'HOST': 'localhost', - 'PORT': '5432', - } -} - -# number of bits for the key, all auths should use the same number of bits -KEYBITS = 256 From db74e05c187c5792b159d26f049928db017f35e3 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 20:00:08 +0100 Subject: [PATCH 015/123] =?UTF-8?q?Cambios=20de=20configuraci=C3=B3n.=20lo?= =?UTF-8?q?cal=5Fsettings.py=20eliminado,=20cada=20usuario=20deber=C3=A1?= =?UTF-8?q?=20agregar=20su=20archivo.=20Usuario=20de=20la=20db(decidedb):?= =?UTF-8?q?=20user=3Ddecide,pass=3Ddecide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 6 +++--- decide/.local_settings.py.swp | Bin 12288 -> 0 bytes requirements.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 decide/.local_settings.py.swp diff --git a/.travis.yml b/.travis.yml index 8676666719..bfdc7ec840 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,9 @@ services: addons: postgresql: "9.4" before_script: - - psql -U postgres -c "create user decide2 password 'decide'" - - psql -U postgres -c "create database decidedb owner decide2" - - psql -U postgres -c "ALTER USER decide2 CREATEDB" + - psql -U postgres -c "create user decide password 'decide'" + - psql -U postgres -c "create database decidedb owner decide" + - psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: - "3.6" diff --git a/decide/.local_settings.py.swp b/decide/.local_settings.py.swp deleted file mode 100644 index 0dc1795c59956186ebb05575a15d16c755cfe7e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2%}*0S6u=+eKtQ7&jTs?v6RBR-f!m8blv2`OpZ;&hXKoF z0L4D6J-9XvU+w_Z95)cU|AcbdanBnA6Q$5kq-XCXJYM!a-l_soc7ip@mGZ+48L#b} zuqcJe02w%=fj$@=8BXd+g9A6&)hnel&ZpsIfDDiUGC&5%02v?yWPl8uX9KF%1urmx z3nqynQ+Ku1rb!hUAOmE843GgbKnBPF86X2>fDDiUGH?zJI37SxFTi(1|Nr0m{l9k! z;3x7Cd5^q7ULo6vkE|eb$TSi|ZXnl@Km7o|kzdGHDGgaYilkdcs69mkOR7Emb5mDf=Nb*KhI#u2_ z6W|#zEX_~-&05G87OhEUjgO6vSTWFjx>)z~#YTVQo#u*=3WMF&f?X^wcX|0%C`#-tK;-r21; zP^*h_XQb*s3Ax@!+ahHi%1CzhyF#eSG2M%~X`4Jv%VcL-&74{dor(G0w*MI9@~Kj` zaZoFGqjSQG0xp>!>iZgFWl^nSy4+(`6HygMu^kbyZA@S3Q2=%}n_o(&*7W7n3RVVg H53IsJZzU5> diff --git a/requirements.txt b/requirements.txt index 9b83fb4496..61e80a1373 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ djangorestframework==3.7.7 django-cors-headers==2.1.0 requests==2.18.4 django-filter==1.1.0 -psycopg2-binary==2.7.4 +psycopg2-binary==2.8.4 django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 From 00a0fe3fe2afb03e0a6df558c619556f16841cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 12:30:34 +0100 Subject: [PATCH 016/123] Update .travis.yml --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index b72f88a6e0..eb3afc5d25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,8 @@ script: - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit - coverage xml - python-codacy-coverage -r coverage.xml +deploy: + provider: heroku + app: picaro-decide + strategy: git + api_key: $HEROKU_AUTH_TOKEN From c6f832351c674df5f9a02eb18877e7cb743f293a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:04:39 +0100 Subject: [PATCH 017/123] Update .travis.yml --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index bfdc7ec840..b889d00dda 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,8 @@ script: - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit - coverage xml - python-codacy-coverage -r coverage.xml +deploy: + provider: heroku + app: picaro-decide + strategy: git + api_key: $HEROKU_AUTH_TOKEN From db023512011b8e960f4a7b2d9b45a2e7fc3384ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:27:44 +0100 Subject: [PATCH 018/123] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b889d00dda..aa0990df11 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit + - coverage run --branch --source=. ./manage.py test census --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From 2474db5f76e844b8963196f1e648ef370d81cf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:52:25 +0100 Subject: [PATCH 019/123] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aa0990df11..7e65af0b0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test census --keepdb + - coverage run --branch --source=. ./manage.py test --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From 4a1ffb0d65904cee1f3ec2b4e9eaffc603c1cb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 14:26:31 +0100 Subject: [PATCH 020/123] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7e65af0b0a..b889d00dda 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb + - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit - coverage xml - python-codacy-coverage -r coverage.xml deploy: From ffad0fed6fa9b980b0befb21b29faaca90280aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 17:56:13 +0100 Subject: [PATCH 021/123] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b889d00dda..7e65af0b0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit + - coverage run --branch --source=. ./manage.py test --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From 838c8125ba2997ab895fa1c50551fff966b39d39 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 17 Dec 2020 18:17:37 +0100 Subject: [PATCH 022/123] travis_local_settings.py creado y .travis.yml actualizado --- .travis.yml | 3 ++- decide/travis_local_settings.py | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 decide/travis_local_settings.py diff --git a/.travis.yml b/.travis.yml index 7e65af0b0a..d821fd9331 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,8 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb + - cp travis_local_settings.py local_settings.py + - coverage run --branch --source=. ./manage.py test mixnet --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: diff --git a/decide/travis_local_settings.py b/decide/travis_local_settings.py new file mode 100644 index 0000000000..d4162dae92 --- /dev/null +++ b/decide/travis_local_settings.py @@ -0,0 +1,41 @@ +ALLOWED_HOSTS = ["*"] + +# Modules in use, commented modules that you won't use +MODULES = [ + 'authentication', + 'base', + 'booth', + 'census', + 'mixnet', + 'postproc', + 'store', + 'visualizer', + 'voting', +] + +APIS = { + 'authentication': 'http://localhost:8000', + 'base': 'http://localhost:8000', + 'booth': 'http://localhost:8000', + 'census': 'http://localhost:8000', + 'mixnet': 'http://localhost:8000', + 'postproc': 'http://localhost:8000', + 'store': 'http://localhost:8000', + 'visualizer': 'http://localhost:8000', + 'voting': 'http://localhost:8000', +} + +BASEURL = 'http://localhost:8000' + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': 'localhost', + 'PORT': '5432', + } +} + +# number of bits for the key, all auths should use the same number of bits +KEYBITS = 256 From 068c22f74f3a627b49dc259591af0305c91626af Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 17 Dec 2020 18:41:56 +0100 Subject: [PATCH 023/123] =?UTF-8?q?Integraci=C3=B3n=20de=20travis=20con=20?= =?UTF-8?q?heroku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index d821fd9331..b78b9d2d0e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,27 @@ dist: xenial - services: - - postgresql +- postgresql addons: - postgresql: "9.4" + postgresql: '9.4' before_script: - - psql -U postgres -c "create user decide password 'decide'" - - psql -U postgres -c "create database decidedb owner decide" - - psql -U postgres -c "ALTER USER decide CREATEDB" +- psql -U postgres -c "create user decide password 'decide'" +- psql -U postgres -c "create database decidedb owner decide" +- psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: - - "3.6" +- '3.6' install: - - pip install -r requirements.txt - - pip install codacy-coverage +- pip install -r requirements.txt +- pip install codacy-coverage script: - - cd decide - - cp travis_local_settings.py local_settings.py - - coverage run --branch --source=. ./manage.py test mixnet --keepdb - - coverage xml - - python-codacy-coverage -r coverage.xml +- cd decide +- cp travis_local_settings.py local_settings.py +- coverage run --branch --source=. ./manage.py test mixnet --keepdb +- coverage xml +- python-codacy-coverage -r coverage.xml deploy: provider: heroku app: picaro-decide strategy: git - api_key: $HEROKU_AUTH_TOKEN + api_key: + secure: SDt7FSvAfUp9J0aA0vhQGKN7ZUfHvbyX/GMr/gVQmlkobFNWu9Wk8f5O2jzxEcHJfP9DKRPwzK5CF2d422bd/toKXEJldIoZL57YQnomlKElqetaLBoETyydhn/oZkkF+aTv/zZF92m2dQGetTlG6Zp1sqFSW9BwXFKBrMIh9XjqFton6AFDZ5DPCy6Gn9303OAkxtWmqG4EGTEzJ2VV9ambCEMs30ZSeAGn4eVbWC92CvSaef32aOBvKcHKSKIrBkN5Y0olYGHRj00s+tr0iBlVfxKyVb1lI6vwuuh85+8w2UGVXp+NCAEy+Dm1RLz3lhDi3hpIyXK1V9JCqw6arbuNgvB0vHvRuldAj8cw3lmpD9kLlmDfstyw5MJd8UAf22rwsI1nUA6Ga/qycAD1kOIOgPwF6oWLW16M+MOGE/+loZIj4NmQTs3wiYAemqwVqEHc9enViEAaSD2M2zUWPI7L2m9gd2iOll6UleKosqz9f8hQFBLKcaTuaoH5qRHAIPeSVIAZA+GmJhbj9lM++yVhZW5aJ0SVzx+RhGAXcgweVNtUIH8F2DU1Es001zNML90k+G47MpnGqfIHuZcxSVtttLS6raoJIHEQSNUzfwXsy4mBjnUzZvy4YeOf/DId8kb/Wrk0+8P/MOoaDVUEePae7rz4jRcHfHj1UXMPpd0= From 78b1e8e9454a19ca99fcd24ef3dbbfdbbe0a627a Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 19 Dec 2020 12:48:48 +0100 Subject: [PATCH 024/123] Dark mode and light mode implements --- .vscode/settings.json | 3 + decide/base/templates/base.html | 6 +- decide/decide/settings.py | 19 +++++++ decide/postproc/views.py | 2 +- decide/{booth => }/static/booth/style.css | 0 decide/{booth => }/static/crypto/bigint.js | 0 decide/{booth => }/static/crypto/elgamal.js | 0 decide/{booth => }/static/crypto/jsbn.js | 0 decide/{booth => }/static/crypto/jsbn2.js | 0 decide/{booth => }/static/crypto/sjcl.js | 0 decide/static/css/footer.css | 9 +++ decide/static/favicon/picaro.png | Bin 0 -> 11229 bytes .../templates/visualizer/visualizer.html | 52 ++++++++++++++++-- 13 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 .vscode/settings.json rename decide/{booth => }/static/booth/style.css (100%) rename decide/{booth => }/static/crypto/bigint.js (100%) rename decide/{booth => }/static/crypto/elgamal.js (100%) rename decide/{booth => }/static/crypto/jsbn.js (100%) rename decide/{booth => }/static/crypto/jsbn2.js (100%) rename decide/{booth => }/static/crypto/sjcl.js (100%) create mode 100644 decide/static/css/footer.css create mode 100644 decide/static/favicon/picaro.png diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..18c002a3ca --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "C:\\Python3\\python.exe" +} \ No newline at end of file diff --git a/decide/base/templates/base.html b/decide/base/templates/base.html index fa9cf4aa8a..713d747efb 100644 --- a/decide/base/templates/base.html +++ b/decide/base/templates/base.html @@ -1,8 +1,10 @@ - +{% load i18n static %} + - {% block title %}Decide!{% endblock %} + Decide Pícaro{% block title %}{% endblock %} + {% block extrahead %}{% endblock %} diff --git a/decide/decide/settings.py b/decide/decide/settings.py index 6ea3ab1e6e..8bcb28e216 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -162,6 +162,10 @@ USE_TZ = True +LOCALE_PATHS = [ + os.path.join(BASE_DIR, 'locale') +] + TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' @@ -169,6 +173,21 @@ # https://docs.djangoproject.com/en/2.0/howto/static-files/ STATIC_URL = '/static/' +STATIC_ROOT = '' +STATIC_TMP = os.path.join(BASE_DIR, 'static') + +os.makedirs(STATIC_TMP, exist_ok=True) + +STATICFILES_DIRS = ( + 'static', +) + +MEDIA_URL = '/media/' +MEDIA_ROOT = '' + +MEDIAFILES_DIRS = ( + 'media', +) # number of bits for the key, all auths should use the same number of bits KEYBITS = 256 diff --git a/decide/postproc/views.py b/decide/postproc/views.py index f4c5de1e5f..47871478a6 100644 --- a/decide/postproc/views.py +++ b/decide/postproc/views.py @@ -11,7 +11,7 @@ def identity(self, options): out.append({ **opt, 'postproc': opt['votes'], - }); + }) out.sort(key=lambda x: -x['postproc']) return Response(out) diff --git a/decide/booth/static/booth/style.css b/decide/static/booth/style.css similarity index 100% rename from decide/booth/static/booth/style.css rename to decide/static/booth/style.css diff --git a/decide/booth/static/crypto/bigint.js b/decide/static/crypto/bigint.js similarity index 100% rename from decide/booth/static/crypto/bigint.js rename to decide/static/crypto/bigint.js diff --git a/decide/booth/static/crypto/elgamal.js b/decide/static/crypto/elgamal.js similarity index 100% rename from decide/booth/static/crypto/elgamal.js rename to decide/static/crypto/elgamal.js diff --git a/decide/booth/static/crypto/jsbn.js b/decide/static/crypto/jsbn.js similarity index 100% rename from decide/booth/static/crypto/jsbn.js rename to decide/static/crypto/jsbn.js diff --git a/decide/booth/static/crypto/jsbn2.js b/decide/static/crypto/jsbn2.js similarity index 100% rename from decide/booth/static/crypto/jsbn2.js rename to decide/static/crypto/jsbn2.js diff --git a/decide/booth/static/crypto/sjcl.js b/decide/static/crypto/sjcl.js similarity index 100% rename from decide/booth/static/crypto/sjcl.js rename to decide/static/crypto/sjcl.js diff --git a/decide/static/css/footer.css b/decide/static/css/footer.css new file mode 100644 index 0000000000..d27329bb10 --- /dev/null +++ b/decide/static/css/footer.css @@ -0,0 +1,9 @@ + +.footer { + position: absolute; + bottom: 0; + width: 100%; + + background-color: #f5f5f5; + } + diff --git a/decide/static/favicon/picaro.png b/decide/static/favicon/picaro.png new file mode 100644 index 0000000000000000000000000000000000000000..19ac79cb3b0b7c53178840ad540a748eb35de32e GIT binary patch literal 11229 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 literal 0 HcmV?d00001 diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 0faed6bac3..b517666dc6 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -1,21 +1,40 @@ {% extends "base.html" %} {% load i18n static %} +{% block title %} - Visualización{% endblock %} {% block extrahead %} - + + + + + {% endblock %} {% block content %}
- Decide - + Decide Visualización + + + + + ES + EN + + + + + + + +
+ +
{% endblock %} @@ -62,5 +89,20 @@

Resultados:

} }) - + + {% endblock %} From 9e2ecc07b343bddd57d5c9342b762bf7c974750b Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 19 Dec 2020 15:03:26 +0100 Subject: [PATCH 025/123] Floating action button implement --- .project | 11 + decide/static/css/mfb.css | 671 ++++++++++++++++++ decide/static/images/england.jpg | Bin 0 -> 10009 bytes decide/static/images/spain.jpg | Bin 0 -> 4944 bytes decide/static/js/mfb.js | 98 +++ .../templates/visualizer/visualizer.html | 68 +- 6 files changed, 810 insertions(+), 38 deletions(-) create mode 100644 .project create mode 100644 decide/static/css/mfb.css create mode 100644 decide/static/images/england.jpg create mode 100644 decide/static/images/spain.jpg create mode 100644 decide/static/js/mfb.js diff --git a/.project b/.project new file mode 100644 index 0000000000..cb4da071c5 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + decide + + + + + + + + diff --git a/decide/static/css/mfb.css b/decide/static/css/mfb.css new file mode 100644 index 0000000000..39063306c3 --- /dev/null +++ b/decide/static/css/mfb.css @@ -0,0 +1,671 @@ +/** + * CONTENTS + * + * #Introduction........Naming conventions used throughout the code. + * + * #SETTINGS + * Variables............Globally-available variables and config. + * + * #TOOLS + * Mixins...............Useful mixins. + * + * #GENERIC + * Demo styles..........Styles for demo only (consider removing these). + * + * #BASE + * Raw styles...........The very basic component wrapper. + * Modifiers............The basic styles dependant on component placement. + * Debuggers............The basic styles dependant on component placement. + * + * #BUTTONS + * Base..................Wrapping and constraining every button. + * Modifiers.............Styles that depends on state and settings. + * Animations............Main animations of the component. + * Debuggers.............Styles for development. + * + * #LABELS + * Base..................Wrapping and constraining every label. + * Modifiers.............Styles that depends on state and settings. + * Debuggers.............Styles for development. + * + * #DEVELOPMENT + * In development........These styles are in development and not yet finalised + * Debuggers.............Helper styles and flags for development. + */ +/*------------------------------------*\ + #Introduction +\*------------------------------------*/ +/** + * The code AND the comments use naming conventions to refer to each part of + * the UI put in place by this component. If you see that somewhere they are + * not followed please consider a Pull Request. The naming conventions are: + * + * "Component" : the widget itself as a whole. This is the last time it will be + * called anything different than "component". So, stay away from + * "widget", "button" or anything else when referring to the + * Component in general. + * + * "Main Button" : the button that is always in view. Hovering or clicking on it + * will reveal the child buttons. + * + * "Child buttons" : if you've read the previous point you know what they are. + * Did you read the previous point? :) + * + * "Label(s)" : the tooltip that fades in when hovering over a button. + +/*------------------------------------*\ + #SETTINGS | Variables +\*------------------------------------*/ +/** + * These variables are the default styles that serve as fallback and can be + * easily customised at compile time. + * Consider overriding them in your own style sheets rather than editing them + * here. Refer to the docs for more info. + */ +/* COLORS ----------------------------*/ +/* EFFECTS ---------------------------*/ +/* SPEEDS ----------------------------*/ +/* SIZES -----------------------------*/ +/* SPACING ---------------------------*/ +/* OTHER VARIABLES -------------------*/ +/*------------------------------------*\ + #BASE | Raw styles +\*------------------------------------*/ +/** + * The very core styling of the button. + * These styles are shared by every instance of the button. + * Styles placed here should NOT care about placement in the screen, + * options chosen by the user or state of the button. + */ +.mfb-component--tl, .mfb-component--tr, .mfb-component--bl, .mfb-component--br { + box-sizing: border-box; + margin: 25px; + position: fixed; + white-space: nowrap; + z-index: 30; + padding-left: 0; + list-style: none; } + .mfb-component--tl *, .mfb-component--tr *, .mfb-component--bl *, .mfb-component--br *, .mfb-component--tl *:before, .mfb-component--tr *:before, .mfb-component--bl *:before, .mfb-component--br *:before, .mfb-component--tl *:after, .mfb-component--tr *:after, .mfb-component--bl *:after, .mfb-component--br *:after { + box-sizing: inherit; } + +/*------------------------------------*\ + #BASE | Modifiers +\*------------------------------------*/ +/** + * These styles depends on the placement of the button. + * Styles can be: + * 1. Top-left: modified by the " --tl " suffix. + * 2. Top-right: modified by the " --tr " suffix. + * 3. Bottom-left: modified by the " --bl " suffix. + * 4. Bottom-right: modified by the " --br " suffix. + */ +.mfb-component--tl { + left: 0; + top: 0; } + +.mfb-component--tr { + right: 0; + top: 0; } + +.mfb-component--bl { + left: 0; + bottom: 0; } + +.mfb-component--br { + right: 0; + bottom: 0; } + +/*------------------------------------*\ + #BUTTONS | Base +\*------------------------------------*/ +.mfb-component__button--main, .mfb-component__button--child { + background-color: #E40A5D; + display: inline-block; + position: relative; + border: none; + border-radius: 50%; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); + cursor: pointer; + outline: none; + padding: 0; + position: relative; + -webkit-user-drag: none; + color: #f1f1f1; } + +/** + * This is the unordered list for the list items that contain + * the child buttons. + * + */ +.mfb-component__list { + list-style: none; + margin: 0; + padding: 0; } + .mfb-component__list > li { + display: block; + position: absolute; + top: 0; + right: 1px; + padding: 10px 0; + margin: -10px 0; } + +/** + * These are the basic styles for all the icons inside the main button + */ +.mfb-component__icon, .mfb-component__main-icon--active, +.mfb-component__main-icon--resting, .mfb-component__child-icon { + position: absolute; + font-size: 18px; + text-align: center; + line-height: 56px; + width: 100%; } + +.mfb-component__wrap { + padding: 25px; + margin: -25px; } + +[data-mfb-toggle="hover"]:hover .mfb-component__icon, [data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, [data-mfb-toggle="hover"]:hover .mfb-component__child-icon, +[data-mfb-state="open"] .mfb-component__icon, +[data-mfb-state="open"] .mfb-component__main-icon--active, +[data-mfb-state="open"] .mfb-component__main-icon--resting, +[data-mfb-state="open"] .mfb-component__child-icon { + -webkit-transform: scale(1) rotate(0deg); + transform: scale(1) rotate(0deg); } + +/*------------------------------------*\ + #BUTTONS | Modifiers +\*------------------------------------*/ +.mfb-component__button--main { + height: 56px; + width: 56px; + z-index: 20; } + +.mfb-component__button--child { + height: 56px; + width: 56px; } + +.mfb-component__main-icon--active, +.mfb-component__main-icon--resting { + -webkit-transform: scale(1) rotate(360deg); + transform: scale(1) rotate(360deg); + -webkit-transition: -webkit-transform 150ms cubic-bezier(0.4, 0, 1, 1); + transition: transform 150ms cubic-bezier(0.4, 0, 1, 1); } + +.mfb-component__child-icon, +.mfb-component__child-icon { + line-height: 56px; + font-size: 18px; } + +.mfb-component__main-icon--active { + opacity: 0; } + +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon, +[data-mfb-state="open"] .mfb-component__main-icon { + -webkit-transform: scale(1) rotate(0deg); + transform: scale(1) rotate(0deg); } +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, +[data-mfb-state="open"] .mfb-component__main-icon--resting { + opacity: 0; + position: absolute !important; } +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, +[data-mfb-state="open"] .mfb-component__main-icon--active { + opacity: 1; } + +/*------------------------------------*\ + #BUTTONS | Animations +\*------------------------------------*/ +/** + * SLIDE IN + FADE + * When hovering the main button, the child buttons slide out from beneath + * the main button while transitioning from transparent to opaque. + * + */ +.mfb-component--tl.mfb-slidein .mfb-component__list li, +.mfb-component--tr.mfb-slidein .mfb-component__list li { + opacity: 0; + transition: all 0.5s; } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px); + transform: translateY(70px); } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px); + transform: translateY(140px); } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px); + transform: translateY(210px); } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px); + transform: translateY(280px); } + +.mfb-component--bl.mfb-slidein .mfb-component__list li, +.mfb-component--br.mfb-slidein .mfb-component__list li { + opacity: 0; + transition: all 0.5s; } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px); + transform: translateY(-70px); } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px); + transform: translateY(-140px); } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px); + transform: translateY(-210px); } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px); + transform: translateY(-280px); } + +/** + * SLIDE IN SPRING + * Same as slide-in but with a springy animation. + * + */ +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li, +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li { + opacity: 0; + transition: all 0.5s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; + -webkit-transform: translateY(70px); + transform: translateY(70px); } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; + -webkit-transform: translateY(140px); + transform: translateY(140px); } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; + -webkit-transform: translateY(210px); + transform: translateY(210px); } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; + -webkit-transform: translateY(280px); + transform: translateY(280px); } + +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li, +.mfb-component--br.mfb-slidein-spring .mfb-component__list li { + opacity: 0; + transition: all 0.5s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; + -webkit-transform: translateY(-70px); + transform: translateY(-70px); } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; + -webkit-transform: translateY(-140px); + transform: translateY(-140px); } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; + -webkit-transform: translateY(-210px); + transform: translateY(-210px); } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; + -webkit-transform: translateY(-280px); + transform: translateY(-280px); } + +/** + * ZOOM-IN + * When hovering the main button, the child buttons grow + * from zero to normal size. + * + */ +.mfb-component--tl.mfb-zoomin .mfb-component__list li, +.mfb-component--tr.mfb-zoomin .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(0); + transform: translateY(70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(0); + transform: translateY(140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(0); + transform: translateY(210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(0); + transform: translateY(280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(1); + transform: translateY(70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(1); + transform: translateY(140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(1); + transform: translateY(210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(1); + transform: translateY(280px) scale(1); + transition-delay: 0.2s; } + +.mfb-component--bl.mfb-zoomin .mfb-component__list li, +.mfb-component--br.mfb-zoomin .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(0); + transform: translateY(-70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(0); + transform: translateY(-140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(0); + transform: translateY(-210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(0); + transform: translateY(-280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(1); + transform: translateY(-70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(1); + transform: translateY(-140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(1); + transform: translateY(-210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(1); + transform: translateY(-280px) scale(1); + transition-delay: 0.2s; } + +/** + * FOUNTAIN + * When hovering the main button the child buttons + * jump into view from outside the viewport + */ +.mfb-component--tl.mfb-fountain .mfb-component__list li, +.mfb-component--tr.mfb-fountain .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(0); + transform: translateY(-70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(0); + transform: translateY(-140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(0); + transform: translateY(-210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(0); + transform: translateY(-280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(1); + transform: translateY(70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(1); + transform: translateY(140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(1); + transform: translateY(210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(1); + transform: translateY(280px) scale(1); + transition-delay: 0.2s; } + +.mfb-component--bl.mfb-fountain .mfb-component__list li, +.mfb-component--br.mfb-fountain .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(0); + transform: translateY(70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(0); + transform: translateY(140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(0); + transform: translateY(210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(0); + transform: translateY(280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(1); + transform: translateY(-70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(1); + transform: translateY(-140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(1); + transform: translateY(-210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(1); + transform: translateY(-280px) scale(1); + transition-delay: 0.2s; } + +/*------------------------------------*\ + #LABELS | base +\*------------------------------------*/ +/** + * These are the labels associated to each button, + * exposed only when hovering the related button. + * They are called labels but are in fact data-attributes of + * each button (an anchor tag). + */ +[data-mfb-label]:after { + content: attr(data-mfb-label); + opacity: 0; + transition: all 0.5s; + background: rgba(0, 0, 0, 0.4); + padding: 4px 10px; + border-radius: 3px; + color: rgba(255, 255, 255, 0.8); + font-size: 14px; + font-weight: normal; + pointer-events: none; + line-height: normal; + position: absolute; + top: 50%; + margin-top: -11px; + transition: all 0.5s; } + +[data-mfb-toggle="hover"] [data-mfb-label]:hover:after, +[data-mfb-state="open"] [data-mfb-label]:after { + content: attr(data-mfb-label); + opacity: 1; + transition: all 0.3s; } + +/*------------------------------------*\ + #LABELS | Modifiers +\*------------------------------------*/ +.mfb-component--br [data-mfb-label]:after, .mfb-component--tr [data-mfb-label]:after { + content: attr(data-mfb-label); + right: 70px; } + +.mfb-component--br .mfb-component__list [data-mfb-label]:after, .mfb-component--tr .mfb-component__list [data-mfb-label]:after { + content: attr(data-mfb-label); + right: 70px; } + +.mfb-component--tl [data-mfb-label]:after, .mfb-component--bl [data-mfb-label]:after { + content: attr(data-mfb-label); + left: 70px; } + +.mfb-component--tl .mfb-component__list [data-mfb-label]:after, .mfb-component--bl .mfb-component__list [data-mfb-label]:after { + content: attr(data-mfb-label); + left: 70px; } + +/*------------------------------------*\ + #DEVELOPMENT | In development +\*------------------------------------*/ +/** + * This part is where unfinished code should stay. + * When a feature is ready(sh) move these styles to their proper place. + */ +/*------------------------------------*\ + #DEVELOPMENT | Debuggers +\*------------------------------------*/ +/** + * These are mainly helpers for development. They do not have to end up + * in production but it's handy to keep them when developing. + */ +/** + * Apply this class to the html tag when developing the slide-in button + */ + +/*# sourceMappingURL=mfb.css.map */ diff --git a/decide/static/images/england.jpg b/decide/static/images/england.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aff82d23010899b103c7f895954440b9c7dffb0 GIT binary patch literal 10009 zcmbVxc|26_+y4<|Cm~sKSaj>&<@p5r-^FV{0laHU5hj0IU{~`Og@81P|c{tcP_GkRR4dxd> zfCC5zGFVwo00#tESOr*^Z2%0C^&q6tzEb}+SPrnV9Xtey#KjFws5uOY&&qlL680b) z8#Fr%x(=`j96a)u;`Kv<#`f$dyo4@>C%xr3d8495*rb;%t@O}4f|Kj0$T3l|Q>SHQ z&zx0Oxpeu8s@lz4TG~3db@fc|nVDNyT3I_ha&&Tbadq?Y_45x13<{2X_WVWE%jlTo zl+?6W>8~>~^YY&n6c)WNE~%`luBol7|J3lcwXMAa|E;sDuYX|h_t5ajD1kUVGdnlG zu((87-`L#R-T`;__Vr=`SpQS4|JLl^^b&ydIsokf8~eUqEC&LhgH?d-;9rV|j$Aip zxAzh}aWR}j=tk1piWbh3N+x9Chu*zhN2QesrzrcX{iE6conjIHUz+{5V*gvOQGkb) z1=>7T0RRrrX?ZcFL8Ui~ZuHseN;ciro=^JvzVpk>Uan>}GVg$Pycg zmif8FV|M)TCKf6~Sl&JF$A84- z(&f8TO_#-<88^&4I>H@*O=kjA*)XzkBRX+33>z8h;3bTW_sAddcrtwJcbbmzu->7I z@Ywg8*gN!UoWps!?Kk9}(elu8c>8GRBP%-xsVA`YE`(Xn%}&!E4Y~d*}-}WC1IMbBZcXO=+^6j;*2PM9`sZn zjB&P3IZ<>mn2{qn8&A)fE&Gz1Df%p_nUkH(Z^nXH6dx*5LQ|ud%|(}w{BhkY#QYWG z;&|+M!t|ig-H?QgMMN=mGpMT~HnG_O|(wx{c z+kT@TBcE$Zt~16d;$OB=p8i35<4qyBwIbnNBojDj7mX$~gxcV5Kc+B&r@fh=&2}N7 z8bS5wXRsi$jq^$jZZSp)=zJ%3<*p~6((XJaE}K3Zy_=BTYdD0{$MmMZfIn7v-mLul zul~)%m${sS3ac!NW7h8G8+ssH_Sp& zG66m?z$ok9V2$oAbMmcE;~1ihgzS>#rleN{`^x1NNh3;y0_H5>{ji+THcXXDV33_tfYk|esi5Oli4;)?De83T*uR1DF19_ zXr>HF)gbjKo>^E?O=#_)nF?L?=-&p<{I96P91tmJvWXFRMjBQ%`@APIRNPN;D1J3x z&c`<@H2Cbt)nL(=GYaG_bqXSf2~>I1wM|AN#LGybtfgQC?5LaI?pl~@i1c|;I4Y>X zgu|>yngJxU>}F=z3eG;u=~>8SC&LwguIpuNJK9}QyEGS>iBmRd%&xKhSleU1qxT!R z_f*6N7qwMfIyX6zPE3qONrY_r^Cohs)1982T>O%?(4q4 z->Lqy?}t)`bbzX}lj=jGVs*N%#_~3TRbHv zN?=$yq6nF>gQE$qF}M!o%G$tL!8x){N%+iSaQ2VzK!A9Llc6}0IDz$~SE3yf`58k9 zesQA#;d5JK(&r1^USgVR(5rR+aXYqjRcxoPe_W~D#mbLy81r9@e{`91l!uq zWuaz%;hqFXT-}qB+e~3_wnJPXSx0~4OGO+4yNKdw32S`i1R-H~tH8KZ^4S|d)-^xT zMY~4oBL-dyM*q+(S&MnkRxxz$@7k=Av#9mKJ(4F$boJAo4x{q#aerE}jWCpI=d#A{h~O zR$2);f>u?@c$5C-ULkVl;O+X9-MJ>je<~+c^N(`ufn7`DNO5a??Zj;J?X7plJ5lzs z5`Sy%80V&Kb6q$&;QKRp8*BX`B(C@s{_OkR;toCIW=e0Vf=tL*{+JIq77faXwti~A zBky38Tw>k;Iv?FkMcgCh?_O2zqxmy|h!0Glb1SfsQ9r^27SH*Si%7;h`-I8_s+U)B z;Mp}A#v&HC9FJin;}Kk_L0E_u6R4e}8rG8$?K*pYgdSS*NB}*sfC;?2wG2Tb6}BE` z2hpSd8WYfU#P%b{mI(|j#dO<%f{gMNS5@J4FxL+WvGJw$DcS1m%Hm~eP>&$?l!edi zHHkAwlZ@nUL=}to)eBVI9m-Y<9AhW9^if4ZEOTKMEligi1S=z$!23Y-VpmiT6Zjag zBKekqpWxmoIP8|IG>{J)4bJT|ztDR6nC`3t@8-E64L~XYg3C!r*`!fMPlE@3pOl0l zQu@1~y$^FyL*STC&rKzTYp8{pjds{S!b8%+i@C1OV1iDhc1W08Jk?wL&;x`j!vOIE2Hcj#$8uN-!dTsy5Ks#fLE z*qM{d6?jHRK+DTQ_!Q46l^zZwE#;c|obAFoT^gDICO%^VTu%*rCE@#%s31(`2k-A8+tN?b4{;9g;hxsXik;T>kNv-|jtB1w*BF@f@1!flk?a~D z+I1-<>^}5Hb)YLSQ8))C5anL9xGcH)IW%Upu%wgPo!;S(yWpj35qHR&7A zTIoOea-CFF^1Cm2k&SVT35@mq?vkMibu+jg;rJeY2E)jEyNEUuei`$@JdeqdHxXj8 zub((+jOFbe{eWa}+=SK@A3$-_oNFL6=IH4sLRg>qkaOyL0j^4gy<@y=x4n88oNQzgl0w@pKBq9(xAwN7F6nK3ZIV-r)|E$osyrI4 z59rsh^~Fhq`N&sC^ocfGIGuHPw*AXgx3jTt=}yQ!l<(3yZa9D16xEBaL_ZC6{cGF@ zyFmWoJ5g1#>&*maZnz&+envRto8b!U>bNaKERBZn(L_M&he9rQExjG?K!ztMr1?EyQ*$a(av(kRn!SyW zpRUkwAHzLP9G-4v0yXok9sO&A=T*9;o%&U7Atr3#j_?U6GEn2B+$&?ZpMYrYQiTYb zY+2bc;l4L)0>9`Jieti~(sE+Y?S!uZe8bodFy%rwr5+#CU96^OUEgR;pZ35GdW==< z*eWG{Uw7N21iJmHac%6-*KWd~dh)H6QCu{0(29r|$s(riU8>{lNWr?Smwhx4B=NEA zo{p~X%6*d%^-ql!%;AM#f4h`8aaG{S5Btv7{rbthX`eoP zn3m2oPHyx{F?TOd(LC^fB3KM~cI7GKPqRESOUf)aaFG!UL#2`H{)L0F2Wj`vmY@$4 zkgmPY1nkbB7X{Rq0CRjT?h^WNOxg5#7i645T{C ze#@RWu|Itu<8>(=3DrOg((8 zmwtz6$fNFt%7RA3M2Hy6n`86F{O4}vA*%YR z|IT70zGUYx6uJ!@Fnx zd!KsNOj4|p(orXwV(BfJPw<{h`cl@mJLu!3)G70{NnAQv(aFEJJXTRd_mt{C*PUrf z3a#k9!|K8i1l*C3FBY+8+mowz|1y{?Z5SfMb7b^P0v^*uCU6sopYhA|S=#bWK0`E} zfTMFraX~wxQpW@Yb^iS^jqu-Y=x+=N0Bm81?6B zoZj9<6BF3>Apgvonv7_;l$F1@t!9VulvyV|CRjd*_5JyyM(CjELwu2`T{t4i$xNg0 zV!7FNfy_>APeE&`NzA$q6k}WTLTySzHR&-;u4OLPX>&=XR#}3)S*nGvHC4=1}TfDi@#kKaRCz1PsCs&M)NNTil0OyFc6noz+whwi;i z!7zBC*e3=FpZKrBH~o$|$S9j(0-K!rP>5=!#VZ^G@fP57qG*kWkICo38vUnv`i-CN zROwb96m{yn!YWLdtkIe1MU(0n{aA!d%sT&Q{+bJJ8wv@oL+1S8`|bB8&t=d0_Qjc0 z>RL(H>iX*EsZX{rE)6!rz!#D>HwUoQVJ3eBgvYZu(SVWlL$>#<8HJhm8w!Z>^N&-Wo58NhEye7LGdOIRfNTY5 zvo(m@Tnj3 zJD?!B+k|3XA^9iM^VP$RSK|Tt8(m5AgVN4(erwBi{7{|l3qqK=#srR{r;ea0e#^5> zS2N~>avt+?8lD-cuKt`-_h)D#*j8>@)9dRMUB^#hmN$;1ydTKRYSg>jxag8UivhhA z+Sc}tsf#lKbRiR%_C>cQp=8j%TBatc^vg^@99xVdtYUa@3ov32?SK(OJ`oJ5YlZES zA)K>7TOwi?wU^ii+vJ4T?;*iVJLs=BnFx^0=oOmq4JU|OctA$d8Cgsq9`Xi0EfA`* zZ?Z?C*ET0W_!1w~}QuCvV%0;VHMr z!`1of%V6NCHPUAa>vl1iM)Xiqsz)jRE;ZtV&LEK?(c19jWWq zrN4ZVS@6J6Un_$HO}WbizB{+zp8vtace&~zg;~)ZzTj2tc;ng-{iyBG5Q2OUJC=xN z0+n@bI9^wjKy!b&hl+vXha#ISmF(RJCqr&u0@`|yLt8z&4}Ody7+2qc5hZ|#=kt2< z%%W$J{9}uDjzH4AH6S$5&1TnQO z4gv;*l869wi~ezXK?G>gVPd_=xMa{VaZAcpt--G=j^JqglV!%Yli1w&peqA*89`=* zxx1J=OX~##js_Bl7JN=hT^nY4!cdiExcaU^Pkw1}XB}!jq98o9{;hcy{mZ=t2Z|^_ z0MBPggi}lzk^4pBmrrPLJj{jTA-_?~YX z*ChmgWk2;o6E>LuB=pjL&hh}_r{!i<`M*j_Jn`S54EUGVhlxHYG9YM4>r8;A%1SJv zA8LX;EgZ_}DGhMKH<&PdL1k)^#tpS(vb zzfO4O`&=YRA3#}&)PxDz!Kpkn=U%i6cEq_=O7WNGuyW3$iJ${ZaCzkTcn|lgZFVT7 z4)q%Q02|qH{cF?IjsdofR&?Qq+?-{@r-ZW;eboi3R#rX+pY*!(8vDPIA(ECY%sE|7 z6$MAHyqLS~QGkD=UvJBZabI_Tun9{;jfLuxHE?Z-QF|Scel_J=v8v}0C*Sy;gon4# zdF@;RY3C!`jxxOZ?Y&&9M4CZkf*_t~`kLw#=RH)iDX- zt6$WK2!$qSLldI&Mhu_{kuM1mDxD8QFk1gmOaUqn)sCxpl|oerv>;jBfHq0Qjf0o8 zAi92?3A{3P&U40@t7G)2sEgC*E@{1JtS;3Jsh}fVuz1JWnOW8QcN`6rW5yY=-{B8? zhVi=e^w9I$S(ww%u8lr(Ak{TqUuW5WPVi~3l)*%qH>?mort&Ar#@*-+TzdZ^)>B5UDaYl~}Um z2@mq0&P!a)+qN5+93I=g0zqaanoRPgtDjnJ3=Xf+FizP?H=+-&RwQ&|uqrG5>0V1m zm(Ly1QGU!PDgMM0f2e8qHktN-5`jHp7G!Sz=fYi7LcYzV2CcByG$?nbWHGpW6fh7| zuF*3Hh^`4mgy6sQg_?UH?@2b8M~yLo!~8o)2SnGg<>`OTiJZ70BAuMNvQD0`!!5Qe z&@T&Op?mJ4p+?kY`WTLW>J`oa{kUg%Y`^-1_@mVxU5U4=;2Sl6U%D}d+ksJgaemXe z-f|mq3{D6xGEgUe#}i7~URl$Vn+MKs)~k0H=hww&n1;p)DLxd|HWEE|O;Ray@3DH& zTci>=y?7>j+B;Y6tCMP&j$yglVXx!`dV$er72p2eBBwH_DPanl5wRl};=57#8l+FY zdxJWG@JhyUyqZ>ZgFe_$%KwXkD3~N0OoC?)){(di$H2=S7KcZ{iC&4s(cYr$f*x}MkX~iX>zt_M?7gbQ1Lw7fG$iV+!I6kzIUPEdCcd48JgHClkRd|T z_d9W+Dtv?E^vPE@#`(>b|3q$CUGiEfH!S=}!%e~3{y4OJO6PYnyZHSl=G1Kxtuj$p zYs+vHes85;pOOe)Lr-eQF@euaAWUo+jD)~!30h2Z(^=cZ!aCARU6Y|Gk@4gvztP>` z$X^K=-wq+4<9N4_aflR)hXW#8tV_) z4bas5xeb4V22W_GXhuP~OEYM}+vXwO$xEA(YLp)M@a_iceHU76uNg{mo=$R|V;rO% zBjX~g={N`S&kVjCQ5b&qjR~GUodOQoBYFatx@ylBxRB0VhDs@HzLceG^Gij91Qao} zn1FrkT5KI9u)C!e=Q4x~K)$y+!=)g&DxH5tJpK43^fTu=xWhdUWWC?=P~4EeR_?<} zsGhCYSv%i9@}YPa)v)Ri*V5nC=Ud{jD0CptnI@!d;@f+8 z!N@i=pNcz-bNO%}+OFYwesyy$tD1GiQj7P6;cx7RJC^Z~;yssLha~Io6CS;;MP7uU2i8RsCCt>G z*K-ia^@GU3PqeaDEN2te79+DmQYTALfB5tDEDIe)+>W996|30dI zPXCDhk&C);YZ^Mhm0L+kN%5Rjg04)l=BFL(z~qSgb`}^wK#cUa1be=nHsT$buv)yU zrLKhNz;csjEuAB-4lQK|d=;u}O5u;}Ui{P?(xrQ8X4ks0W~HXmM&UkUL&_jSUm!Ne z`o}2`;Z3~-8pH?@FL7Da$24vDmeAO))-h}X+%55Q9@Gj#(u)wGsNu;fqc)=$cnyEN zx)uTQ2QbU}*H-+sam&e(Vcqke2W;-K>#!a)ylU|sQ;lBXq|~*^=u-K=Vx;Z|X+jjN zpq)`W?@UzzCq%|eQmf%ZQhdZadAV859*^$H|-I=1-+=>8~i# zmtNH(&-Dp-iGDF-!=ws=7K5`86@P3>Z)^Clz);vTakv2fl+Cx`R58)~dY0m*N83_v zXlNdV?KdTqa8rfc6g6%bL==Y=($saucCGD7l|01q!k;H-s|U3X3qbUNBKMdi|@OSp{KH$0E{%JdlI}!5mP;Bf1+U_o$Fic zTQ&tYfBeQAP9Hv%!?*~J5Eb~a&lqPyRVZ^AC9V}ojvvMs`rCPFZWoSPI0Aa`CKObC z=ejQ_#mS3U4>*f!3=U1yz;oAmmM?U9RZ~FDt{iJmN;2*bwXoWCp}*=E?KSw8+}e() zy4-G69p=PcE@Ic~%r8+N8Osk zX)vI6K?_tyyBdVxE6Qkfv0V zx}#4LqnqRxDZ-WyDAh-kQ}p`k+PRmn=#y@m=VrbCMul&0(IcvnW2`N6OW&^-fRhHX zo|yLz2d4O5Z8(&8t_>O)z7v7gJq#s)DVarIcpn8tv3G(rN;Fk*QjV9iu<$Vw%hxIP|j?&VRqOQO`L4EW1{%Vkzhg z*5UAUk>@}~wyqT+moIk5Zmqnb0BRkTkI){j5BIg{t((kxoW?pk=UeEGtbRyYjq)hS zi`jMfD4Q1pAkz#k__TURJ-wHDmzBp#Vx7Mn^#t9bi*q;)B_FCyUW74oP07Kz$uJ%V z#`TR_Z}f6j_Qr6s1_%8_S&vYlc56qoWK*A?z6-LNe&h5DBB!9-iOY9&cITS2o`IRo zx(Svg)-8)yn1C|+hbLxXWPZ*nRMGdoDzbMQ{d=B3R)x*4V~Ze&VJecqMIuNuBXT3a z0$(fd=o9e`*~@*J!Fjnh1AlAa-yqN}QhuD8val-fRTrE?d5rPMCp5{kCq2$XM#6I( zv>2N>L_U;3p8V=BCKZpAOvozy`d5TBqJiCK$;c#37dw1qtnItpmoS7(@ej3FE2|H; zb|y(0O?97FLYqxnw>0WB&t8i2zdyMvmSk0?cvfEcp8d6B+#Of%<=$6|VFYPT#f>?C zzS=dv8)EuC|H-g(vIg$#t*5d(U*_KBJrz4KzejxS5x{4(*jJGERCLyB2e-GmC;R3= g%>O(%CW{Cr##)X>{w!KT=5K_IwSa#=(9Dtl0HEu*L;wH) literal 0 HcmV?d00001 diff --git a/decide/static/images/spain.jpg b/decide/static/images/spain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2170439f633a45751865a9a7b41fc49ecb2f4f3b GIT binary patch literal 4944 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 LHqiG5W9|P1Erj0R literal 0 HcmV?d00001 diff --git a/decide/static/js/mfb.js b/decide/static/js/mfb.js new file mode 100644 index 0000000000..ea6ce731fe --- /dev/null +++ b/decide/static/js/mfb.js @@ -0,0 +1,98 @@ +/** + * Material floating button + * By: Nobita + * Repo and docs: https://github.com/nobitagit/material-floating-button + * + * License: MIT + */ + + // build script hook - don't remove + ;(function ( window, document, undefined ) { + + + 'use strict'; + + /** + * Some defaults + */ + var clickOpt = 'click', + hoverOpt = 'hover', + toggleMethod = 'data-mfb-toggle', + menuState = 'data-mfb-state', + isOpen = 'open', + isClosed = 'closed', + mainButtonClass = 'mfb-component__button--main'; + + /** + * Internal references + */ + var elemsToClick, + elemsToHover, + mainButton, + target, + currentState; + + /** + * For every menu we need to get the main button and attach the appropriate evt. + */ + function attachEvt( elems, evt ){ + for( var i = 0, len = elems.length; i < len; i++ ){ + mainButton = elems[i].querySelector('.' + mainButtonClass); + mainButton.addEventListener( evt , toggleButton, false); + } + } + + /** + * Remove the hover option, set a click toggle and a default, + * initial state of 'closed' to menu that's been targeted. + */ + function replaceAttrs( elems ){ + for( var i = 0, len = elems.length; i < len; i++ ){ + elems[i].setAttribute( toggleMethod, clickOpt ); + elems[i].setAttribute( menuState, isClosed ); + } + } + + function getElemsByToggleMethod( selector ){ + return document.querySelectorAll('[' + toggleMethod + '="' + selector + '"]'); + } + + /** + * The open/close action is performed by toggling an attribute + * on the menu main element. + * + * First, check if the target is the menu itself. If it's a child + * keep walking up the tree until we found the main element + * where we can toggle the state. + */ + function toggleButton( evt ){ + + target = evt.target; + while ( target && !target.getAttribute( toggleMethod ) ){ + target = target.parentNode; + if(!target) { return; } + } + + currentState = target.getAttribute( menuState ) === isOpen ? isClosed : isOpen; + + target.setAttribute(menuState, currentState); + + } + + /** + * On touch enabled devices we assume that no hover state is possible. + * So, we get the menu with hover action configured and we set it up + * in order to make it usable with tap/click. + **/ + if ( window.Modernizr && Modernizr.touch ){ + elemsToHover = getElemsByToggleMethod( hoverOpt ); + replaceAttrs( elemsToHover ); + } + + elemsToClick = getElemsByToggleMethod( clickOpt ); + + attachEvt( elemsToClick, 'click' ); + +// build script hook - don't remove +})( window, document ); + diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index b517666dc6..a0493fb656 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -3,15 +3,14 @@ {% block title %} - Visualización{% endblock %} {% block extrahead %} - - + + - + + {% endblock %} {% block content %} @@ -21,12 +20,6 @@ Decide Visualización - - - ES - EN - - @@ -34,34 +27,8 @@ onclick="activateDarkMode()">Modo oscuro - +
+ + + {% endblock %} @@ -90,6 +80,8 @@

Resultados:

}) + + - + + + + {% endblock %} From b2445c669150dd0513611b0e26545e0e7809da19 Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 19 Dec 2020 19:36:07 +0100 Subject: [PATCH 027/123] Footer fixed --- .../templates/visualizer/visualizer.html | 73 +++++++++---------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 9f62902484..cc437493a3 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -8,14 +8,14 @@ - {% endblock %} {% block content %}
- + + Decide Visualización @@ -28,46 +28,45 @@ - - - - - - - - - - - - - - - - - - -
OpciónPuntuaciónVotos
[[opt.option]][[opt.postproc]][[opt.votes]]
- - - +
+

Votación no comenzada

+

Votación en curso

+
+

Resultados

+
+ + + + + + + + + + + + + + + +
OpciónPuntuaciónVotos
[[opt.option]][[opt.postproc]][[opt.votes]]
+
- +
-
- -
+ +
+ Evolución y Gestión de la Configuración · Decide + Decide Pícaro - Visualización © 2021 +
+
@@ -334,4 +371,14 @@

{% trans "Re } window.onload = popUp(); + + {% endblock %} diff --git a/decide/visualizer/views.py b/decide/visualizer/views.py index 437d4483c1..940d5d61a3 100644 --- a/decide/visualizer/views.py +++ b/decide/visualizer/views.py @@ -16,11 +16,37 @@ def get_context_data(self, **kwargs): try: r = mods.get('voting', params={'id': vid}) context['voting'] = json.dumps(r[0]) + if r[0]['start_date'] is None: + print('asd') + elif r[0]['end_date'] is None: + #print('asd') + numero_votos = get_numero_votos(vid) + + + context['numero_votos'] = numero_votos + print(context) + + except: raise Http404 return context + + +def get_numero_votos (vid): + + + #census = mods.get('admin', entry_point= '/census/census', params={'voting_id': vid}) + #print('asd') + numero_votos=0 + voters = mods.get('store',params={'voting_id':vid}) + voters_id = [v['voting_id'] for v in voters] + numero_votos= len(voters_id) + + return numero_votos + + class ContactUs(TemplateView): try: template_name = 'visualizer/contactUs.html' From a12d9ed1cc92cf27cbee742e145bce228f98833b Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Tue, 29 Dec 2020 19:24:30 +0100 Subject: [PATCH 063/123] Mejorado podio --- .gitignore | 1 + decide/locale/es/LC_MESSAGES/django.mo | Bin 2392 -> 2497 bytes decide/locale/es/LC_MESSAGES/django.po | 28 +++++++++++++----- decide/locale/fr/LC_MESSAGES/django.mo | Bin 2378 -> 2485 bytes decide/locale/fr/LC_MESSAGES/django.po | 28 +++++++++++++----- .../templates/visualizer/visualizer.html | 26 +++++++++------- 6 files changed, 57 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index b823e313b4..246be0f34b 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,4 @@ ENV/ .mypy_cache/ .vagrant +.vscode/settings.json diff --git a/decide/locale/es/LC_MESSAGES/django.mo b/decide/locale/es/LC_MESSAGES/django.mo index ee38f35995e6717106a3b7cd6510bff7444c4391..eb09a7a12bb6f9f8e486587b1425fccc2fe2f085 100644 GIT binary patch delta 967 zcmX}rOGwmF6vy#1Nff?zW{QtmID(rRaG}&di^%bj2rg#jBBT)1 zO^UdYf|mbQL5PKmXyZzPuw|=|XjN_U`}@xw4<0}F|GM}5&;8HW_(4VXdpxvhL_66) zP6o_+a68C9B2!=%#aZVv7ID0S-S`sq>?gc{Kd~79qMi$d%qp=IW7v!(coPfFveuUy z*f3t>!Wc$y0X4xgmf{ND!VS~{hZx2q)cwb(!cI^N{XiD5-|qT9cRs*Fx?X}I*0)*) zTA&eY@doO_QRg^n;`H={MxhemVc(b&gf7I@f_JxCbxdUF^jas*p9zmND33po!k1 z7WAC^s2jha-(u86C(cuM{y(a)2&-Pk8swDqqMqwVT_3?3e1PiUY?S`1!bMJ0<8xFY zyY9v}NC*AN)G~!W9z{FZ=8tkk>qV}R>Y%n!->();konNu`A{Jh+W%GtYQHK~sGxkP z&Du-FRkEH`2NaED6WL6%#s0_3NAJIxwo9R3R2`|V=mmM7+_%vA^id-7Wcpz&ZC!J@ zVcNS>P#+B6OD2aWyi|BHP}TYIeIoNLJ-;wxUFSpZU1T*_I69CV7#g2gza6bR1AJIf Ai~s-t delta 884 zcmYMz-%FEG9LMqRe%R7!t*y?3NU4b%o--Tby2-*tXR4m+gL`adzr{`QNG zZVa%x45Jo~VH8uS8^_&w);Wv)jF&J^)+(rln?#q#1H6qP7FDLkoDWa|&tRPWtw`qz zK0~E$1vzZZ`2p{8zK+UJ3l-Q8jNmEW!#}7@jT8N4oJ5AKfZDL=e1f`e5$j52jgA&t zb-qQ7e?kSei8pWuIqZ-|^KI1p30}i9RHhGfW+#Di9StSf?nc5qFZtq|KbaGmYu%zeOFS@{xM) z4op8nOdZN~s-9$ks#m4-^3c|J6&Ub0K6jOTjYR0RKl!Now6ZW)PM4Q!`(M)4TKf6? Ki)wjs-u?l\n" "Language-Team: LANGUAGE \n" @@ -96,7 +96,7 @@ msgstr "Perfil en GitHub" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:119 +#: visualizer/templates/visualizer/visualizer.html:137 msgid "Evolution and Configuration Management" msgstr "Evolución y Gestión de la Configuración" @@ -164,29 +164,41 @@ msgstr "Votación en curso" msgid "Results" msgstr "Resultados" -#: visualizer/templates/visualizer/visualizer.html:72 +#: visualizer/templates/visualizer/visualizer.html:69 +msgid "2nd place" +msgstr "2º puesto" + +#: visualizer/templates/visualizer/visualizer.html:70 +msgid "WINNER" +msgstr "GANADOR" + +#: visualizer/templates/visualizer/visualizer.html:71 +msgid "3rd place" +msgstr "3º puesto" + +#: visualizer/templates/visualizer/visualizer.html:90 msgid "Option" msgstr "Opción" -#: visualizer/templates/visualizer/visualizer.html:73 +#: visualizer/templates/visualizer/visualizer.html:91 msgid "Punctuation" msgstr "Puntuación" -#: visualizer/templates/visualizer/visualizer.html:74 +#: visualizer/templates/visualizer/visualizer.html:92 #, fuzzy #| msgid "Vote" msgid "Votes" msgstr "Voto" -#: visualizer/templates/visualizer/visualizer.html:95 +#: visualizer/templates/visualizer/visualizer.html:113 msgid "Donut Chart" msgstr "Gráfico Circular" -#: visualizer/templates/visualizer/visualizer.html:103 +#: visualizer/templates/visualizer/visualizer.html:121 msgid "Save as PNG" msgstr "Guardar como PNG" -#: visualizer/templates/visualizer/visualizer.html:104 +#: visualizer/templates/visualizer/visualizer.html:122 msgid "Save as PDF" msgstr "Guardar como PDF" diff --git a/decide/locale/fr/LC_MESSAGES/django.mo b/decide/locale/fr/LC_MESSAGES/django.mo index e119da1c4e7c36a755f1b315c244cb89aa48e46d..649cb1135a0e62bf290db37b270993531a8bc116 100644 GIT binary patch delta 969 zcmYMzJ4{n?6vy$?_7<$=WvkW-B7$NW@KMTQ0-*zGOr$2n#1K1Zq%k3AsxmYwNhc-~ z69E?^ZYB+zX$+GtmBmFT;-aH2OitRRet)=+`fL*wT8lZxGxPe!28#Tc`hVd)v{sYv)zN04kiA-R>-SwtBAK)Qf??sRKElHsX zhB1kgs0VY-o2Y?rV+`*iW7$*pyX<_1TF4tr;9Jbn%@3#vTU?Y;1|Pr#&N9EHC?@a$ zp2QcZ1=Uaw?4erNz&L(GweS%6vnB^EFvuZ=QB>zLsBvbU3#eCHKy`2vt9oZU6k7Q% z>i0Wj(e@E_<0p6h3u@&D&R_2QAJoEHcn0IlPH9(B<6J{+WDeDt8}9sag#K$ME1Xd4 z%cvb~;%R(^bkHA6J5lI6aJ8J1i%Oj=Ld-tP7 zn|jhNi}ktCU@&|=pPyf>FNN;}66r?mVbQ;hyZ+bpde?feJD1Jnv-w+Fmm)*|0NH0! AlmGw# delta 862 zcmYMzy)Q#i7{~F`H&yl8ma5jf3X66i5`$=hCI&HBu&{R`CPO3XA~BIhh(uzLP9iBb ziN(MmF^Gg92al|v)G6QY``1z;XQ`%3H|tuP56smEL$CJV}?m%d<^RNA&E*biOrb8Brc&A z*hLTSqpm+dZR{Ae&^c;>OZ)q+oxig_B8PdUQ~r01u)ZlV(2Xv#OFt@c5Ca%P-I%cF zC)2RuWXl|2@}L5@=EFRLQkq3(-T= zT6=APDsdYzNDL5qWomk`TGQ){+mk+wnE7fcHK(t?m*^+>NX-zTraywJpr)tjB%*}A aaw=Y_NHOP%I*S*c6-P1b-EkhC_@aO9ZaOvq diff --git a/decide/locale/fr/LC_MESSAGES/django.po b/decide/locale/fr/LC_MESSAGES/django.po index 81211d0644..635ad23c1b 100644 --- a/decide/locale/fr/LC_MESSAGES/django.po +++ b/decide/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-12-28 12:59+0000\n" +"POT-Creation-Date: 2020-12-29 17:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -96,7 +96,7 @@ msgstr "Profile GitHub" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:119 +#: visualizer/templates/visualizer/visualizer.html:137 msgid "Evolution and Configuration Management" msgstr "Evolution et Gestion de la Configuration" @@ -164,28 +164,40 @@ msgstr "Vote en cours" msgid "Results" msgstr "Résultats" -#: visualizer/templates/visualizer/visualizer.html:72 +#: visualizer/templates/visualizer/visualizer.html:69 +msgid "2nd place" +msgstr "2ème place" + +#: visualizer/templates/visualizer/visualizer.html:70 +msgid "WINNER" +msgstr "GAGNANT" + +#: visualizer/templates/visualizer/visualizer.html:71 +msgid "3rd place" +msgstr "3ème place" + +#: visualizer/templates/visualizer/visualizer.html:90 msgid "Option" msgstr "Option" -#: visualizer/templates/visualizer/visualizer.html:73 +#: visualizer/templates/visualizer/visualizer.html:91 msgid "Punctuation" msgstr "Score" -#: visualizer/templates/visualizer/visualizer.html:74 +#: visualizer/templates/visualizer/visualizer.html:92 #, fuzzy #| msgid "Vote" msgid "Votes" msgstr "Vote" -#: visualizer/templates/visualizer/visualizer.html:95 +#: visualizer/templates/visualizer/visualizer.html:113 msgid "Donut Chart" msgstr "Graphique en anneau" -#: visualizer/templates/visualizer/visualizer.html:103 +#: visualizer/templates/visualizer/visualizer.html:121 msgid "Save as PNG" msgstr "Sauver comme PNG" -#: visualizer/templates/visualizer/visualizer.html:104 +#: visualizer/templates/visualizer/visualizer.html:122 msgid "Save as PDF" msgstr "Sauver comme PDF" diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 275dc7a866..a160bfcc2b 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -58,21 +58,21 @@

{% trans "Voting in progress" %}

{% trans "Results" %}

-

                 
-
-
+ +
+ - - - - + + + +
{% trans "2nd place"%}
{% trans "WINNER" %}
{% trans "3rd place" %}
-
+
@@ -388,19 +388,25 @@

{% trans "Re #response { font-family: courier-new, courier; } - #podium0, #podium1, #podium2 { + #podium0, #podium1, #podium2, #winner { width: 150px; - background: rgb(148, 101, 101); + font-size: 5mm; text-align: center; + font-weight: 700; + } + #podium0 { /* gold */ height: 250px; + background: rgb(255, 215, 0); } #podium1 { /* silver */ height: 200px; + background: rgb(192, 192, 192); } #podium2 { /* bronze */ height: 150px; + background: rgb(205,127,50); } {% endblock %} From 032a5e0867893a44688fda0b0aceb800855ba3aa Mon Sep 17 00:00:00 2001 From: marti Date: Thu, 31 Dec 2020 12:50:00 +0100 Subject: [PATCH 064/123] Images language button improved --- decide/base/templates/base.html | 2 +- decide/static/images/england.jpg | Bin 10009 -> 40514 bytes decide/static/images/france.jpg | Bin 23402 -> 21421 bytes decide/static/images/spain.jpg | Bin 4944 -> 24305 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/decide/base/templates/base.html b/decide/base/templates/base.html index b44413212f..02f2ce69d0 100644 --- a/decide/base/templates/base.html +++ b/decide/base/templates/base.html @@ -40,7 +40,7 @@ {% elif LANGUAGE_CODE == "en"%}

- - - - + + + + + + +
@@ -180,14 +181,13 @@

{% trans "Re colores.push(color) } var ctx = document.getElementById('myChart2').getContext('2d'); - - var chart = new Chart(ctx, { - type: 'doughnut', + var chart2 = new Chart(ctx, { + type: 'bar', //element:'graficaDonut', data:{ datasets: [{ data: data, - backgroundColor: colores, + backgroundColor: 'blue', label: 'Número de votos'}], labels: labels}, options: {responsive: false} @@ -232,17 +232,15 @@

{% trans "Re }); var canvas = document.getElementById('myChart'); var dataURL2 = canvas.toDataURL(); - /* NO BORRAR ABRAHAM var canvas = document.getElementById('myChart2'); var dataURL3 = canvas.toDataURL(); - */ + //Añado las gráficas al documento, insertando antes de cada gráfica una nueva página doc.addPage(); doc.addImage(dataURL2,'PNG', 8, 8); - /* NO BORRAR ABRAHAM doc.addPage(); doc.addImage( dataURL3, 'PNG', 10, 10); - */ + //Guardo el documento doc.save('Datos-Votacion.pdf'); } @@ -272,12 +270,12 @@

{% trans "Re Canvas2Image.saveAsPNG(canvas); } - + + - + @@ -57,23 +58,20 @@

{% trans "Voting in progress" %}

{% trans "Results" %}

- +

                 
- -
- +
-
{% trans "2nd place"%}
{% trans "WINNER" %}
{% trans "3rd place" %}
- - + +
@@ -106,27 +104,29 @@

{% trans "Re

+ +
+ - + - - + - - From 3a85fe41f616c36ebc33b7459fd1cbd8a2a11a2f Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 2 Jan 2021 17:10:57 +0100 Subject: [PATCH 072/123] German language implemented and icons in titles --- decide/base/templates/base.html | 18 +++ decide/decide/settings.py | 1 + decide/locale/de/LC_MESSAGES/django.po | 130 +++++++++--------- decide/locale/es/LC_MESSAGES/django.mo | Bin 2497 -> 2597 bytes decide/locale/es/LC_MESSAGES/django.po | 46 ++++--- decide/locale/fr/LC_MESSAGES/django.mo | Bin 2485 -> 2586 bytes decide/locale/fr/LC_MESSAGES/django.po | 46 ++++--- decide/static/images/german.jpg | Bin 0 -> 21787 bytes .../templates/visualizer/visualizer.html | 11 +- 9 files changed, 142 insertions(+), 110 deletions(-) create mode 100644 decide/static/images/german.jpg diff --git a/decide/base/templates/base.html b/decide/base/templates/base.html index 02f2ce69d0..2cfa00e178 100644 --- a/decide/base/templates/base.html +++ b/decide/base/templates/base.html @@ -32,9 +32,11 @@ type="submit" value="{{lang.code}}" name="language" {% if lang.code == "es" %} data-mfb-label="Español" {% elif lang.code == "en"%} data-mfb-label="Inglés" + {% elif lang.code == "de"%} data-mfb-label="Alemán" {% else %} data-mfb-label="Francés" {% endif %}> {% elif LANGUAGE_CODE == "en"%} @@ -42,9 +44,23 @@ type="submit" value="{{lang.code}}" name="language" {% if lang.code == "es" %} data-mfb-label="Spanish" {% elif lang.code == "en"%} data-mfb-label="English" + {% elif lang.code == "de"%} data-mfb-label="German" {% else %} data-mfb-label="French" {% endif %}> + + {% elif LANGUAGE_CODE == "de"%} + {% else %} @@ -52,9 +68,11 @@ type="submit" value="{{lang.code}}" name="language" {% if lang.code == "es" %} data-mfb-label="Espagnol" {% elif lang.code == "en"%} data-mfb-label="Anglais" + {% elif lang.code == "de"%} data-mfb-label="Allemand" {% else %} data-mfb-label="Français" {% endif %}> {% endif %} diff --git a/decide/decide/settings.py b/decide/decide/settings.py index 64774ecbc5..542c2ac60c 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -162,6 +162,7 @@ ('en', _('English')), ('es', _('Spanish')), ('fr', _('French')), + ('de', _('German')), ] TIME_ZONE = 'UTC' diff --git a/decide/locale/de/LC_MESSAGES/django.po b/decide/locale/de/LC_MESSAGES/django.po index 7980589696..85ec1e8298 100644 --- a/decide/locale/de/LC_MESSAGES/django.po +++ b/decide/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-02 15:22+0000\n" +"POT-Creation-Date: 2021-01-02 15:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -20,59 +20,63 @@ msgstr "" #: booth/templates/booth/booth.html:19 msgid "Logout" -msgstr "" +msgstr "Ausloggen" #: booth/templates/booth/booth.html:33 msgid "Username" -msgstr "" +msgstr "Nutzername" #: booth/templates/booth/booth.html:41 msgid "Password" -msgstr "" +msgstr "Passwort" #: booth/templates/booth/booth.html:49 msgid "Login" -msgstr "" +msgstr "Anmeldung" #: booth/templates/booth/booth.html:64 msgid "Vote" -msgstr "" +msgstr "Abstimmung" #: booth/templates/booth/booth.html:160 booth/templates/booth/booth.html:170 #: booth/templates/booth/booth.html:201 msgid "Error: " -msgstr "" +msgstr "Fehler: " #: booth/templates/booth/booth.html:198 msgid "Conglatulations. Your vote has been sent" -msgstr "" +msgstr "Herzliche Glückwünsche. Ihre Stimme wurde gesendet" #: decide/settings.py:162 msgid "English" -msgstr "" +msgstr "Englisch" #: decide/settings.py:163 msgid "Spanish" -msgstr "" +msgstr "Spanisch" #: decide/settings.py:164 msgid "French" -msgstr "" +msgstr "Französisch" + +#: decide/settings.py:165 +msgid "German" +msgstr "Deutsch" #: visualizer/templates/visualizer/aboutUs.html:16 #: visualizer/templates/visualizer/contactUs.html:20 -#: visualizer/templates/visualizer/visualizer.html:38 +#: visualizer/templates/visualizer/visualizer.html:39 msgid "Decide Visualization" -msgstr "" +msgstr "Decide Visualisierung" #: visualizer/templates/visualizer/aboutUs.html:20 #: visualizer/templates/visualizer/contactUs.html:24 msgid "Return" -msgstr "" +msgstr "Rückkehr" #: visualizer/templates/visualizer/aboutUs.html:26 msgid "Visualization Team" -msgstr "" +msgstr "Anzeigegeräte" #: visualizer/templates/visualizer/aboutUs.html:35 #: visualizer/templates/visualizer/aboutUs.html:43 @@ -81,7 +85,7 @@ msgstr "" #: visualizer/templates/visualizer/aboutUs.html:67 #: visualizer/templates/visualizer/aboutUs.html:75 msgid "Computer Engineering student in Software Engineering" -msgstr "" +msgstr "Student der Computertechnik in Software Engineering" #: visualizer/templates/visualizer/aboutUs.html:37 #: visualizer/templates/visualizer/aboutUs.html:45 @@ -90,115 +94,115 @@ msgstr "" #: visualizer/templates/visualizer/aboutUs.html:69 #: visualizer/templates/visualizer/aboutUs.html:77 msgid "GitHub Profile" -msgstr "" +msgstr "GitHub-Profil" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:141 +#: visualizer/templates/visualizer/visualizer.html:142 msgid "Evolution and Configuration Management" -msgstr "" +msgstr "Entwicklung und Konfiguration des Managements" #: visualizer/templates/visualizer/contactUs.html:33 msgid "Contact Info" -msgstr "" +msgstr "Kontaktinformation" #: visualizer/templates/visualizer/contactUs.html:37 msgid "Higher Technical School of Computer Engineering," -msgstr "" +msgstr "Höhere technische Fakultät für Computertechnik," #: visualizer/templates/visualizer/contactUs.html:38 msgid "Sevilla University, 41012" -msgstr "" +msgstr "Sevilla Universität, 41012" #: visualizer/templates/visualizer/contactUs.html:63 msgid "Send a Message" -msgstr "" +msgstr "Eine Nachricht schicken" #: visualizer/templates/visualizer/contactUs.html:68 msgid "Full name" -msgstr "" +msgstr "Vollständiger Name" #: visualizer/templates/visualizer/contactUs.html:72 msgid "Subject" -msgstr "" +msgstr "Gegenstand" #: visualizer/templates/visualizer/contactUs.html:76 msgid "Email address" -msgstr "" +msgstr "E-Mail-Addresse" #: visualizer/templates/visualizer/contactUs.html:80 msgid "Write your message here" -msgstr "" +msgstr "Schreibe deine Nachricht hier" #: visualizer/templates/visualizer/contactUs.html:83 msgid "Send" -msgstr "" +msgstr "Senden" -#: visualizer/templates/visualizer/visualizer.html:43 +#: visualizer/templates/visualizer/visualizer.html:44 msgid "Contact us" -msgstr "" +msgstr "Kontaktiere uns" -#: visualizer/templates/visualizer/visualizer.html:44 +#: visualizer/templates/visualizer/visualizer.html:45 msgid "About us" -msgstr "" +msgstr "Über uns" -#: visualizer/templates/visualizer/visualizer.html:49 +#: visualizer/templates/visualizer/visualizer.html:50 msgid "Light mode" -msgstr "" +msgstr "Licht Modus" -#: visualizer/templates/visualizer/visualizer.html:51 +#: visualizer/templates/visualizer/visualizer.html:52 msgid "Dark mode" -msgstr "" +msgstr "Dunkler Modus" -#: visualizer/templates/visualizer/visualizer.html:56 +#: visualizer/templates/visualizer/visualizer.html:57 msgid "Voting not started" -msgstr "" +msgstr "Abstimmung nicht gestartet" -#: visualizer/templates/visualizer/visualizer.html:57 +#: visualizer/templates/visualizer/visualizer.html:58 msgid "Voting in progress" -msgstr "" +msgstr "Abstimmung läuft" -#: visualizer/templates/visualizer/visualizer.html:59 +#: visualizer/templates/visualizer/visualizer.html:60 msgid "Results" -msgstr "" +msgstr "Ergebnisse" -#: visualizer/templates/visualizer/visualizer.html:67 +#: visualizer/templates/visualizer/visualizer.html:68 msgid "2nd place" -msgstr "" +msgstr "2. Platz" -#: visualizer/templates/visualizer/visualizer.html:68 +#: visualizer/templates/visualizer/visualizer.html:69 msgid "WINNER" -msgstr "" +msgstr "GEWINNER" -#: visualizer/templates/visualizer/visualizer.html:69 +#: visualizer/templates/visualizer/visualizer.html:70 msgid "3rd place" -msgstr "" +msgstr "3. Platz" -#: visualizer/templates/visualizer/visualizer.html:88 +#: visualizer/templates/visualizer/visualizer.html:89 msgid "Option" -msgstr "" +msgstr "Möglichkeit" -#: visualizer/templates/visualizer/visualizer.html:89 +#: visualizer/templates/visualizer/visualizer.html:90 msgid "Punctuation" -msgstr "" +msgstr "Interpunktion" -#: visualizer/templates/visualizer/visualizer.html:90 +#: visualizer/templates/visualizer/visualizer.html:91 msgid "Votes" -msgstr "" +msgstr "Stimmen" -#: visualizer/templates/visualizer/visualizer.html:113 +#: visualizer/templates/visualizer/visualizer.html:114 msgid "Donut Chart" -msgstr "" +msgstr "Kreisdiagramm" -#: visualizer/templates/visualizer/visualizer.html:114 +#: visualizer/templates/visualizer/visualizer.html:115 msgid "Bar Chart" -msgstr "" +msgstr "Balkendiagramm" -#: visualizer/templates/visualizer/visualizer.html:124 -#: visualizer/templates/visualizer/visualizer.html:126 +#: visualizer/templates/visualizer/visualizer.html:125 +#: visualizer/templates/visualizer/visualizer.html:127 msgid "Save as PNG" -msgstr "" +msgstr "Als PNG speichern" -#: visualizer/templates/visualizer/visualizer.html:130 +#: visualizer/templates/visualizer/visualizer.html:131 msgid "Save as PDF" -msgstr "" +msgstr "Als PDF speichern" diff --git a/decide/locale/es/LC_MESSAGES/django.mo b/decide/locale/es/LC_MESSAGES/django.mo index eb09a7a12bb6f9f8e486587b1425fccc2fe2f085..6e240bb12b39980e91f5ff71ac5fe397eb943a41 100644 GIT binary patch delta 1010 zcmZwFPe_zO7{~Ev-Cfr;b6Yjd)Lh$kGYRz&1?|Zd5~D+ebP8g#?H}$&FXADBmmu&Y z6(UHdmJ~9&Ep*yFh+#MBkQbq@(V* zMD3-{gv@eSYv4h7A2y5QnzM>cwCk?Di5F;p#X*cl%vx|5n=ywPe+4`6Iv&9y9yRmr z2`@1|_|AFE(te4J_z5*Z-L=19EA1^D#qX#Ej1PN9zX7AlkTs5r0DSH~4z zj^RhVh;`Ho|6&6Fq535lt-xK*G^*bSYNwY`^NcxfxbM@b1wO()e1=SEZ{nQ42EKD0 zKHv%3HB?HsQ7hfSPW+8pNQ9{B*MekJ7b*BZgj#_5=;(BZHP1P!=INm-@L6h>+DrVP zC~cYj*C5r}$m%Vbwi_T?KA)m1oH*th+?xG6Tq%wwDFN-6rZ`};;;vA}l zE6#OPrC%|FK3>NksFofhe|F)lVh_ivR-Nlb6+D2~a0~}=5>?0=mRcBmWT1(*Pz(Cb zJ=BdqF=#Prq7&!2JO2+=SR<=;U>kDE22sxqqpm-}Hk?3pa3M>WbqxUkPUa^ zH>88XWNMj0ACICy-Va8#qV*!TNOe%#sP9*cc9Hea-1Sf)DeZqZ1GQh3DpXKC)Mo9a z;tttPssoBn@-~?#+2Y{i<)aVYOxvZAf|%1$IxIgC{O SU*4Cn|F$U~^0%9pLjM6OuSEF( diff --git a/decide/locale/es/LC_MESSAGES/django.po b/decide/locale/es/LC_MESSAGES/django.po index cf675e086c..18f270572b 100644 --- a/decide/locale/es/LC_MESSAGES/django.po +++ b/decide/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-02 15:22+0000\n" +"POT-Creation-Date: 2021-01-02 15:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -61,9 +61,13 @@ msgstr "Español" msgid "French" msgstr "Français" +#: decide/settings.py:165 +msgid "German" +msgstr "Alemán" + #: visualizer/templates/visualizer/aboutUs.html:16 #: visualizer/templates/visualizer/contactUs.html:20 -#: visualizer/templates/visualizer/visualizer.html:38 +#: visualizer/templates/visualizer/visualizer.html:39 msgid "Decide Visualization" msgstr "Decide Visualización" @@ -96,7 +100,7 @@ msgstr "Perfil en GitHub" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:141 +#: visualizer/templates/visualizer/visualizer.html:142 msgid "Evolution and Configuration Management" msgstr "Evolución y Gestión de la Configuración" @@ -136,74 +140,74 @@ msgstr "Escriba aquí su mensaje" msgid "Send" msgstr "Enviar" -#: visualizer/templates/visualizer/visualizer.html:43 +#: visualizer/templates/visualizer/visualizer.html:44 msgid "Contact us" msgstr "Contáctanos" -#: visualizer/templates/visualizer/visualizer.html:44 +#: visualizer/templates/visualizer/visualizer.html:45 msgid "About us" msgstr "Sobre nosotros" -#: visualizer/templates/visualizer/visualizer.html:49 +#: visualizer/templates/visualizer/visualizer.html:50 msgid "Light mode" msgstr "Modo claro" -#: visualizer/templates/visualizer/visualizer.html:51 +#: visualizer/templates/visualizer/visualizer.html:52 msgid "Dark mode" msgstr "Modo oscuro" -#: visualizer/templates/visualizer/visualizer.html:56 +#: visualizer/templates/visualizer/visualizer.html:57 msgid "Voting not started" msgstr "Votación no comenzada" -#: visualizer/templates/visualizer/visualizer.html:57 +#: visualizer/templates/visualizer/visualizer.html:58 msgid "Voting in progress" msgstr "Votación en curso" -#: visualizer/templates/visualizer/visualizer.html:59 +#: visualizer/templates/visualizer/visualizer.html:60 msgid "Results" msgstr "Resultados" -#: visualizer/templates/visualizer/visualizer.html:67 +#: visualizer/templates/visualizer/visualizer.html:68 msgid "2nd place" msgstr "2º puesto" -#: visualizer/templates/visualizer/visualizer.html:68 +#: visualizer/templates/visualizer/visualizer.html:69 msgid "WINNER" msgstr "GANADOR" -#: visualizer/templates/visualizer/visualizer.html:69 +#: visualizer/templates/visualizer/visualizer.html:70 msgid "3rd place" msgstr "3º puesto" -#: visualizer/templates/visualizer/visualizer.html:88 +#: visualizer/templates/visualizer/visualizer.html:89 msgid "Option" msgstr "Opción" -#: visualizer/templates/visualizer/visualizer.html:89 +#: visualizer/templates/visualizer/visualizer.html:90 msgid "Punctuation" msgstr "Puntuación" -#: visualizer/templates/visualizer/visualizer.html:90 +#: visualizer/templates/visualizer/visualizer.html:91 #, fuzzy #| msgid "Vote" msgid "Votes" msgstr "Voto" -#: visualizer/templates/visualizer/visualizer.html:113 +#: visualizer/templates/visualizer/visualizer.html:114 msgid "Donut Chart" msgstr "Gráfico Circular" -#: visualizer/templates/visualizer/visualizer.html:114 +#: visualizer/templates/visualizer/visualizer.html:115 msgid "Bar Chart" msgstr "Gráfico de Barras" -#: visualizer/templates/visualizer/visualizer.html:124 -#: visualizer/templates/visualizer/visualizer.html:126 +#: visualizer/templates/visualizer/visualizer.html:125 +#: visualizer/templates/visualizer/visualizer.html:127 msgid "Save as PNG" msgstr "Guardar como PNG" -#: visualizer/templates/visualizer/visualizer.html:130 +#: visualizer/templates/visualizer/visualizer.html:131 msgid "Save as PDF" msgstr "Guardar como PDF" diff --git a/decide/locale/fr/LC_MESSAGES/django.mo b/decide/locale/fr/LC_MESSAGES/django.mo index 649cb1135a0e62bf290db37b270993531a8bc116..078a9a8035799fd34263774742210e7f9913d67c 100644 GIT binary patch delta 1011 zcmZwFJ4_T&6vpwhFP0SrTvilC8AO*|Lev7PO-uyiD-;$+DkFnTToN(v2*z$22o*s? zG)4<4G!Z)8Xaxn)Xl&HN7F#=7VkQ4?xFt7x?{CiC`#dur+g=u;Kl$`Cqx4ZbsrM3Q z6c4CT+GK&)`0+pypq~0$#@^4Df(iWHlbLbVSa1 zED|qb1Aam+u3SYMoaYY2d2s_<)1N z8>p0SquynbS-MFJDsD$EV?C&GW%vI8>LL~Ai0i+FI^YBz$H&Oh_B_Y?*Fvx9(2d@r zQuQ9y{~dLspQu-{i8}B$9>xDiM&mKcP#;wX&=`%^H>_7vrs`E4qiW+`YLVK>{&7(n zPwzg)H`HPFD%w;xRyj%KqmNU02uoBI-B87gTeEIw7b**!IWD^B!G4;S-8gP_Yo%J{ z6!ir4hyqH_(p0KDH{^%jaMcf|mljh0GC?@y->=W6-z4*wL;pc_vNjWVpO?LHKMaF< UG25HSUJPcYAKt0fM;a#+JDo35e*gdg delta 923 zcmXxjIV?m`6vpv0GtWBqvG3b33bBMnLMTK-lo|ygAtFL3BvVW^l|*7|1cgK*Iwqo` zK}{tZN*a|44gYW4Ihpf*_icAM_sxFsWhnMq(kGt;UCEd?OkMXU7h6bp`3T#KcIN}^fbv%JZIED0O ztL}W=xq+I<5tiWz4pGf()PTR-ltDT#z%m?Qe2dU%!#OO)E!2cgQ7>GfN_dMQd`6Y< z1Nqqx2Tjn=A%a0v<$6&43^>P7TRVxW;5NpzXNNR2^E1@>IWlRxK|Ofq?mwVr{^Wdj z*S}B``^6dzF*;4_LiN*!TF4-(GNbPLY!>y`N*1`F(yyadw2hUxk5n+(nO36E^NI-B znr!`do=>}u)B@C(zTZN!o=k=MPDMG5koG@JqnT6%6x!odsO*}tqLHj3RRKjU*+4dt zT4f8#N1yyQN>HJHloq0@Xlq$dvZB_#G+V#CI6bp-9w^y)416UXykmbNo)PvXE;8qR Ef6`P%&j0`b diff --git a/decide/locale/fr/LC_MESSAGES/django.po b/decide/locale/fr/LC_MESSAGES/django.po index e6424fabc5..9e7cb46ae7 100644 --- a/decide/locale/fr/LC_MESSAGES/django.po +++ b/decide/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-02 15:22+0000\n" +"POT-Creation-Date: 2021-01-02 15:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -61,9 +61,13 @@ msgstr "Espagnol" msgid "French" msgstr "Français" +#: decide/settings.py:165 +msgid "German" +msgstr "Deutsch" + #: visualizer/templates/visualizer/aboutUs.html:16 #: visualizer/templates/visualizer/contactUs.html:20 -#: visualizer/templates/visualizer/visualizer.html:38 +#: visualizer/templates/visualizer/visualizer.html:39 msgid "Decide Visualization" msgstr "Decide Visualization" @@ -96,7 +100,7 @@ msgstr "Profile GitHub" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:141 +#: visualizer/templates/visualizer/visualizer.html:142 msgid "Evolution and Configuration Management" msgstr "Evolution et Gestion de la Configuration" @@ -136,73 +140,73 @@ msgstr "Ecrivez votre méssage ici" msgid "Send" msgstr "Evoyer" -#: visualizer/templates/visualizer/visualizer.html:43 +#: visualizer/templates/visualizer/visualizer.html:44 msgid "Contact us" msgstr "Contacter nous" -#: visualizer/templates/visualizer/visualizer.html:44 +#: visualizer/templates/visualizer/visualizer.html:45 msgid "About us" msgstr "A propos de nous" -#: visualizer/templates/visualizer/visualizer.html:49 +#: visualizer/templates/visualizer/visualizer.html:50 msgid "Light mode" msgstr "Mode clair" -#: visualizer/templates/visualizer/visualizer.html:51 +#: visualizer/templates/visualizer/visualizer.html:52 msgid "Dark mode" msgstr "Mode sombre" -#: visualizer/templates/visualizer/visualizer.html:56 +#: visualizer/templates/visualizer/visualizer.html:57 msgid "Voting not started" msgstr "Le vote n'a pas commencé" -#: visualizer/templates/visualizer/visualizer.html:57 +#: visualizer/templates/visualizer/visualizer.html:58 msgid "Voting in progress" msgstr "Vote en cours" -#: visualizer/templates/visualizer/visualizer.html:59 +#: visualizer/templates/visualizer/visualizer.html:60 msgid "Results" msgstr "Résultats" -#: visualizer/templates/visualizer/visualizer.html:67 +#: visualizer/templates/visualizer/visualizer.html:68 msgid "2nd place" msgstr "2ème place" -#: visualizer/templates/visualizer/visualizer.html:68 +#: visualizer/templates/visualizer/visualizer.html:69 msgid "WINNER" msgstr "GAGNANT" -#: visualizer/templates/visualizer/visualizer.html:69 +#: visualizer/templates/visualizer/visualizer.html:70 msgid "3rd place" msgstr "3ème place" -#: visualizer/templates/visualizer/visualizer.html:88 +#: visualizer/templates/visualizer/visualizer.html:89 msgid "Option" msgstr "Option" -#: visualizer/templates/visualizer/visualizer.html:89 +#: visualizer/templates/visualizer/visualizer.html:90 msgid "Punctuation" msgstr "Score" -#: visualizer/templates/visualizer/visualizer.html:90 +#: visualizer/templates/visualizer/visualizer.html:91 #, fuzzy #| msgid "Vote" msgid "Votes" msgstr "Vote" -#: visualizer/templates/visualizer/visualizer.html:113 +#: visualizer/templates/visualizer/visualizer.html:114 msgid "Donut Chart" msgstr "Graphique en anneau" -#: visualizer/templates/visualizer/visualizer.html:114 +#: visualizer/templates/visualizer/visualizer.html:115 msgid "Bar Chart" msgstr "Graphique à barres" -#: visualizer/templates/visualizer/visualizer.html:124 -#: visualizer/templates/visualizer/visualizer.html:126 +#: visualizer/templates/visualizer/visualizer.html:125 +#: visualizer/templates/visualizer/visualizer.html:127 msgid "Save as PNG" msgstr "Sauver comme PNG" -#: visualizer/templates/visualizer/visualizer.html:130 +#: visualizer/templates/visualizer/visualizer.html:131 msgid "Save as PDF" msgstr "Sauver comme PDF" diff --git a/decide/static/images/german.jpg b/decide/static/images/german.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdcb0b2c27bf1f7c92d7585fee09793e651e22c5 GIT binary patch literal 21787 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 z%0D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 + @@ -53,24 +54,24 @@
-

{% trans "Voting not started" %}

-

{% trans "Voting in progress" %}

+

{% trans "Voting not started" %}

+

{% trans "Voting in progress" %}

{% trans "Results" %}

-

                 
{% trans "Donut Chart" %}
{% trans "Bar Chart" %}
+ -
{% trans "2nd place"%}
{% trans "WINNER" %}
{% trans "3rd place" %}
+
- +
From 64c5d5c9b643caffe3ab7b1e4e66054db7751954 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADnAGR?= <56026685+Martinagr32@users.noreply.github.com> Date: Sat, 2 Jan 2021 17:13:08 +0100 Subject: [PATCH 073/123] Add files via upload --- decide/locale/de/LC_MESSAGES/django.mo | Bin 0 -> 2662 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 decide/locale/de/LC_MESSAGES/django.mo diff --git a/decide/locale/de/LC_MESSAGES/django.mo b/decide/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..1036de7309cd6a9eb136bc1cc0c420b5aaa4b73f GIT binary patch literal 2662 zcmZ{k&yN&E6vqpHJN`!efru6g2tqIHE(e%pg@NgroiH;y&g?EhV@ywXO;0gB)nirl zE^IW$L=(N3Xrd>HF(L8DNxW?0VGimIV>HHy7bAKi`~yb6uc!A1Ay&HT(^cJ7_1?GM ztKT=@@d-oOkNPy~o0}M$0)M*=4a#@7Gj=cdea0Wbd(gj{^{;`4(7yrh0e9WO*!^G~ z%z>|hG`|CG0SDlH;CtW$;78!y;O7~?1b3r<3A_vZ8Kn7Fv;JS;gXmue4}$-Iw9nX` zjNxHN(9pbN8A~A9TLWp|1(5b@XW!3e<8Neq3&fJ_1CaLl5Znr00BPRW8NUH(-EYCo z;1!VO{Q=@(e`n*@Gj4)WWY-onPk`IN6VQ4Rq;(dtIPqEJ)|^8i1tWZ~@!~eg)DxKY%p<*NlIH zq{EG@|1U^(=I|4(yBT~6+zHbBW8ijh286t+O^<^V-w&hGT>78Fo6c(=D(OkFPxJSp zzJN+=P@$OJoxY9yB`v7z8DXs@AFyRwo=1yxNbROGc`_Yk?3s)^GCl{sh{{pv4B%Q? zNEh;r&Udv?Op$I>cA-9tN^wbLCp8l);DgBX1)J2XZ-sW8Se_Vm!qfa@*VC4rjQfMc z3e8;=N+pDrD&)o{fl!u9#anU5E_qsP{EkT~j69p5%2=5(ekM*dUyQBbUC;2g5Q-Zt zKtEc~x4fb{@mdG_7d_qM{WuV;D0~?Rz93EFMRGY^kQHMEJ4Xh(eNRT*3j!^SVX!ii zrpsKdW1Z*BU5ulIjNl&p#daMTCOTb(*F5EgqEB{|v`~JRm69mp%IgbO7P{{#R+e@q zY4e7TJ2Db%MuuHTF(>@4lD-%5mfwxzh{qi)eXCCUSrrrP$dPIc{TNzE%w`8<6KiX#^ZWUs@q^C#HtXN7Osyb(He^d@29nb&6vIH$BR)Y5t5oCi7%Q-!l3 z6B18o2bfsQ*o9wifIN4 z>$#>F#M(MF6Ux9jk%Y#Xi}O6!n01=)iRL&(&x$-h;})7uZPqCk_{?m+R@wK;Y~9UO zJ!73Y?J0whqk}KaSF5~UsJZ;8TPswm#|y<`(`~h0!mlb!AeKYE=6SVHFVB-DN2}H2 zksOP4xc(0;s8wq2y4mAn2Xhp&h#6<@`~db?an2q<9!WLDePoOgc6xrU<&8v}>j(rjVBOWqOa|JEr;g-l-g$7~>6iw#+71 zUxuHx5s8VST#b5&1?h#_>-SkJ%gq3vSA)`~0o(iEe4P<`Ig)-?@NzU<@q0_d6=l#J z=Z`nEV6v2)D&H;L>aB@lJt8K=3?Q`Q4t7b~W)Wt00#205YZbfvZE&#(qYyCY?i1 zbTunPY4US35OhSi64H@+dBX@@2H3;J4Gp*au1<}C-B1eSx7-VG Date: Sat, 2 Jan 2021 20:37:36 +0100 Subject: [PATCH 074/123] =?UTF-8?q?grafica=20barras=20arreglada=20y=20pues?= =?UTF-8?q?ta=20m=C3=A1s=20bonita?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/visualizer/visualizer.html | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index d095085dcb..f73437613d 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -187,7 +187,31 @@

{% trans "Re options: {responsive: false} }); - + var ctx2 = document.getElementById('myChart2').getContext('2d'); + var chart2 = new Chart(ctx2, { + type: 'bar', + //element:'graficaDonut', + data:{ + datasets: [{ + data: data, + borderWidth: '2', + borderColor: '#6c757d', + backgroundColor: '#9d9c9f', + hoverBackgroundColor: '#242330', + label: 'Número de votos'}], + labels: labels}, + options: { + responsive: false, + scales: { + xAxes: [{ + stacked: true + }], + yAxes: [{ + stacked: true + }] + } + } + }); var data=[];var labels=[];var colores=[]; var numeros="0123456789ABCDEF";var almohadilla="#";var color=""; var postproc=voting.postproc; @@ -202,18 +226,7 @@

{% trans "Re color= getColoresRandom() colores.push(color) } - var ctx = document.getElementById('myChart2').getContext('2d'); - var chart2 = new Chart(ctx, { - type: 'bar', - //element:'graficaDonut', - data:{ - datasets: [{ - data: data, - backgroundColor: '#6c757d', - label: 'Número de votos'}], - labels: labels}, - options: {responsive: false} - }); + - {% endblock %} From 5320ace0b20543300468a1f15c88b94f5d6ce10e Mon Sep 17 00:00:00 2001 From: davsotpon <56026613+davsotpon@users.noreply.github.com> Date: Tue, 5 Jan 2021 16:50:07 +0100 Subject: [PATCH 077/123] Delete django.mo --- decide/locale/es/LC_MESSAGES/django.mo | Bin 2392 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 decide/locale/es/LC_MESSAGES/django.mo diff --git a/decide/locale/es/LC_MESSAGES/django.mo b/decide/locale/es/LC_MESSAGES/django.mo deleted file mode 100644 index ee38f35995e6717106a3b7cd6510bff7444c4391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2392 zcmaKs%a0UA9LEbmk;Mms_(UyK4C?l>OHgrOm0_o6Se)6N%0aCxs7@W8rq;YqFJHb65^*d19A1YV_AH?%B;Bk0n zK^pfe#2p8J1fK@CVo>sFyx_|q>8*mh!4`NQ*aOM83m|^%gMuG}&*As@lCGb@ z9pLZai{RfN`E&r{?*&UB9HVu9Y|8tRA5=)!e+!!B=Y{4Zo#ZjB&DZoe zxLU}&)k5=-mZwmkL?s*HI7oX>`$dJ${S&BrQE@!;eFGRpU>E&Cc?6Z# z@hB?o6M2gzqS5nW$9qQ_2OAsSEjl ztYS3O&GdxzEba@HagnB0I>(?gQ?AEiYmF^&7B8DDkO(ex$}!!N>IR#S!W%-1uI!VJ zs+BtFv1-UNu0>z6n(`+?hc~TRQki5YRJR8Y7G%=XDiIlPCp}{_Zk90Stp<&=Iy(5# z3hD;NvH1b1U`^rNd1F)73_9^)w49c7A@h#4qz_iJwpf-NHZ?2N_5X7<)|NWWFI?~j z77OvXT~=8p_@Y+J(mLf=#`&SC$*F^^JrJ6lXot>OnRvG7q|KLhla*MK=(AJU8M@Hk zVowLwbaOY0N7{I7In0(Rd)+GR;tK6&f24uK8Oh)jO%u(g(J2yQbcr|1Gq06vF+UZz z+OzX>V=Xx_)<+H3RcUlQbX~MyN_?z2AGNRy>JwFjmnD8WF1Mn_d{im(6Z56U?DJ>l z=i;%ta6VeFLOYx*+TH46z0T*#jhG*e8|B&hv2vx-irej1&{TH={E29JC0;Mj)fP#~ z(R%$@rY4N-uD5}L#%v>AmpwHxIYtK)2P0Zo89AAm?C?vW9Gf$J@@IvMfy^?j zz_F&Zh$mSv$}2oeg2W&T!%GPTmAAtHpDbhl&%$w*FEoLClByCVEIv;zU*Y^ Date: Tue, 5 Jan 2021 17:30:34 +0100 Subject: [PATCH 078/123] Add files via upload --- .../templates/visualizer/visualizer.html | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 7fede8871f..b2659fe1c3 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -33,7 +33,6 @@ {% block content %}
- {% trans "Decide Visualization" %} @@ -41,7 +40,6 @@
- Telegram @@ -90,10 +88,8 @@

{% trans "Voting in progress" %

-
-

{% trans "Results" %}

@@ -143,10 +139,8 @@

{% trans "Re

- - - -
+ +
@@ -172,10 +166,8 @@

{% trans "Re

-
- - - +
+ @@ -414,8 +406,6 @@

{% trans "Re + {% endblock %} From e325d0607502a9e118135c53ce553db011cec615 Mon Sep 17 00:00:00 2001 From: Abraham Date: Tue, 5 Jan 2021 17:31:49 +0100 Subject: [PATCH 079/123] =?UTF-8?q?Depuraci=C3=B3n=20y=20comentarios=20del?= =?UTF-8?q?=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/visualizer/visualizer.html | 121 ++++-------------- 1 file changed, 28 insertions(+), 93 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index f73437613d..64323097d0 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -33,7 +33,6 @@ {% block content %}
- {% trans "Decide Visualization" %} @@ -65,9 +64,9 @@

{% trans "Re
- - - + + +
{% trans "2nd place"%}
{% trans "WINNER" %}
{% trans "3rd place" %}
{% trans "2nd place"%}
{% trans "WINNER" %}
{% trans "3rd place" %}
@@ -158,6 +157,7 @@

{% trans "Re }) + - for(var i=0;i - + - - - + - - {% endblock %} From 2390960c96f31dc8dd60c8da82cf3330924a33cd Mon Sep 17 00:00:00 2001 From: Abraham Garcia <56026513+AbrahamSFC@users.noreply.github.com> Date: Tue, 5 Jan 2021 17:41:02 +0100 Subject: [PATCH 080/123] Update visualizer.html Grafica de barras vuelve a estar bien --- .../templates/visualizer/visualizer.html | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 2b2be48192..e50ce1cfd4 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -223,15 +223,29 @@

{% trans "Re }); var ctx = document.getElementById('myChart2').getContext('2d'); - var chart2 = new Chart(ctx, { + var chart2 = new Chart(ctx2, { type: 'bar', + //element:'graficaDonut', data:{ datasets: [{ data: data, - backgroundColor: '#6c757d', + borderWidth: '2', + borderColor: '#6c757d', + backgroundColor: '#9d9c9f', + hoverBackgroundColor: '#242330', label: 'Número de votos'}], labels: labels}, - options: {responsive: false} + options: { + responsive: false, + scales: { + xAxes: [{ + stacked: true + }], + yAxes: [{ + stacked: true + }] + } + } }); From 8607f26b615afd55412e355c869700da09dffd38 Mon Sep 17 00:00:00 2001 From: Abraham Garcia <56026513+AbrahamSFC@users.noreply.github.com> Date: Tue, 5 Jan 2021 17:47:55 +0100 Subject: [PATCH 081/123] Update visualizer.html Arreglo de errores varios --- decide/visualizer/templates/visualizer/visualizer.html | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index e50ce1cfd4..e0067c71fc 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -222,10 +222,9 @@

{% trans "Re options: {responsive: false} }); - var ctx = document.getElementById('myChart2').getContext('2d'); + var ctx2 = document.getElementById('myChart2').getContext('2d'); var chart2 = new Chart(ctx2, { type: 'bar', - //element:'graficaDonut', data:{ datasets: [{ data: data, @@ -244,8 +243,8 @@

{% trans "Re yAxes: [{ stacked: true }] - } - } + } + } }); From 025a3ede32160d9e645e4ad400932b05a177002b Mon Sep 17 00:00:00 2001 From: davsotpon Date: Tue, 5 Jan 2021 18:55:38 +0100 Subject: [PATCH 082/123] =?UTF-8?q?Footer=20bien=20puesto=20en=20las=20otr?= =?UTF-8?q?as=20vistas=20de=20visualizaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/static/css/mfb.css | 2 +- decide/visualizer/templates/visualizer/visualizer.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/decide/static/css/mfb.css b/decide/static/css/mfb.css index 39063306c3..13a965bee2 100644 --- a/decide/static/css/mfb.css +++ b/decide/static/css/mfb.css @@ -161,7 +161,7 @@ width: 100%; } .mfb-component__wrap { - padding: 25px; + padding: 5px; margin: -25px; } [data-mfb-toggle="hover"]:hover .mfb-component__icon, [data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index e0067c71fc..9b6e22d285 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -171,7 +171,7 @@

{% trans "Re

- +
{% trans "Evolution and Configuration Management" %} · Decide Decide Pícaro · Visualización © 2021 From 2ea53c222eac57610dd7fabbc921618fb35ea8cb Mon Sep 17 00:00:00 2001 From: davsotpon Date: Thu, 7 Jan 2021 14:25:22 +0100 Subject: [PATCH 083/123] =?UTF-8?q?Gr=C3=A1ficas=20responsive=20y=20traduc?= =?UTF-8?q?ciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/locale/de/LC_MESSAGES/django.mo | Bin 2662 -> 2871 bytes decide/locale/de/LC_MESSAGES/django.po | 43 +++++++++------- decide/locale/es/LC_MESSAGES/django.mo | Bin 2597 -> 2796 bytes decide/locale/es/LC_MESSAGES/django.po | 48 +++++++++++------- decide/locale/fr/LC_MESSAGES/django.mo | Bin 2586 -> 2784 bytes decide/locale/fr/LC_MESSAGES/django.po | 43 +++++++++------- decide/static/css/visualizer.css | 2 +- .../templates/visualizer/visualizer.html | 23 +++++---- 8 files changed, 98 insertions(+), 61 deletions(-) diff --git a/decide/locale/de/LC_MESSAGES/django.mo b/decide/locale/de/LC_MESSAGES/django.mo index 1036de7309cd6a9eb136bc1cc0c420b5aaa4b73f..216ff48df1a6be1d49546621713a749a2c5d378b 100644 GIT binary patch delta 1217 zcmZwGO-K}B9LMp;bgj*N$;{N=o-9p!k+7Frs9^^W31Qf!h)HMNfpx}qXE)qKg3_%# zWJPr7&>;$nAbX*shYY$TK@&ZInE!m{nb~>%&+~s~KUO`d9(h+; zbj8qGhz-Pr0%H#1?`525UkZ(h<9y^VTtPopv~<4=_tCGxCOm?xFo!E~4E6pvR^c@) z!FyP0%!ql)#d2;uk9>)Z^xt4HE}#a8#g_WzSVq4Z_h17mQ7>{Bhm+nLz;g7X{yEgd z&!Z+Vj?2k!u17z(89lfY`3T8vrceo|u@+yWCOjAU9oy;uK_zG>dnIj5w z3w%4|47irNLuoe*hizXFq*`oeV26XOJ?r?P4Fhiaq337aw#n&Orm&*J&pXMK?Pv6! z&>I|_I1sc2ND8S7nnm}VB z7wHJ0qA{T$NJBzJzz$q=E1c82SG89+>RRXJ>cknb~J{SF7{M;7_9Xvr*cq zjns*VSs(5e(NMOcW-C1xDfOQUi9?f`1Rk5CgoL(MlF-Ve-P z`i(d4Bofo6Q4@W{I-EldTy@t`fj2RM+o*B-$YFP@PGsOZaW4bKX1tZb;X6*zD863iKv8?^is;li~owc%B>CbvZnQm<2QQ?F6A x4ZK`flo`F9_V}#m!&2&0GSp_OK2DYN@=-J!$-OJdF5fR5i{>_BUvgjL*;7O^OBMhC diff --git a/decide/locale/de/LC_MESSAGES/django.po b/decide/locale/de/LC_MESSAGES/django.po index 85ec1e8298..2bfe607433 100644 --- a/decide/locale/de/LC_MESSAGES/django.po +++ b/decide/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-02 15:55+0000\n" +"POT-Creation-Date: 2021-01-07 13:32+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -65,7 +65,7 @@ msgstr "Deutsch" #: visualizer/templates/visualizer/aboutUs.html:16 #: visualizer/templates/visualizer/contactUs.html:20 -#: visualizer/templates/visualizer/visualizer.html:39 +#: visualizer/templates/visualizer/visualizer.html:38 msgid "Decide Visualization" msgstr "Decide Visualisierung" @@ -98,7 +98,7 @@ msgstr "GitHub-Profil" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:142 +#: visualizer/templates/visualizer/visualizer.html:176 msgid "Evolution and Configuration Management" msgstr "Entwicklung und Konfiguration des Managements" @@ -154,55 +154,64 @@ msgstr "Licht Modus" msgid "Dark mode" msgstr "Dunkler Modus" -#: visualizer/templates/visualizer/visualizer.html:57 +#: visualizer/templates/visualizer/visualizer.html:58 msgid "Voting not started" msgstr "Abstimmung nicht gestartet" -#: visualizer/templates/visualizer/visualizer.html:58 +#: visualizer/templates/visualizer/visualizer.html:62 msgid "Voting in progress" msgstr "Abstimmung läuft" -#: visualizer/templates/visualizer/visualizer.html:60 +#: visualizer/templates/visualizer/visualizer.html:76 +#: visualizer/templates/visualizer/visualizer.html:235 +msgid "Number of votes" +msgstr "Anzahl der Stimmen" + +#: visualizer/templates/visualizer/visualizer.html:94 msgid "Results" msgstr "Ergebnisse" -#: visualizer/templates/visualizer/visualizer.html:68 +#: visualizer/templates/visualizer/visualizer.html:102 msgid "2nd place" msgstr "2. Platz" -#: visualizer/templates/visualizer/visualizer.html:69 +#: visualizer/templates/visualizer/visualizer.html:103 msgid "WINNER" msgstr "GEWINNER" -#: visualizer/templates/visualizer/visualizer.html:70 +#: visualizer/templates/visualizer/visualizer.html:104 msgid "3rd place" msgstr "3. Platz" -#: visualizer/templates/visualizer/visualizer.html:89 +#: visualizer/templates/visualizer/visualizer.html:123 msgid "Option" msgstr "Möglichkeit" -#: visualizer/templates/visualizer/visualizer.html:90 +#: visualizer/templates/visualizer/visualizer.html:124 msgid "Punctuation" msgstr "Interpunktion" -#: visualizer/templates/visualizer/visualizer.html:91 +#: visualizer/templates/visualizer/visualizer.html:125 msgid "Votes" msgstr "Stimmen" -#: visualizer/templates/visualizer/visualizer.html:114 +#: visualizer/templates/visualizer/visualizer.html:147 msgid "Donut Chart" msgstr "Kreisdiagramm" -#: visualizer/templates/visualizer/visualizer.html:115 +#: visualizer/templates/visualizer/visualizer.html:148 msgid "Bar Chart" msgstr "Balkendiagramm" -#: visualizer/templates/visualizer/visualizer.html:125 -#: visualizer/templates/visualizer/visualizer.html:127 +#: visualizer/templates/visualizer/visualizer.html:158 +#: visualizer/templates/visualizer/visualizer.html:160 msgid "Save as PNG" msgstr "Als PNG speichern" -#: visualizer/templates/visualizer/visualizer.html:131 +#: visualizer/templates/visualizer/visualizer.html:164 msgid "Save as PDF" msgstr "Als PDF speichern" + +#: visualizer/templates/visualizer/visualizer.html:388 +msgid "This visualization page is pretty cool. Do you want to continue?" +msgstr "Diese Visualisierungsseite ist ziemlich cool. Wollen Sie fortfahren?" diff --git a/decide/locale/es/LC_MESSAGES/django.mo b/decide/locale/es/LC_MESSAGES/django.mo index 6e240bb12b39980e91f5ff71ac5fe397eb943a41..0ee3af0dcd84aeba59bb912ae9b0ced09e4b09cb 100644 GIT binary patch delta 1093 zcmXxjTSyd97{KwP>sH&v8*Ud8W9%S)hMVvc$^xq<{(;rRKk*p;MM;#1D#cHo=2C+_DD%&uZ1^Hd;z5*r z*USBRrF_#dVZ4K^sqUgAdVqWI5z53j#wF|}UPeh!N49!wM45lY#K(;T$WLA3vI_^X zFVAt0aU)N#!0O^6O5$ad1;1h+{>C;uNj5p+%f=MSlLZ*ZDXhc$C`bMTnW|nH7qN@@ z1Loyu|8OITDhXs@9BZ)|PhkROV>ZgsdZvF0W&AYC1|AycP{uz;dE%ES>y?ZjP5ZYP z?_YMhMng0HL-wMYm@O0Au^+op#@)c(cnjr-XHYg?#GUv8Wkc^##;qU+EFW6AU)p3N zGNzGQsSd9%1m%U~A0QhzMD3)?rliO*9xOy7t!MXg$ExMh%9YQ){IcZWyQuO%YN57M z_fw@DSV!rC9XVRpL9~x5-;|WL`MJnMMNKlyT(xuB9oD06VEcuZ=*`{>BaW{}9Y3_v z&V&^>ZdQ9%%GR`cIXei(^^ohP6T08k<8G+OtZbkIm&R=1WJ9}Wem3ewYLlgfjGc4! zHCvW;{X%tYrhmW>EbWzwDJN@{dp5ERIi>lmw*8<~)R~YBBVpP~=(n%WhmM`I{f*VF KTu8e_wM4IAD0uqHJW(2i&}Uof`W&I3IRn(5U~;hN)SRwut|{w77MXd zSp?B0U<4Jr1FO42@S_VUOe1J3f?7#h{XfeL%>HI}XXbrpW^d}Z>-@{w$eK}lsBP5G zWoCISmh+(OcxG|jbr!IKe#!Mu@D2UH*oD!ESrztT0`sW(Z?O*FVz`r`{Xh5`FHnJMq6Eig9-7yIN;HcKm_xIc&ynsEI4ib=1PYuoibw^NOy2=sZIua)pg}hr^t1jF(DyltmN7w@Dfb_yM)x z7aYa~e2GV>BfWP1NA1WXi+W6A3Nxr9?nj2$xN{P9z0;_ZTtdZJMPCDd(|C&e*oP%l zhWD7n2h_MEvlY0}nMRGvp>{feT4%^P;oi@p68wbE@F%jQZN#~MP26$=_OOY55p|^h zP??@%1Ky$%i4axes*n@aj}(6IK_#Fux;p*CTBn<;by}$k{EC{TwuRfFp<~Mg881E9 zLQ8v6>7?>ohnJ&+?xLz_4=T^Yr`Zc1XLLn9V>IJLu J&0s$9;}LA7M9}~M diff --git a/decide/locale/es/LC_MESSAGES/django.po b/decide/locale/es/LC_MESSAGES/django.po index 18f270572b..3a36b37639 100644 --- a/decide/locale/es/LC_MESSAGES/django.po +++ b/decide/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-02 15:55+0000\n" +"POT-Creation-Date: 2021-01-07 13:32+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -67,7 +67,7 @@ msgstr "Alemán" #: visualizer/templates/visualizer/aboutUs.html:16 #: visualizer/templates/visualizer/contactUs.html:20 -#: visualizer/templates/visualizer/visualizer.html:39 +#: visualizer/templates/visualizer/visualizer.html:38 msgid "Decide Visualization" msgstr "Decide Visualización" @@ -100,7 +100,7 @@ msgstr "Perfil en GitHub" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:142 +#: visualizer/templates/visualizer/visualizer.html:176 msgid "Evolution and Configuration Management" msgstr "Evolución y Gestión de la Configuración" @@ -156,61 +156,75 @@ msgstr "Modo claro" msgid "Dark mode" msgstr "Modo oscuro" -#: visualizer/templates/visualizer/visualizer.html:57 +#: visualizer/templates/visualizer/visualizer.html:58 msgid "Voting not started" msgstr "Votación no comenzada" -#: visualizer/templates/visualizer/visualizer.html:58 +#: visualizer/templates/visualizer/visualizer.html:62 msgid "Voting in progress" msgstr "Votación en curso" -#: visualizer/templates/visualizer/visualizer.html:60 +#: visualizer/templates/visualizer/visualizer.html:76 +#: visualizer/templates/visualizer/visualizer.html:235 +msgid "Number of votes" +msgstr "Número de votos" + +#: visualizer/templates/visualizer/visualizer.html:94 msgid "Results" msgstr "Resultados" -#: visualizer/templates/visualizer/visualizer.html:68 +#: visualizer/templates/visualizer/visualizer.html:102 msgid "2nd place" msgstr "2º puesto" -#: visualizer/templates/visualizer/visualizer.html:69 +#: visualizer/templates/visualizer/visualizer.html:103 msgid "WINNER" msgstr "GANADOR" -#: visualizer/templates/visualizer/visualizer.html:70 +#: visualizer/templates/visualizer/visualizer.html:104 msgid "3rd place" msgstr "3º puesto" -#: visualizer/templates/visualizer/visualizer.html:89 +#: visualizer/templates/visualizer/visualizer.html:123 msgid "Option" msgstr "Opción" -#: visualizer/templates/visualizer/visualizer.html:90 +#: visualizer/templates/visualizer/visualizer.html:124 msgid "Punctuation" msgstr "Puntuación" -#: visualizer/templates/visualizer/visualizer.html:91 +#: visualizer/templates/visualizer/visualizer.html:125 #, fuzzy #| msgid "Vote" msgid "Votes" msgstr "Voto" -#: visualizer/templates/visualizer/visualizer.html:114 +#: visualizer/templates/visualizer/visualizer.html:147 msgid "Donut Chart" msgstr "Gráfico Circular" -#: visualizer/templates/visualizer/visualizer.html:115 +#: visualizer/templates/visualizer/visualizer.html:148 msgid "Bar Chart" msgstr "Gráfico de Barras" -#: visualizer/templates/visualizer/visualizer.html:125 -#: visualizer/templates/visualizer/visualizer.html:127 +#: visualizer/templates/visualizer/visualizer.html:158 +#: visualizer/templates/visualizer/visualizer.html:160 msgid "Save as PNG" msgstr "Guardar como PNG" -#: visualizer/templates/visualizer/visualizer.html:131 +#: visualizer/templates/visualizer/visualizer.html:164 msgid "Save as PDF" msgstr "Guardar como PDF" +#: visualizer/templates/visualizer/visualizer.html:388 +msgid "This visualization page is pretty cool. Do you want to continue?" +msgstr "Esta página de visualización está muy chula. ¿Quieres continuar?" + +#, fuzzy +#~| msgid "Number of votes" +#~ msgid "Número de votos" +#~ msgstr "Número de votos" + #~ msgid "Last name" #~ msgstr "Apellidos" diff --git a/decide/locale/fr/LC_MESSAGES/django.mo b/decide/locale/fr/LC_MESSAGES/django.mo index 078a9a8035799fd34263774742210e7f9913d67c..3670b45588d8e7ed4a629ac7edfb4a15eeb412c4 100644 GIT binary patch delta 1092 zcmX}rO=uHA6u|Lm(x}ne*xFicwN8zVt=cNZ9z--1<2AiV5j=!cw>C7*hU{)agAft) zsx_2=mmaJYym+V{6a_&F@gP(LL9j&x>rFff9t8hyGdS$bZ{O_B$G%A(bbRfsY_vBo zD9Ul_e(H@TrOx1&01c%cR4R<`j303u@w$mO@f7hd9Kil&rCKnF+wls@_$lnbJnq2T zxKpW$n&)OK9gD`t7$bg)TksRg1nVaLfvvU52jEySVTXiC@G#t8Mln2SiMAssycG1 zHJSnZj1@_3fJP>2L3y#q#8Dh29zjX*G|JgJC@H>)@Q@rR8Vu=dKfvQssZt zOYNujQKcMepmfy=o@k2^9i+;Jr5s*)6f8GIlHTm3RnYd7F50f;RC`0W#x6}~99_&f zUOJm8r`?R5)A{suOVgV#Sgt##uiAEYSSM^fXM4Jo&bivP>CCyAoM**X7DM@9Bx%o1 z7A$?uGBdY^Yl#btwi=U3e`5)!v4rKgI-m92x6fQN|Ag&jt@2RO_MHEd7vj~WaPc40 C!HawV delta 894 zcmXZaJxE(o7{>8euQzSfTD4K@N7b5|CK8(pYORhEnA7;y18cEC|PP3^=p+` z4vW=1D0`k+9QU0Cd`Mh!@hJ`wUt${l8nb#Fz*@|q#=pS?PGKE>#7Aa|MGL)BGvQnm0)YKqzwt;&ni*dO+L z$q`MfGpY1Z`K+U4wP2d6qBE%UMo+Wn&Yp0^8*F+()J=WrT9btn??+Ym&i`3xihc9K Le0(GPQv3ZL8tz2K diff --git a/decide/locale/fr/LC_MESSAGES/django.po b/decide/locale/fr/LC_MESSAGES/django.po index 9e7cb46ae7..050bb1495c 100644 --- a/decide/locale/fr/LC_MESSAGES/django.po +++ b/decide/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-02 15:55+0000\n" +"POT-Creation-Date: 2021-01-07 13:32+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -67,7 +67,7 @@ msgstr "Deutsch" #: visualizer/templates/visualizer/aboutUs.html:16 #: visualizer/templates/visualizer/contactUs.html:20 -#: visualizer/templates/visualizer/visualizer.html:39 +#: visualizer/templates/visualizer/visualizer.html:38 msgid "Decide Visualization" msgstr "Decide Visualization" @@ -100,7 +100,7 @@ msgstr "Profile GitHub" #: visualizer/templates/visualizer/aboutUs.html:86 #: visualizer/templates/visualizer/contactUs.html:94 -#: visualizer/templates/visualizer/visualizer.html:142 +#: visualizer/templates/visualizer/visualizer.html:176 msgid "Evolution and Configuration Management" msgstr "Evolution et Gestion de la Configuration" @@ -156,57 +156,66 @@ msgstr "Mode clair" msgid "Dark mode" msgstr "Mode sombre" -#: visualizer/templates/visualizer/visualizer.html:57 +#: visualizer/templates/visualizer/visualizer.html:58 msgid "Voting not started" msgstr "Le vote n'a pas commencé" -#: visualizer/templates/visualizer/visualizer.html:58 +#: visualizer/templates/visualizer/visualizer.html:62 msgid "Voting in progress" msgstr "Vote en cours" -#: visualizer/templates/visualizer/visualizer.html:60 +#: visualizer/templates/visualizer/visualizer.html:76 +#: visualizer/templates/visualizer/visualizer.html:235 +msgid "Number of votes" +msgstr "Nombre de votes" + +#: visualizer/templates/visualizer/visualizer.html:94 msgid "Results" msgstr "Résultats" -#: visualizer/templates/visualizer/visualizer.html:68 +#: visualizer/templates/visualizer/visualizer.html:102 msgid "2nd place" msgstr "2ème place" -#: visualizer/templates/visualizer/visualizer.html:69 +#: visualizer/templates/visualizer/visualizer.html:103 msgid "WINNER" msgstr "GAGNANT" -#: visualizer/templates/visualizer/visualizer.html:70 +#: visualizer/templates/visualizer/visualizer.html:104 msgid "3rd place" msgstr "3ème place" -#: visualizer/templates/visualizer/visualizer.html:89 +#: visualizer/templates/visualizer/visualizer.html:123 msgid "Option" msgstr "Option" -#: visualizer/templates/visualizer/visualizer.html:90 +#: visualizer/templates/visualizer/visualizer.html:124 msgid "Punctuation" msgstr "Score" -#: visualizer/templates/visualizer/visualizer.html:91 +#: visualizer/templates/visualizer/visualizer.html:125 #, fuzzy #| msgid "Vote" msgid "Votes" msgstr "Vote" -#: visualizer/templates/visualizer/visualizer.html:114 +#: visualizer/templates/visualizer/visualizer.html:147 msgid "Donut Chart" msgstr "Graphique en anneau" -#: visualizer/templates/visualizer/visualizer.html:115 +#: visualizer/templates/visualizer/visualizer.html:148 msgid "Bar Chart" msgstr "Graphique à barres" -#: visualizer/templates/visualizer/visualizer.html:125 -#: visualizer/templates/visualizer/visualizer.html:127 +#: visualizer/templates/visualizer/visualizer.html:158 +#: visualizer/templates/visualizer/visualizer.html:160 msgid "Save as PNG" msgstr "Sauver comme PNG" -#: visualizer/templates/visualizer/visualizer.html:131 +#: visualizer/templates/visualizer/visualizer.html:164 msgid "Save as PDF" msgstr "Sauver comme PDF" + +#: visualizer/templates/visualizer/visualizer.html:388 +msgid "This visualization page is pretty cool. Do you want to continue?" +msgstr "Cette page de visualisation est plutôt cool. Voulez-vous continuer?" diff --git a/decide/static/css/visualizer.css b/decide/static/css/visualizer.css index 224f0bc36f..1998b5914d 100644 --- a/decide/static/css/visualizer.css +++ b/decide/static/css/visualizer.css @@ -53,7 +53,7 @@ align-items: center; width: 100%; margin-top: 20px; - margin-bottom: 30px; + margin-bottom: 100px; margin-left: 11%; margin-right: 7%; background: white; diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 9b6e22d285..1062303996 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -139,9 +139,10 @@

{% trans "Re

+
- +
@@ -171,7 +172,7 @@

{% trans "Re - +
{% trans "Evolution and Configuration Management" %} · Decide Decide Pícaro · Visualización © 2021 @@ -219,7 +220,7 @@

{% trans "Re backgroundColor: colores, label: 'Número de votos'}], labels: labels}, - options: {responsive: false} + options: {responsive: true} }); var ctx2 = document.getElementById('myChart2').getContext('2d'); @@ -232,10 +233,10 @@

{% trans "Re borderColor: '#6c757d', backgroundColor: '#9d9c9f', hoverBackgroundColor: '#242330', - label: 'Número de votos'}], + label: '{% trans "Number of votes" %}'}], labels: labels}, options: { - responsive: false, + responsive: true, scales: { xAxes: [{ stacked: true @@ -287,6 +288,7 @@

{% trans "Re 'width': 170, 'elementHandlers': specialElementHandlers }); + var canvas = document.getElementById('myChart'); var dataURL2 = canvas.toDataURL(); var canvas = document.getElementById('myChart2'); @@ -380,14 +382,17 @@

{% trans "Re setCookie("theme", "dark", 365); } - + + From c700bc73656ddf9a018f8f001fe83cc5f6d99300 Mon Sep 17 00:00:00 2001 From: Thiloparn <48439369+Thiloparn@users.noreply.github.com> Date: Thu, 7 Jan 2021 16:35:20 +0100 Subject: [PATCH 084/123] Update contactUs.html --- decide/visualizer/templates/visualizer/contactUs.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/decide/visualizer/templates/visualizer/contactUs.html b/decide/visualizer/templates/visualizer/contactUs.html index a64b61f828..d8180218dd 100644 --- a/decide/visualizer/templates/visualizer/contactUs.html +++ b/decide/visualizer/templates/visualizer/contactUs.html @@ -33,7 +33,7 @@

{% trans "Contact Info" %}

  • - + {% trans "Higher Technical School of Computer Engineering," %}
    {% trans "Sevilla University, 41012" %}
    Sevilla From 88befd160c928398343a2416775353bda556d9b6 Mon Sep 17 00:00:00 2001 From: marti Date: Thu, 7 Jan 2021 17:09:55 +0100 Subject: [PATCH 085/123] Icon votes update --- decide/visualizer/templates/visualizer/visualizer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 1062303996..b551519ebe 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -73,7 +73,7 @@

    {% trans "Voting in progress" %

{% trans "Donut Chart" %}
- + From accc5c2d3684738225b453bfa138d62d39ebcd08 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Sat, 9 Jan 2021 10:42:24 +0100 Subject: [PATCH 086/123] =?UTF-8?q?Comentado=20el=20bot=20de=20telegram=20?= =?UTF-8?q?por=20correcci=C3=B3n=20de=20errores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/voting/admin.py | 4 ++-- decide/voting/models.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/decide/voting/admin.py b/decide/voting/admin.py index 7dc1ac7ef1..4451e70a1c 100644 --- a/decide/voting/admin.py +++ b/decide/voting/admin.py @@ -12,14 +12,14 @@ def start(modeladmin, request, queryset): for v in queryset.all(): v.create_pubkey() v.start_date = timezone.now() - v.enviarTelegram("La votación "+str(v.name)+" ha comenzado") + #v.enviarTelegram("La votación "+str(v.name)+" ha comenzado") comentado por mantenimiento v.save() def stop(ModelAdmin, request, queryset): for v in queryset.all(): v.end_date = timezone.now() - v.enviarTelegram("La votación "+str(v.name)+" ha terminado") + #v.enviarTelegram("La votación "+str(v.name)+" ha terminado") comentado por mantenimiento v.save() diff --git a/decide/voting/models.py b/decide/voting/models.py index 21aa829bea..4252853a1a 100644 --- a/decide/voting/models.py +++ b/decide/voting/models.py @@ -123,7 +123,7 @@ def do_postproc(self): self.postproc = postp self.save() - self.enviarTelegram(msn) + # self.enviarTelegram(msn) Comentado por mantenimiento def __str__(self): return self.name From 2ec9007776ebe756b223a689044115459eba1ef7 Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 9 Jan 2021 21:13:29 +0100 Subject: [PATCH 087/123] Urls fixed to pass tests --- decide/base/templates/base.html | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/decide/base/templates/base.html b/decide/base/templates/base.html index 2cfa00e178..b2f91e8768 100644 --- a/decide/base/templates/base.html +++ b/decide/base/templates/base.html @@ -4,9 +4,9 @@ Decide Pícaro{% block title %}{% endblock %} - + - + {% block extrahead %}{% endblock %} @@ -34,10 +34,10 @@ {% elif lang.code == "en"%} data-mfb-label="Inglés" {% elif lang.code == "de"%} data-mfb-label="Alemán" {% else %} data-mfb-label="Francés" {% endif %}> - + {% elif LANGUAGE_CODE == "en"%} {% elif LANGUAGE_CODE == "de"%} {% else %} {% endif %} From dddc0a1e0a5de85ddb370af40666796b9d70d577 Mon Sep 17 00:00:00 2001 From: davsotpon Date: Sun, 10 Jan 2021 13:53:02 +0100 Subject: [PATCH 088/123] =?UTF-8?q?Bot=C3=B3n=20return=20en=20las=20vistas?= =?UTF-8?q?=20de=20visualizaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/visualizer/templates/visualizer/visualizer.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 1062303996..de8217a660 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -56,6 +56,7 @@

{% trans "Voting not started" %}

+
@@ -88,6 +89,7 @@

{% trans "Voting in progress" %

{% trans "Number of votes" %} {% trans "Number of votes" %}
+
@@ -170,6 +172,7 @@

{% trans "Re

+ @@ -433,5 +436,4 @@

{% trans "Re } - {% endblock %} From 2bde7d4399259bc3cb55b0348135bce5a6dd48f4 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Mon, 11 Jan 2021 12:19:18 +0100 Subject: [PATCH 089/123] Arreglos del merge --- decide/visualizer/templates/visualizer/visualizer.html | 1 + 1 file changed, 1 insertion(+) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 3aa3965bf0..9d3e355ad7 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -7,6 +7,7 @@ + From fd4bf79afd14562a31bba936ef4b24f6944be7c4 Mon Sep 17 00:00:00 2001 From: davsotpon Date: Tue, 12 Jan 2021 18:51:51 +0100 Subject: [PATCH 090/123] Arreglado el footer de ContactUs y AboutUs --- decide/static/css/aboutUs.css | 2 +- .../templates/visualizer/aboutUs.html | 20 +++++++++---------- .../templates/visualizer/contactUs.html | 17 ++++++++-------- .../templates/visualizer/visualizer.html | 6 +++--- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/decide/static/css/aboutUs.css b/decide/static/css/aboutUs.css index 904fd4a90f..7a11b1d530 100644 --- a/decide/static/css/aboutUs.css +++ b/decide/static/css/aboutUs.css @@ -30,7 +30,7 @@ section .containerr { min-width: 1100px; min-height: 1000px; display: flex; - z-index: 1000; + } section .containerr .personalInfo { position: absolute; diff --git a/decide/visualizer/templates/visualizer/aboutUs.html b/decide/visualizer/templates/visualizer/aboutUs.html index 4f7934f846..18ec413787 100644 --- a/decide/visualizer/templates/visualizer/aboutUs.html +++ b/decide/visualizer/templates/visualizer/aboutUs.html @@ -7,7 +7,7 @@ - + {% endblock %} {% block content %} @@ -29,7 +29,7 @@

{% trans "Visualization
- Pablo + Pablo
Pablo
Franco Sánchez

{% trans "Computer Engineering student in Software Engineering" %}

@@ -37,7 +37,7 @@
Franco Sánchez
{% trans "GitHub Profile" %}
- Abraham + Abraham
Abraham
García Villalobos

{% trans "Computer Engineering student in Software Engineering" %}

@@ -45,7 +45,7 @@
García Villalobos
{% trans "GitHub Profile" %}
- Martin + Martin
Martín Arturo
Guerrero Romero

{% trans "Computer Engineering student in Software Engineering" %}

@@ -53,7 +53,7 @@
Guerrero Romero
{% trans "GitHub Profile" %}
- Gabriel + Gabriel
Gabriel
Gutiérrez Prieto

{% trans "Computer Engineering student in Software Engineering" %}

@@ -61,7 +61,7 @@
Gutiérrez Prieto
{% trans "GitHub Profile" %}
- Thibaut + Thibaut
Thibaut
Lopez

{% trans "Computer Engineering student in Software Engineering" %}

@@ -69,7 +69,7 @@
Lopez
{% trans "GitHub Profile" %}
- David + David
David
Soto Ponce

{% trans "Computer Engineering student in Software Engineering" %}

@@ -80,8 +80,8 @@
Soto Ponce
- - + +
{% trans "Evolution and Configuration Management" %} · Decide Decide Pícaro · Visualización © 2021 @@ -108,7 +108,7 @@
Soto Ponce
- + - + @@ -29,7 +29,7 @@ - + {% endblock %} {% block content %} From 88f6e0f73fea6d0b7da4287ace30051459657adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADnAGR?= <56026685+Martinagr32@users.noreply.github.com> Date: Tue, 12 Jan 2021 20:39:10 +0100 Subject: [PATCH 091/123] Update tests.py DarkMode, LightMode, ContactUs and ContactUsBack Test Implements --- decide/visualizer/tests.py | 85 +++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index 7ce503c2dd..23af94b7b1 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -1,3 +1,86 @@ from django.test import TestCase -# Create your tests here. +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select + +class TestContactUs(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_contactUs(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() + assert self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > h2").text == "Contact Info" + + def tearDown(self): + self.driver.quit() + +class TestContactUsBack(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_contactUsBack(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() + assert self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > h2").text == "Contact Info" + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary").click() + assert self.driver.find_element(By.ID, "saveAsPNG1").text == "Save as PNG" + + def tearDown(self): + self.driver.quit() + +class TestDarkMode(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_darkMode(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.ID, "darkButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-dark" + assert self.driver.find_element(By.ID, "lightButton").text == "Light mode" + + def tearDown(self): + self.driver.quit() + +class TestLightMode(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_lightMode(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.ID, "darkButton").click() + self.driver.find_element(By.ID, "lightButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-light" + assert self.driver.find_element(By.ID, "darkButton").text == "Dark mode" + + def tearDown(self): + self.driver.quit() From 04d45f9c7f238236c1433bdbba917c4cda05be53 Mon Sep 17 00:00:00 2001 From: Abraham Date: Tue, 12 Jan 2021 20:59:07 +0100 Subject: [PATCH 092/123] test visualizer 5 tests implemented --- decide/visualizer/tests.py | 154 ++++++++++++++++++++++++++++++++++++- 1 file changed, 153 insertions(+), 1 deletion(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index 7ce503c2dd..03dac297d6 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -1,3 +1,155 @@ +# from django.test import TestCase +# # Generated by Selenium IDE +# import unittest +# from selenium import webdriver +# from selenium.webdriver.common.by import By +# from selenium.webdriver.support.ui import Select + +# class TestTestPNG1(unittest.TestCase): +# def setUp(self): +# options = webdriver.ChromeOptions() +# options.headless = True +# self.driver = webdriver.Chrome(options=options) +# self.driver.fullscreen_window() +# #self.vars = {} + +# def test_testPNG1(self): +# self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") +# self.driver.set_window_size(1936, 1056) +# #self.vars["PNG"] = self.driver.find_element(By.CSS_SELECTOR, "tr:nth-child(2) > td:nth-child(1) > .btn").text +# #self.driver.find_element(By.CSS_SELECTOR, "tr:nth-child(2) > td:nth-child(1) > .btn").click() +# self.driver.find_element_by_id('saveAsPNG1').click() + +# def tearDown(self): +# self.driver.quit +# if __name__ == '__main__': +# unittest.main() + from django.test import TestCase -# Create your tests here. +import unittest +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select + +class TestAboutUs(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_aboutUs(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.CSS_SELECTOR, ".btn-group > .btn:nth-child(3)").click() + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(2) > .card-title").text == "Abraham" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(3) > .card-title").text == "Martín Arturo" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(4) > .card-title").text == "Gabriel" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(5) > .card-title").text == "Thibaut" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(6) > .card-title").text == "David" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(1) > .card-title").text == "Pablo" + + def tearDown(self): + self.driver.quit() + +class TestAboutUsBack(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_aboutUsBack(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.CSS_SELECTOR, ".btn-group > .btn:nth-child(3)").click() + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(2) > .card-title").text == "Abraham" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(3) > .card-title").text == "Martín Arturo" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(4) > .card-title").text == "Gabriel" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(5) > .card-title").text == "Thibaut" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(6) > .card-title").text == "David" + assert self.driver.find_element(By.CSS_SELECTOR, ".columna:nth-child(1) > .card-title").text == "Pablo" + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary").click() + assert self.driver.find_element(By.ID, "saveAsPNG1").text == "Save as PNG" + + def tearDown(self): + self.driver.quit() + +class TestTestPNG1(unittest.TestCase): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_testPNG1(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + #self.driver.find_element(By.CSS_SELECTOR, "#saveAsPDF").click() + assert self.driver.find_element(By.ID, "saveAsPNG1").text == "Save as PNG" + assert self.driver.find_element(By.ID, "saveAsPNG2").text == "Save as PNG" + assert self.driver.find_element(By.ID, "saveAsPDF").text == "Save as PDF" + def tearDown(self): + self.driver.quit() + + + +class TestDarkModeCookies(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_darkModeCookies(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.ID, "darkButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-dark" + assert self.driver.find_element(By.ID, "lightButton").text == "Light mode" + self.driver.find_element(By.CSS_SELECTOR, ".btn-group > .btn:nth-child(3)").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-dark" + + def tearDown(self): + self.driver.quit() + +class TestLightModeCookies(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + def test_lightModeCookies(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.ID, "darkButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-dark" + assert self.driver.find_element(By.ID, "lightButton").text == "Light mode" + self.driver.find_element(By.ID, "lightButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-light" + assert self.driver.find_element(By.ID, "darkButton").text == "Dark mode" + self.driver.find_element(By.CSS_SELECTOR, ".btn-group > .btn:nth-child(3)").click() + #Si esta en modo claro, al ser el modo por defecto, el backgraund es blacon, sin la necesidad de aplicar ningún cambio de CSS. + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "" + + def tearDown(self): + self.driver.quit() + +# if __name__ == '__main__': +# unittest.main() \ No newline at end of file From b230a3d4695aeee81384b9e9d19150d02c5b4cd8 Mon Sep 17 00:00:00 2001 From: Abraham Date: Wed, 13 Jan 2021 17:53:39 +0100 Subject: [PATCH 093/123] =?UTF-8?q?test=20comprobaci=C3=B3n=20de=20gr?= =?UTF-8?q?=C3=A1fica=20de=20barras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/visualizer/tests.py | 49 ++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index 03dac297d6..a6b546d134 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -1,36 +1,13 @@ -# from django.test import TestCase -# # Generated by Selenium IDE -# import unittest -# from selenium import webdriver -# from selenium.webdriver.common.by import By -# from selenium.webdriver.support.ui import Select - -# class TestTestPNG1(unittest.TestCase): -# def setUp(self): -# options = webdriver.ChromeOptions() -# options.headless = True -# self.driver = webdriver.Chrome(options=options) -# self.driver.fullscreen_window() -# #self.vars = {} - -# def test_testPNG1(self): -# self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") -# self.driver.set_window_size(1936, 1056) -# #self.vars["PNG"] = self.driver.find_element(By.CSS_SELECTOR, "tr:nth-child(2) > td:nth-child(1) > .btn").text -# #self.driver.find_element(By.CSS_SELECTOR, "tr:nth-child(2) > td:nth-child(1) > .btn").click() -# self.driver.find_element_by_id('saveAsPNG1').click() - -# def tearDown(self): -# self.driver.quit -# if __name__ == '__main__': -# unittest.main() +# # Generated by Selenium IDE from django.test import TestCase import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select +from PIL import Image + class TestAboutUs(): def setUp(self): @@ -151,5 +128,25 @@ def test_lightModeCookies(self): def tearDown(self): self.driver.quit() +class TestGraficaBarras(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + def test_graficaBarras(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + assert self.driver.find_element(By.CSS_SELECTOR, "th:nth-child(2) > .heading").text == "Bar Chart" + #Sacamos una captura de pantalla de la gráfica de barras para comprobar que esta existe, dentro de la imagen screenshotgraficabarras.png aparece esta gráfica, solo que aparece algo distosionada + #las barras miden 1/5 menos de lo que miden en realidad, pero podemos comprobar que existe la gráfica y que tiene el número correcto de opciones. + self.driver.find_element_by_id('myChart2').screenshot('screenshotgraficabarras.png') + + def tearDown(self): + self.driver.quit() + # if __name__ == '__main__': # unittest.main() \ No newline at end of file From 3e785806f32d29b8dd722be670df15e01643b76b Mon Sep 17 00:00:00 2001 From: Abraham Date: Wed, 13 Jan 2021 17:59:55 +0100 Subject: [PATCH 094/123] =?UTF-8?q?unificaci=C3=B3n=20de=20test.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/visualizer/tests.py | 86 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 3 deletions(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index a6b546d134..76830ac540 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -8,6 +8,86 @@ from selenium.webdriver.support.ui import Select from PIL import Image +class TestContactUs(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_contactUs(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() + assert self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > h2").text == "Contact Info" + + def tearDown(self): + self.driver.quit() + +class TestContactUsBack(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_contactUsBack(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() + assert self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > h2").text == "Contact Info" + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary").click() + assert self.driver.find_element(By.ID, "saveAsPNG1").text == "Save as PNG" + + def tearDown(self): + self.driver.quit() + +class TestDarkMode(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_darkMode(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.ID, "darkButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-dark" + assert self.driver.find_element(By.ID, "lightButton").text == "Light mode" + + def tearDown(self): + self.driver.quit() + +class TestLightMode(): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_lightMode(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.find_element(By.ID, "darkButton").click() + self.driver.find_element(By.ID, "lightButton").click() + assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-light" + assert self.driver.find_element(By.ID, "darkButton").text == "Dark mode" + + def tearDown(self): + self.driver.quit() class TestAboutUs(): def setUp(self): @@ -59,14 +139,14 @@ def test_aboutUsBack(self): def tearDown(self): self.driver.quit() -class TestTestPNG1(unittest.TestCase): +class TestPNG1PNG2PDF(): def setUp(self): options = webdriver.ChromeOptions() options.headless = True self.driver = webdriver.Chrome(options=options) self.driver.fullscreen_window() - def test_testPNG1(self): + def testPNG1PNG2PDF(self): self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") self.driver.find_element_by_id('id_username').send_keys("admin") self.driver.find_element_by_id('id_password').send_keys("picarodecide") @@ -122,7 +202,7 @@ def test_lightModeCookies(self): assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-light" assert self.driver.find_element(By.ID, "darkButton").text == "Dark mode" self.driver.find_element(By.CSS_SELECTOR, ".btn-group > .btn:nth-child(3)").click() - #Si esta en modo claro, al ser el modo por defecto, el backgraund es blacon, sin la necesidad de aplicar ningún cambio de CSS. + #Si esta en modo claro, al ser el modo por defecto, el backgraund es blanco, sin la necesidad de aplicar ningún cambio de CSS. assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "" def tearDown(self): From 1ed15cd193f6b471d782d2d86f426ed4d2550b54 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 13 Jan 2021 18:17:54 +0100 Subject: [PATCH 095/123] Arreglo de bot de telegram Se ha cambiado la id del grupo de telegram --- decide/voting/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/decide/voting/models.py b/decide/voting/models.py index 21aa829bea..1d06cbad33 100644 --- a/decide/voting/models.py +++ b/decide/voting/models.py @@ -130,7 +130,7 @@ def __str__(self): #Método para enviar datos de los resultados por telegram (Pablo Franco Sánchez, visualización) def enviarTelegram(self,msn): - id = "-406420323" + id = "-1001460398324" token = "1426657690:AAEmrAP5v4KFQvmzv5AyGdGvWwrbJbZup3M" url = "https://api.telegram.org/bot" + token + "/sendMessage" From 02a81c1cbf87cb2a513f5f4a1fe27d16e97929f9 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 13 Jan 2021 20:25:07 +0100 Subject: [PATCH 096/123] Arreglado los test del .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b78b9d2d0e..c6a342bac1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: script: - cd decide - cp travis_local_settings.py local_settings.py -- coverage run --branch --source=. ./manage.py test mixnet --keepdb +- coverage run --branch --source=. ./manage.py test authentication visualizer voting --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From ca4db1209dced36d78d07058c4d54aaddc1918ff Mon Sep 17 00:00:00 2001 From: Thiloparn <48439369+Thiloparn@users.noreply.github.com> Date: Wed, 13 Jan 2021 20:28:39 +0100 Subject: [PATCH 097/123] Update tests.py --- decide/visualizer/tests.py | 88 +++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index 7ce503c2dd..c74d45a054 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -1,3 +1,89 @@ from django.test import TestCase -# Create your tests here. + +import unittest +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select +from selenium.webdriver.common.action_chains import ActionChains +from selenium.webdriver.support import expected_conditions +from selenium.webdriver.support.wait import WebDriverWait +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.common.desired_capabilities import DesiredCapabilities + +class TestEmail(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + options.add_argument("--no-sandbox") + self.driver = webdriver.Chrome(options=options) + + def teardown(self): + self.driver.quit() + + def test_email(self): + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.set_window_size(1552, 840) + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() + self.driver.find_element(By.NAME, "name").click() + self.driver.find_element(By.NAME, "name").send_keys("test test") + self.driver.find_element(By.NAME, "subject").click() + self.driver.find_element(By.NAME, "subject").send_keys("test") + self.driver.find_element(By.NAME, "mail").click() + self.driver.find_element(By.NAME, "mail").send_keys("test@gmail.com") + self.driver.find_element(By.NAME, "Comment").click() + self.driver.find_element(By.NAME, "Comment").send_keys("test") + self.driver.find_element(By.CSS_SELECTOR, ".inputBox:nth-child(5) > input").click() + +class TestTraduccion(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + options.add_argument("--no-sandbox") + self.driver = webdriver.Chrome(options=options) + + def teardown(self): + self.driver.quit() + + def test_traduccion(self): + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.set_window_size(1552, 840) + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(3) img").click() + assert self.driver.find_element(By.ID, "text").text == "Résultats" + +class TestQuestion(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + options.add_argument("--no-sandbox") + self.driver = webdriver.Chrome(options=options) + + def teardown(self): + self.driver.quit() + + def test_question(self): + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.set_window_size(1552, 840) + elements = self.driver.find_elements(By.ID, "question") + assert len(elements) > 0 + +class TestMaps(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + options.add_argument("--no-sandbox") + self.driver = webdriver.Chrome(options=options) + + def teardown(self): + self.driver.quit() + + def test_maps(self): + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.set_window_size(1552, 840) + self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() + elements = self.driver.find_elements(By.CSS_SELECTOR, "a > img") + assert len(elements) > 0 + \ No newline at end of file From b544a88d1cc3d78337b0ead2386600e615baf297 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 13 Jan 2021 20:49:49 +0100 Subject: [PATCH 098/123] descarga de geckodriver --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index c6a342bac1..5d9a021afb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,11 @@ install: - pip install -r requirements.txt - pip install codacy-coverage script: +- wget https://github.com/mozilla/geckodriver/releases/download/v0.27.0/geckodriver-v0.27.0-linux64.tar.gz +- tar -xzf geckodriver-v0.27.0-linux64.tar.gz +- chmod +x geckodriver +- sudo cp geckodriver /usr/bin/ +- rm geckodriver-v0.27.0-linux64.tar.gz - cd decide - cp travis_local_settings.py local_settings.py - coverage run --branch --source=. ./manage.py test authentication visualizer voting --keepdb From 22a096ab80689830f23d616535382523f36d9325 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 13 Jan 2021 20:58:35 +0100 Subject: [PATCH 099/123] =?UTF-8?q?a=C3=B1adido=20selenium=20a=20.travis.y?= =?UTF-8?q?ml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 62bce99722..6291dbd8cb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,5 @@ django-nose==1.4.6 jsonnet==0.12.1 django-heroku gunicorn +selenium From bdc8be2bb7bbb9164cb314a30c5a91beef0305ca Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 13 Jan 2021 21:06:28 +0100 Subject: [PATCH 100/123] =?UTF-8?q?A=C3=B1adido=20pillow=20a=20requirement?= =?UTF-8?q?s.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 6291dbd8cb..522ed458b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,4 +12,5 @@ jsonnet==0.12.1 django-heroku gunicorn selenium +pillow From 6215809caa3e174bca8d628b2c6615188f091800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADnAGR?= <56026685+Martinagr32@users.noreply.github.com> Date: Thu, 14 Jan 2021 13:43:17 +0100 Subject: [PATCH 101/123] Update tests.py Spanish and english language tests --- decide/visualizer/tests.py | 75 ++++++++++++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 7 deletions(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index e994467d70..dab1629c0a 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -1,8 +1,5 @@ - -# # Generated by Selenium IDE from django.test import TestCase - import unittest from selenium import webdriver from selenium.webdriver.common.by import By @@ -39,7 +36,7 @@ def test_email(self): self.driver.find_element(By.NAME, "Comment").send_keys("test") self.driver.find_element(By.CSS_SELECTOR, ".inputBox:nth-child(5) > input").click() -class TestTraduccion(): +class TestTraduccionFrances(): def setup(self): options = webdriver.ChromeOptions() options.headless = True @@ -49,7 +46,7 @@ def setup(self): def teardown(self): self.driver.quit() - def test_traduccion(self): + def test_traduccionFrances(self): self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") self.driver.set_window_size(1552, 840) element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") @@ -104,6 +101,10 @@ def test_contactUs(self): self.driver.find_element_by_id('id_password').send_keys("picarodecide") self.driver.find_element_by_id('login-form').click() self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(1) > .pmd-floating-action-btn > img").click() self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() assert self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > h2").text == "Contact Info" @@ -123,6 +124,10 @@ def test_contactUsBack(self): self.driver.find_element_by_id('id_password').send_keys("picarodecide") self.driver.find_element_by_id('login-form').click() self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(1) > .pmd-floating-action-btn > img").click() self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary:nth-child(2)").click() assert self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > h2").text == "Contact Info" self.driver.find_element(By.CSS_SELECTOR, ".btn-secondary").click() @@ -146,6 +151,10 @@ def test_darkMode(self): self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") self.driver.find_element(By.ID, "darkButton").click() assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-dark" + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(1) > .pmd-floating-action-btn > img").click() assert self.driver.find_element(By.ID, "lightButton").text == "Light mode" def tearDown(self): @@ -167,11 +176,63 @@ def test_lightMode(self): self.driver.find_element(By.ID, "darkButton").click() self.driver.find_element(By.ID, "lightButton").click() assert self.driver.find_element_by_tag_name('body').get_attribute("class") == "bg-light" + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(1) > .pmd-floating-action-btn > img").click() assert self.driver.find_element(By.ID, "darkButton").text == "Dark mode" def tearDown(self): self.driver.quit() + +class TestTraduccionEspanyol(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_traduccionEspanyol(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(2) img").click() + assert self.driver.find_element(By.ID, "text").text == "Resultados" + def teardown(self): + self.driver.quit() + +class TestTraduccionIngles(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_traduccionIngles(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(2) img").click() + assert self.driver.find_element(By.ID, "text").text == "Resultados" + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(1) > .pmd-floating-action-btn > img").click() + assert self.driver.find_element(By.ID, "text").text == "Results" + + def teardown(self): + self.driver.quit() class TestAboutUs(): def setUp(self): @@ -243,8 +304,6 @@ def testPNG1PNG2PDF(self): def tearDown(self): self.driver.quit() - - class TestDarkModeCookies(): def setUp(self): options = webdriver.ChromeOptions() @@ -273,6 +332,7 @@ def setUp(self): options.headless = True self.driver = webdriver.Chrome(options=options) self.driver.fullscreen_window() + def test_lightModeCookies(self): self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") self.driver.find_element_by_id('id_username').send_keys("admin") @@ -298,6 +358,7 @@ def setUp(self): options.headless = True self.driver = webdriver.Chrome(options=options) self.driver.fullscreen_window() + def test_graficaBarras(self): self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") self.driver.find_element_by_id('id_username').send_keys("admin") From 888b84b70163164672e7bc08f72e7e773c1ea378 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 14 Jan 2021 15:52:57 +0100 Subject: [PATCH 102/123] =?UTF-8?q?Pagina=20home=20de=20visualizaci=C3=B3n?= =?UTF-8?q?=20a=C3=B1adida?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/visualizer/visualizer.html | 1 + .../templates/visualizer/visualizer_home.html | 160 ++++++++++++++++++ decide/visualizer/urls.py | 3 +- decide/visualizer/views.py | 15 ++ 4 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 decide/visualizer/templates/visualizer/visualizer_home.html diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 319d087cfd..4acfa9ce06 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -43,6 +43,7 @@ Telegram +
diff --git a/decide/visualizer/templates/visualizer/visualizer_home.html b/decide/visualizer/templates/visualizer/visualizer_home.html new file mode 100644 index 0000000000..7796b48dea --- /dev/null +++ b/decide/visualizer/templates/visualizer/visualizer_home.html @@ -0,0 +1,160 @@ +{% extends "base.html" %} +{% load i18n static %} + +{% block title %} - Visualización{% endblock %} +{% block extrahead %} + + + + + + + + + + + + + + + + + + + + + + + + +{% endblock %} + +{% block content %} +
+ + + + {% trans "Decide Visualization" %} + + + +
+ + Telegram + + +
+ + + + +
+
+ +
+ +
+ + + + +
+ + + + + + + + + + {% for voting in votings %} + + + + {% endfor %} + +
Votings
+
{{ voting.name }}
+
+ + + +
+
+
+ + + +
+ {% trans "Evolution and Configuration Management" %} · Decide + Decide Pícaro · Visualización © 2021 +
+
+
+ + + + + diff --git a/decide/visualizer/templates/visualizer/visualizer_home.html b/decide/visualizer/templates/visualizer/visualizer_home.html index 7796b48dea..3df8f1a217 100644 --- a/decide/visualizer/templates/visualizer/visualizer_home.html +++ b/decide/visualizer/templates/visualizer/visualizer_home.html @@ -65,7 +65,7 @@ - + @@ -87,15 +87,16 @@ - +
{% trans "Evolution and Configuration Management" %} · Decide Decide Pícaro · Visualización © 2021
-
+
+{% endblock %} - +{% block extrabody %} - - + + + {% endblock %} From 8c0c3abb3b0920f73d34fd1df1183fe80b54d494 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Fri, 15 Jan 2021 01:32:37 +0100 Subject: [PATCH 107/123] =?UTF-8?q?A=C3=B1adido=20test=20de=20visualizar?= =?UTF-8?q?=20y=20cambios=20en=20el=20bot=20de=20telegram?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se han añadido test sobre podium, la traducción en aleman y la pagina de home visualizer. Además se ha añadido un try/except en el bot de telegram para evitar que un posible mal funcionamiento pare la aplicación --- decide/visualizer/tests.py | 114 ++++++++++++++++++++++++++++++++++++- decide/voting/models.py | 5 +- 2 files changed, 117 insertions(+), 2 deletions(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index c42503dd64..e865a43bf2 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -1,6 +1,6 @@ from django.test import TestCase -import unittest +import unittest, time, re from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select @@ -9,6 +9,8 @@ from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities +from selenium.common.exceptions import NoSuchElementException +from selenium.common.exceptions import NoAlertPresentException from PIL import Image @@ -397,5 +399,115 @@ def test_graficaBarras(self): def tearDown(self): self.driver.quit() +class TestPodium(unittest.TestCase): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_p(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(1) > .pmd-floating-action-btn > img").click() + try: self.assertEqual("WINNER", self.driver.find_element_by_xpath("(//div[@id='winner'])[2]").text) + except AssertionError as e: self.verificationErrors.append(str(e)) + try: self.assertEqual("2nd place", self.driver.find_element_by_id("winner").text) + except AssertionError as e: self.verificationErrors.append(str(e)) + try: self.assertEqual("3rd place", self.driver.find_element_by_xpath("(//div[@id='winner'])[3]").text) + except AssertionError as e: self.verificationErrors.append(str(e)) + + def is_element_present(self, how, what): + try: self.driver.find_element(by=how, value=what) + except NoSuchElementException as e: return False + return True + + def is_alert_present(self): + try: self.driver.switch_to_alert() + except NoAlertPresentException as e: return False + return True + + def close_alert_and_get_its_text(self): + try: + alert = self.driver.switch_to_alert() + alert_text = alert.text + if self.accept_next_alert: + alert.accept() + else: + alert.dismiss() + return alert_text + finally: self.accept_next_alert = True + + def tearDown(self): + # To know more about the difference between verify and assert, + # visit https://www.seleniumhq.org/docs/06_test_design_considerations.jsp#validating-results + self.driver.quit() + +class TestTraduccionAleman(): + def setup(self): + options = webdriver.ChromeOptions() + options.headless = True + options.add_argument("--no-sandbox") + self.driver = webdriver.Chrome(options=options) + + def teardown(self): + self.driver.quit() + + def test_traduccionAleman(self): + self.driver.get("https://picaro-decide.herokuapp.com/visualizer/5/") + self.driver.set_window_size(1552, 840) + element = self.driver.find_element(By.CSS_SELECTOR, ".fa-language") + actions = ActionChains(self.driver) + actions.move_to_element(element).perform() + self.driver.find_element(By.CSS_SELECTOR, "li:nth-child(4) img").click() + assert self.driver.find_element(By.ID, "text").text == "Ergebnisse" + +""" Comentado porque estos cambios no estan todavia en heroku +class TestHomeVisualizer(unittest.TestCase): + def setUp(self): + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + self.driver.fullscreen_window() + + def test_home_visualizer(self): + self.driver.get("https://picaro-decide.herokuapp.com/admin/login/?next=/admin/") + self.driver.find_element_by_id('id_username').send_keys("admin") + self.driver.find_element_by_id('id_password').send_keys("picarodecide") + self.driver.find_element_by_id('login-form').click() + self.driver.get("https://picaro-decide.herokuapp.com/visualizer") + try: self.assertEqual("Votings", self.driver.find_element_by_id("question").text) + except AssertionError as e: self.verificationErrors.append(str(e)) + + def is_element_present(self, how, what): + try: self.driver.find_element(by=how, value=what) + except NoSuchElementException as e: return False + return True + + def is_alert_present(self): + try: self.driver.switch_to_alert() + except NoAlertPresentException as e: return False + return True + + def close_alert_and_get_its_text(self): + try: + alert = self.driver.switch_to_alert() + alert_text = alert.text + if self.accept_next_alert: + alert.accept() + else: + alert.dismiss() + return alert_text + finally: self.accept_next_alert = True + + def tearDown(self): + self.driver.quit() +""" # if __name__ == '__main__': # unittest.main() diff --git a/decide/voting/models.py b/decide/voting/models.py index 1d06cbad33..b533413cbe 100644 --- a/decide/voting/models.py +++ b/decide/voting/models.py @@ -138,4 +138,7 @@ def enviarTelegram(self,msn): 'chat_id': id, 'text' : str(msn) } - requests.post(url, params=params) + try: + requests.post(url, params=params) + except: + pass From f0bcb9ba3137184fd2875898736e33906a4b0225 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Fri, 15 Jan 2021 01:40:56 +0100 Subject: [PATCH 108/123] Arreglo de los test --- decide/visualizer/tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/decide/visualizer/tests.py b/decide/visualizer/tests.py index e865a43bf2..0d39cec088 100644 --- a/decide/visualizer/tests.py +++ b/decide/visualizer/tests.py @@ -399,7 +399,7 @@ def test_graficaBarras(self): def tearDown(self): self.driver.quit() -class TestPodium(unittest.TestCase): +class TestPodium(): def setUp(self): options = webdriver.ChromeOptions() options.headless = True @@ -469,7 +469,7 @@ def test_traduccionAleman(self): assert self.driver.find_element(By.ID, "text").text == "Ergebnisse" """ Comentado porque estos cambios no estan todavia en heroku -class TestHomeVisualizer(unittest.TestCase): +class TestHomeVisualizer(): def setUp(self): options = webdriver.ChromeOptions() options.headless = True From 756bef0a2851b9132c89560e7e012e66daf0e2f0 Mon Sep 17 00:00:00 2001 From: "gabgutpri@alum.us.es" Date: Fri, 15 Jan 2021 13:42:17 +0100 Subject: [PATCH 109/123] Correccion import cource en visualizer_home --- decide/visualizer/templates/visualizer/visualizer_home.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer_home.html b/decide/visualizer/templates/visualizer/visualizer_home.html index 7142ec7291..300932a11b 100644 --- a/decide/visualizer/templates/visualizer/visualizer_home.html +++ b/decide/visualizer/templates/visualizer/visualizer_home.html @@ -12,7 +12,7 @@ - + @@ -26,7 +26,7 @@ - + {% endblock %} {% block content %} From 82f9066947ff4659838e8ff55f5440218784e7b3 Mon Sep 17 00:00:00 2001 From: Abraham Date: Fri, 15 Jan 2021 14:27:56 +0100 Subject: [PATCH 110/123] Incidencia cookies solucionada --- .../templates/visualizer/visualizer.html | 12 ++++- .../templates/visualizer/visualizer_home.html | 48 ++++++++++++------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index c96d9c5939..079c647201 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -43,7 +43,7 @@ Telegram - + {% trans "Visualizer" %} @@ -336,6 +336,14 @@

{% trans "Re var newURL = url.replace(page,"aboutUs") return newURL } + // function getURLVisualizer() { + // var url = document.location.href; + // partes = url.split('/'); + // var page = partes[partes.length-2]; + // var newURL = url.replace(page,"") + // ultimateURL=newURL.substring(0, newULR().length-2) + // return ultimateURL + // } @@ -365,7 +373,7 @@

{% trans "Re function checkCookie() { if (getCookie("theme") == "dark") { activateDarkMode(); - } + } } window.onload = checkCookie(); diff --git a/decide/visualizer/templates/visualizer/visualizer_home.html b/decide/visualizer/templates/visualizer/visualizer_home.html index 3df8f1a217..52be1b8c58 100644 --- a/decide/visualizer/templates/visualizer/visualizer_home.html +++ b/decide/visualizer/templates/visualizer/visualizer_home.html @@ -45,11 +45,6 @@ - - - @@ -97,6 +92,8 @@ {% endblock %} {% block extrabody %} + + + + {% endblock %} From f45edb9ffb23d6f1d0c6fd7647d4ab3f6440f8fe Mon Sep 17 00:00:00 2001 From: "gabgutpri@alum.us.es" Date: Fri, 15 Jan 2021 17:50:04 +0100 Subject: [PATCH 111/123] Corregido error imports --- .../visualizer/templates/visualizer/visualizer_home.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/decide/visualizer/templates/visualizer/visualizer_home.html b/decide/visualizer/templates/visualizer/visualizer_home.html index 300932a11b..d3894368a7 100644 --- a/decide/visualizer/templates/visualizer/visualizer_home.html +++ b/decide/visualizer/templates/visualizer/visualizer_home.html @@ -5,7 +5,7 @@ {% block extrahead %} - + @@ -159,9 +159,10 @@
{% trans "Bar Chart" %}
} - + +

Votings
{% trans "Votings" %}