Вам необходимо иметь cookie-файл, поскольку люди не могут входить в систему каждый день - например, потому что они вошли в систему автоматически в течение 2 недель, или потому что они на вашем сайте делают что-то не остановитесь без сна и пообедайте на 50 часов :) Вы, вероятно, действительно хотите считать, когда пользователь заходит на сайт.
Теперь можно теоретически записывать каждый доступ и выполнять запросы к базе данных, как было предложено выше, но вы можете подумать (как и я), что он устанавливает неправильный баланс между полезностью и конфиденциальностью + простота.
Указанный вами алгоритм явно очевиден: поскольку вы храните только целое число дней, вы пропускаете пользователя, который входит и выходит каждые 12 часов (ваш алгоритм будет считать количество дней равным 1)
Вот решение, которое я считаю наиболее чистым с двумя полями даты на пользователя в виде не требующего объяснения не объектно-ориентированного Python:
# user.beginStreak----user.lastStreak is the last interval when
# user accessed the site continuously without breaks for more than 25h
def onRegister (user):
...
user.beginStreak = user.endStreak = time() # current time in seconds
...
def onAccess (user):
...
if user.endStreak + 25*60*60 < time():
user.beginStreak = time()
user.endStreak = time()
user.wootBadge = ( user.endStreak-user.beginStreak > 30*24*60*60 )
...
(Пожалуйста, прости мои навыки Pythonic, я академический и первый пользователь сайта)
Вы не можете выполнить эту задачу с переменной one . Я уверен, что кто-то может написать чистый аргумент, подтверждающий этот факт.