Represents a file object at runtime
| 47 | self._size = int(value) |
| 48 | |
| 49 | class PyFile(object): |
| 50 | """ |
| 51 | Represents a file object at runtime |
| 52 | """ |
| 53 | __slots__ = ("m", "id", "url", "name", "size", "_size", "status", "pluginname", "packageid", |
| 54 | "error", "order", "lock", "plugin", "waitUntil", "active", "abort", "statusname", |
| 55 | "reconnected", "progress", "maxprogress", "pluginmodule", "pluginclass") |
| 56 | |
| 57 | def __init__(self, manager, id, url, name, size, status, error, pluginname, package, order): |
| 58 | self.m = manager |
| 59 | |
| 60 | self.id = int(id) |
| 61 | self.url = url |
| 62 | self.name = name |
| 63 | self.size = size |
| 64 | self.status = status |
| 65 | self.pluginname = pluginname |
| 66 | self.packageid = package #should not be used, use package() instead |
| 67 | self.error = error |
| 68 | self.order = order |
| 69 | # database information ends here |
| 70 | |
| 71 | self.lock = RLock() |
| 72 | |
| 73 | self.plugin = None |
| 74 | #self.download = None |
| 75 | |
| 76 | self.waitUntil = 0 # time() + time to wait |
| 77 | |
| 78 | # status attributes |
| 79 | self.active = False #obsolete? |
| 80 | self.abort = False |
| 81 | self.reconnected = False |
| 82 | |
| 83 | self.statusname = None |
| 84 | |
| 85 | self.progress = 0 |
| 86 | self.maxprogress = 100 |
| 87 | |
| 88 | self.m.cache[int(id)] = self |
| 89 | |
| 90 | |
| 91 | # will convert all sizes to ints |
| 92 | size = property(lambda self: self._size, setSize) |
| 93 | |
| 94 | def __repr__(self): |
| 95 | return "PyFile %s: %s@%s" % (self.id, self.name, self.pluginname) |
| 96 | |
| 97 | @lock |
| 98 | def initPlugin(self): |
| 99 | """ inits plugin instance """ |
| 100 | if not self.plugin: |
| 101 | self.pluginmodule = self.m.core.pluginManager.getPlugin(self.pluginname) |
| 102 | self.pluginclass = getattr(self.pluginmodule, self.m.core.pluginManager.getPluginName(self.pluginname)) |
| 103 | self.plugin = self.pluginclass(self) |
| 104 | |
| 105 | @lock |
| 106 | def hasPlugin(self): |
no test coverage detected