人々は毎日ログインするとは限らないため、Cookie が必要です。 ) 実際には、ユーザーがいつサイトにアクセスしたかをカウントしたいでしょう。
理論的には、上記で提案したように、すべてのアクセスを記録してデータベース クエリを実行することもできますが、(私がそうであるように) 有用性とプライバシー + シンプルさのバランスが間違っていると思うかもしれません。
指定したアルゴリズムには明らかな欠陥があります。整数の日数のみを保存するため、12 時間ごとにログインおよびログアウトするユーザーを見逃すことになります (アルゴリズムは日数を 1 として保持します)。
これは、一種の自明の非オブジェクト指向 Python で、ユーザーごとに2 つの日付フィールドで最もクリーンであることがわかったソリューションです。
# 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スキルを許してください。私はアカデミックで初めてのサイトユーザーです)
このタスクは、 1 つの変数では実行できません。誰かがこの事実を証明する明確な議論を書くことができると確信しています.