Separate rolling average downloads from score
This commit is contained in:
@@ -141,6 +141,7 @@ def download_release(package, id):
|
||||
|
||||
Package.query.filter_by(id=package.id).update({
|
||||
"downloads": Package.downloads + 1,
|
||||
"score_downloads": Package.score_downloads + bonus,
|
||||
"score": Package.score + bonus
|
||||
})
|
||||
|
||||
|
||||
@@ -431,7 +431,8 @@ class Package(db.Model):
|
||||
approved = db.Column(db.Boolean, nullable=False, default=False)
|
||||
soft_deleted = db.Column(db.Boolean, nullable=False, default=False)
|
||||
|
||||
score = db.Column(db.Float, nullable=False, default=0)
|
||||
score = db.Column(db.Float, nullable=False, default=0)
|
||||
score_downloads = db.Column(db.Float, nullable=False, default=0)
|
||||
downloads = db.Column(db.Integer, nullable=False, default=0)
|
||||
|
||||
review_thread_id = db.Column(db.Integer, db.ForeignKey("thread.id"), nullable=True, default=None)
|
||||
@@ -720,6 +721,12 @@ class Package(db.Model):
|
||||
if self.getMainScreenshotURL() is None:
|
||||
self.score *= 0.8
|
||||
|
||||
self.recalcScore()
|
||||
|
||||
def recalcScore(self):
|
||||
self.score_downloads = self.score
|
||||
|
||||
|
||||
|
||||
class MetaPackage(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
@@ -20,5 +20,10 @@ from app.tasks import celery
|
||||
|
||||
@celery.task()
|
||||
def updatePackageScores():
|
||||
Package.query.update({ "score": Package.score * 0.95 })
|
||||
Package.query.update({ "score_downloads": Package.score_downloads * 0.95 })
|
||||
db.session.commit()
|
||||
|
||||
for package in Package.query.all():
|
||||
package.recalcScore()
|
||||
|
||||
db.session.commit()
|
||||
|
||||
Reference in New Issue
Block a user