summaryrefslogtreecommitdiffstats
path: root/module/PyPackage.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/PyPackage.py')
-rw-r--r--module/PyPackage.py82
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