#63 Replacing vote expiration with vote accuarcy
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user