Open FatalEagle opened 9 years ago
Please suggest a method of storage for such scoreboards, and how we would change the page presentation, namely adding more information, changing styling, and such.
The simple solution is storing HTML fragment to a file and just serve it from the file if it exists, but that means chain of backward compatibility for all the style and the page would be locked forever. Worse would be setting up file system sharing and other scary stuff should we ever decide to have another server.
You can store data like Participant - solve A time, solve A score, solve B time, solve B score, etc. Then generate the scoreboard from that information instead of submissions and contest submissions.
That prevents further changes to the presentation, namely in the case of deciding to show more information. The other question is where the data goes.
What more information would you show? Number of attempts? I guess in the worst case you could just store all the information available in a submission at the time of freeze.
This isn't a particularly important feature though, as I expect people randomly rejudging other peoples' contest submissions will be a fairly rare occurrence. And we won't be using ACM style scoreboard freezes anytime soon, probably.
This really should be done, since as it stands we can't ever change even simple things (like how time penalty is scored) without affecting prior contests.
The simple solution of only having a frozen
field on submissions is inadequate as it would only be able to prevent rejudging, not scoreboard scoring changes.
Proposed solution:
is_frozen
BooleanField
in Contest
modelContest
is_frozen
, then disable rating abilitiesis_frozen
BooleanField
in Submission
model (#595)Submission
is_frozen
, prevent rejudging of submissions (#595)FrozenRank
model that has:
ForeignKey
of ContestParticipation
this is associated toManyToMany
of which Submission
models were used (i.e. what is shown in the table)/cc @quantum5
In case some people decide to rejudge submissions and potentially mess up the scoreboard. This would be preemptive action against such individuals.
This would freeze the rankings of a scoreboard, preventing any future changes (and preventing other participants from seeing live updates, should the freeze be called into effect before the contest ends, just like ACM ICPC). Randomized solutions and rejudging do not mix.