Add release download size to API and web interface
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
|
||||
import datetime
|
||||
import enum
|
||||
import os
|
||||
|
||||
from flask import url_for
|
||||
from flask_babel import lazy_gettext
|
||||
@@ -979,6 +980,23 @@ class PackageRelease(db.Model):
|
||||
def file_path(self):
|
||||
return self.url.replace("/uploads/", app.config["UPLOAD_DIR"])
|
||||
|
||||
@property
|
||||
def file_size_bytes(self):
|
||||
path = self.file_path
|
||||
if not os.path.isfile(path):
|
||||
return 0
|
||||
|
||||
file_stats = os.stat(path)
|
||||
return file_stats.st_size
|
||||
|
||||
@property
|
||||
def file_size(self):
|
||||
size = self.file_size_bytes / 1024
|
||||
if size > 1024:
|
||||
return f"{round(size / 1024, 1)} MB"
|
||||
else:
|
||||
return f"{round(size)} KB"
|
||||
|
||||
def as_dict(self):
|
||||
return {
|
||||
"id": self.id,
|
||||
@@ -989,6 +1007,7 @@ class PackageRelease(db.Model):
|
||||
"downloads": self.downloads,
|
||||
"min_minetest_version": self.min_rel and self.min_rel.as_dict(),
|
||||
"max_minetest_version": self.max_rel and self.max_rel.as_dict(),
|
||||
"size": self.file_size_bytes,
|
||||
}
|
||||
|
||||
def as_long_dict(self):
|
||||
@@ -1001,7 +1020,8 @@ class PackageRelease(db.Model):
|
||||
"downloads": self.downloads,
|
||||
"min_minetest_version": self.min_rel and self.min_rel.as_dict(),
|
||||
"max_minetest_version": self.max_rel and self.max_rel.as_dict(),
|
||||
"package": self.package.as_key_dict()
|
||||
"package": self.package.as_key_dict(),
|
||||
"size": self.file_size_bytes,
|
||||
}
|
||||
|
||||
def get_edit_url(self):
|
||||
|
||||
Reference in New Issue
Block a user