fix: ranking bug

pull/55/head
Pierre-Louis Guhur 1 year ago
parent 30b50d0328
commit f68efefa57

@ -5,7 +5,7 @@ from collections import defaultdict
import typing as t
from sqlalchemy.orm import Session
from sqlalchemy import func, insert
from majority_judgment import majority_judgment
from majority_judgment import majority_judgment, Candidate, Vote
from . import models, schemas, errors
from .settings import settings
from .auth import create_ballot_token, create_admin_token, jws_verify
@ -463,14 +463,21 @@ def get_results(db: Session, election_ref: str) -> schemas.ResultsGet:
for candidate_id, grade_value, num_votes in db_res:
ballots[candidate_id][grade_value] = num_votes
merit_profile = {
merit_profile2 = {
c: {value: votes[value] for value in sorted(votes.keys(), reverse=True)}
for c, votes in ballots.items()
}
ranking = majority_judgment(merit_profile) # pyright: ignore
merit_profile: dict[Candidate, list[Vote]] = {
c: sorted(sum([
[value] * votes[value]
for value in sorted(votes.keys(), reverse=True)], []))
for c, votes in ballots.items()
}
ranking = majority_judgment(merit_profile, reverse=True) # pyright: ignore
db_election.ranking = ranking
db_election.merit_profile = merit_profile
db_election.merit_profile = merit_profile2
results = schemas.ResultsGet.from_orm(db_election)

@ -151,54 +151,43 @@ services:
- "traefik.http.routers.metabase.tls=true"
- "traefik.http.routers.metabase.tls.certresolver=leresolver"
mj_admin:
image: fastapi-admin
container_name: fastapi-admin
build:
context: ./docker/fastapi-admin
dockerfile: Dockerfile
mj_pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${EMAIL:-pgadmin4@pgadmin.org}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
PGADMIN_CONFIG_SERVER_MODE: 'False'
restart: unless-stopped
profiles:
- admin
- all
environment:
- TZ=${TIMEZONE:-Europe/Paris}
- DATABASE_URL=postgres://${DB_USER:-mj}:${DB_PASS}@mj_db:5432/fastapi-admin
- REDIS_URL=redis://mj_redis:6379/0
command: uvicorn examples.main:app_ --port 8000 --host 0.0.0.0
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
- "traefik.http.routers.fastapi_admin.entrypoints=web,websecure"
- "traefik.http.routers.fastapi_admin.rule=Host(`${FASTAPI_ADMIN_PREFIX:-fastapi}.${DOMAIN}`)"
- "traefik.http.services.fastapi_admin.loadbalancer.server.port=8000"
- "traefik.http.routers.fastapi_admin.tls=true"
- "traefik.http.routers.fastapi_admin.tls.certresolver=leresolver"
healthcheck:
test: ["CMD", "wget", "-q", "-O", "-", "http://localhost:5050"]
interval: 1m30s
timeout: 10s
retries: 3
volumes:
- pgadmin:/var/lib/pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- lan
- traefik_network
mj_redis:
image: docker.io/bitnami/redis:7.0
hostname: mj_redis
profiles:
- admin
- all
networks:
- lan
environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development.
- ALLOW_EMPTY_PASSWORD=false
- REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
# ports:
# - '6379:6379'
volumes:
- 'redis_data:/bitnami/redis/data'
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
- "traefik.http.routers.pgadmin.entrypoints=web,websecure"
- "traefik.http.routers.pgadmin.rule=Host(`${PGADMIN:-pgadmin}.${DOMAIN}`)"
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"
- "traefik.http.routers.pgadmin.tls=true"
- "traefik.http.routers.pgadmin.tls.certresolver=leresolver"
volumes:
imgpush:
db:
pgadmin:
redis_data:
driver: local

Loading…
Cancel
Save