diff options
author | emkael <emkael@tlen.pl> | 2016-05-02 15:54:03 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2016-05-02 15:54:03 +0200 |
commit | 9797bd898f435ba04475ab2e38597e59318474b9 (patch) | |
tree | 308c7fe9626947f058a4d20144b7b46708cc64a8 /f1elo | |
parent | 1d4f2c970b29f7870577a74d450e4ecc3113741c (diff) |
* results log sorted
Diffstat (limited to 'f1elo')
-rw-r--r-- | f1elo/interface.py | 2 | ||||
-rw-r--r-- | f1elo/model.py | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/f1elo/interface.py b/f1elo/interface.py index f51bc9e..77307ae 100644 --- a/f1elo/interface.py +++ b/f1elo/interface.py @@ -86,7 +86,7 @@ class Interface: podium_rating_after = 0 rating_sum = 0 rating_change_sum = 0 - for entry in race.entries: + for entry in sorted(race.entries): old_rating = elo.get_entry_ranking(entry, race.date - dateutil.relativedelta.relativedelta(days=1)) new_rating = elo.get_entry_ranking(entry) diff --git a/f1elo/model.py b/f1elo/model.py index 7cd5e6d..c450353 100644 --- a/f1elo/model.py +++ b/f1elo/model.py @@ -3,6 +3,9 @@ from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import backref, relationship, sessionmaker from sqlalchemy.types import Boolean, Date, Float, Integer, String +from functools import total_ordering +import sys + Base = declarative_base() class Country(Base): @@ -89,6 +92,7 @@ driver_entry = Table('driver_entries', Base.metadata, Column('id', Integer, primary_key=True)) +@total_ordering class Entry(Base): __tablename__ = 'entries' @@ -117,6 +121,25 @@ class Entry(Base): def __repr__(self): return ('#%s (%s) %s[%d]' % (self.car_no, ', '.join([driver.__repr__().decode('utf8') for driver in self.drivers]), self.result, self.result_group)).encode('utf8') + def __eq__(self, other): + return self.id == other.id + + def __lt__(self, other): + try: + self_result = int(self.result) + except ValueError: + self_result = sys.maxint + try: + other_result = int(other.result) + except ValueError: + other_result = sys.maxint + if self_result == other_result: + if self.result_group == other.result_group: + return self.id < other.id + else: + return self.result_group < other.result_group + else: + return self_result < other_result class Race(Base): __tablename__ = 'races' |