#63 Replacing vote expiration with vote accuarcy

This commit is contained in:
Leonhard Strohmidel
2022-09-20 09:56:23 +02:00
parent d213b51a59
commit 8597e53599
5 changed files with 57 additions and 16 deletions

View File

@@ -1,11 +1,13 @@
import os
from math import floor
import datetime
from math import round, ceil
from django.db import models
from django.urls import reverse
from django.dispatch import receiver
from django.db.models.signals import post_delete, pre_save
from django.utils.translation import gettext as _
from django.utils import timezone
from django.conf import settings
from lostplaces.models.abstract_models import Submittable, Taggable, Mapable, Expireable
@@ -92,8 +94,6 @@ class Place(Submittable, Taggable, Mapable):
return {'latitude': latitude, 'longitude': longitude}
def calculate_place_level(self):
self.remove_expired_votes()
if self.placevotings.count() == 0:
self.level = 5
self.save()
@@ -104,13 +104,19 @@ class Place(Submittable, Taggable, Mapable):
for vote in self.placevotings.all():
level += vote.vote
self.level = floor(level / self.placevotings.count())
self.level = round(level / self.placevotings.count())
self.save()
def remove_expired_votes(self):
def calculate_voting_accuracy(self):
place_age = timezone.now() - self.submitted_when;
accuaries = [];
for vote in self.placevotings.all():
if vote.is_expired:
vote.delete()
vote_age = timezone.now() - vote.created_when;
accuracy = 100 - (100 / (place_age / vote_age))
accuaries.append(accuracy)
return ceil(sum(accuaries) / len(accuaries))
def __str__(self):
return self.name