summaryrefslogtreecommitdiffstats
path: root/pyload/datatypes/PyPackage.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2013-06-09 18:10:22 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2013-06-09 18:10:23 +0200
commit16af85004c84d0d6c626b4f8424ce9647669a0c1 (patch)
tree025d479862d376dbc17e934f4ed20031c8cd97d1 /pyload/datatypes/PyPackage.py
parentadapted to jshint config (diff)
downloadpyload-16af85004c84d0d6c626b4f8424ce9647669a0c1.tar.xz
moved everything from module to pyload
Diffstat (limited to 'pyload/datatypes/PyPackage.py')
-rw-r--r--pyload/datatypes/PyPackage.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/pyload/datatypes/PyPackage.py b/pyload/datatypes/PyPackage.py
new file mode 100644
index 000000000..d23ae88e7
--- /dev/null
+++ b/pyload/datatypes/PyPackage.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+###############################################################################
+# Copyright(c) 2008-2012 pyLoad Team
+# http://www.pyload.org
+#
+# This file is part of pyLoad.
+# pyLoad is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# Subjected to the terms and conditions in LICENSE
+#
+# @author: RaNaN
+###############################################################################
+
+from time import time
+
+from pyload.Api import PackageInfo, PackageStatus
+from pyload.utils.fs import join
+
+class PyPackage:
+ """
+ Represents a package object at runtime
+ """
+
+ @staticmethod
+ def fromInfoData(m, info):
+ return PyPackage(m, info.pid, info.name, info.folder, info.root, info.owner,
+ info.site, info.comment, info.password, info.added, info.tags, info.status, info.shared, info.packageorder)
+
+ def __init__(self, manager, pid, name, folder, root, owner, site, comment, password, added, tags, status,
+ shared, packageorder):
+ self.m = manager
+
+ self.pid = pid
+ self.name = name
+ self.folder = folder
+ self.root = root
+ self.ownerid = owner
+ self.site = site
+ self.comment = comment
+ self.password = password
+ self.added = added
+ self.tags = tags
+ self.status = status
+ self.shared = shared
+ self.packageorder = packageorder
+ self.timestamp = time()
+
+ #: Finish event already fired
+ self.setFinished = False
+
+ @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.ownerid, self.site,
+ self.comment, self.password, self.added, self.tags, self.status, self.shared, self.packageorder
+ )
+
+ def getChildren(self):
+ """get information about contained links"""
+ return self.m.getPackageData(self.pid)["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)
+
+ def release(self):
+ """sync and delete from cache"""
+ self.sync()
+ self.m.releasePackage(self.id)
+
+ def delete(self):
+ self.m.deletePackage(self.id)
+
+ def deleteIfEmpty(self):
+ """ True if deleted """
+ if not len(self.getChildren()):
+ self.delete()
+ return True
+ return False
+
+ def notifyChange(self):
+ self.m.core.eventManager.dispatchEvent("packageUpdated", self.id)
+
+
+class RootPackage(PyPackage):
+ def __init__(self, m, owner):
+ PyPackage.__init__(self, m, -1, "root", "", owner, -2, "", "", "", 0, [], PackageStatus.Ok, False, 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