diff options
Diffstat (limited to 'module/PyPackage.py')
-rw-r--r-- | module/PyPackage.py | 82 |
1 files changed, 56 insertions, 26 deletions
diff --git a/module/PyPackage.py b/module/PyPackage.py index 970982e68..d0739124f 100644 --- a/module/PyPackage.py +++ b/module/PyPackage.py @@ -14,48 +14,60 @@ along with this program; if not, see <http://www.gnu.org/licenses/>. @author: RaNaN - @author: mkaay """ -class PyPackage(): +from time import time + +from module.utils.fs import join + +from Api import PackageInfo, PackageStatus + +class PyPackage: """ Represents a package object at runtime """ - def __init__(self, manager, id, name, folder, site, password, queue, order): + + @staticmethod + def fromInfoData(m, info): + return PyPackage(m, info.pid, info.name, info.folder, info.root, + info.site, info.comment, info.password, info.added, info.status, info.packageorder) + + def __init__(self, manager, pid, name, folder, root, site, comment, password, added, status, packageorder): self.m = manager - self.m.packageCache[int(id)] = self - self.id = int(id) + self.pid = pid self.name = name self.folder = folder + self.root = root self.site = site + self.comment = comment self.password = password - self.queue = queue - self.order = order - self.setFinished = False - - def toDict(self): - """ Returns a dictionary representation of the data. - - :return: dict: {id: { attr: value }} - """ - return { - self.id: { - 'id': self.id, - 'name': self.name, - 'folder': self.folder, - 'site': self.site, - 'password': self.password, - 'queue': self.queue, - 'order': self.order, - 'links': {} - } - } + self.added = added + self.status = status + self.packageorder = packageorder + self.timestamp = time() + + @property + def id(self): + self.m.core.log.debug("Deprecated package attr .id, use .pid instead") + return self.pid + + def isStale(self): + return self.timestamp + 30 * 60 > time() + + def toInfoData(self): + return PackageInfo(self.pid, self.name, self.folder, self.root, self.site, + self.comment, self.password, self.added, self.status, self.packageorder + ) def getChildren(self): """get information about contained links""" return self.m.getPackageData(self.id)["links"] + def getPath(self, name=""): + self.timestamp = time() + return join(self.m.getPackage(self.root).getPath(), self.folder, name) + def sync(self): """sync with db""" self.m.updatePackage(self) @@ -77,3 +89,21 @@ class PyPackage(): def notifyChange(self): self.m.core.eventManager.dispatchEvent("packageUpdated", self.id) + + +class RootPackage(PyPackage): + def __init__(self, m): + PyPackage.__init__(self, m, -1, "root", "", -2, "", "", "", 0, PackageStatus.Ok, 0) + + def getPath(self, name=""): + return join(self.m.core.config["general"]["download_folder"], name) + + # no database operations + def sync(self): + pass + + def delete(self): + pass + + def release(self): + pass
\ No newline at end of file |