def change_quota(self, allow_resume=True): """ Update quota, potentially pausing downloader """ if not self.have_quota and self.quota < 0.5: # Never set, use last period's size per = cfg.quota_period() sums = self.get_sums() if per == 'd': self.left = sums[3] elif per == 'w': self.left = sums[2] elif per == 'm': self.left = sums[1] self.have_quota = bool(cfg.quota_size()) if self.have_quota: quota = cfg.quota_size.get_float() if self.quota: # Quota change, recalculate amount left self.left = quota - (self.quota - self.left) else: # If previously no quota, self.left holds this period's usage self.left = quota - self.left self.quota = quota else: self.quota = self.left = 0L self.update(0) self.next_reset() if self.left > 0.5 and allow_resume: self.resume()
def change_quota(self, allow_resume=True): """ Update quota, potentially pausing downloader """ if not self.have_quota and self.quota < 0.5: # Never set, use last period's size per = cfg.quota_period() sums = self.get_sums() if per == "d": self.left = sums[3] elif per == "w": self.left = sums[2] elif per == "m": self.left = sums[1] self.have_quota = bool(cfg.quota_size()) if self.have_quota: quota = cfg.quota_size.get_float() if self.quota: # Quota change, recalculate amount left self.left = quota - (self.quota - self.left) else: # If previously no quota, self.left holds this period's usage self.left = quota - self.left self.quota = quota else: self.quota = self.left = 0 self.update(0) self.next_reset() if self.left > 0.5 and allow_resume: self.resume()
def read(self): """ Read admin from disk, return True when pause is needed """ res = False quota = self.left = cfg.quota_size.get_float() # Quota for this period self.have_quota = bool(cfg.quota_size()) data = sabnzbd.load_admin(BYTES_FILE_NAME) if not data: data = sabnzbd.load_admin(BYTES_FILE_NAME_OLD) data = fix_keys(data) try: self.last_update, self.grand_total, \ self.day_total, self.week_total, self.month_total, \ self.end_of_day, self.end_of_week, self.end_of_month = data[:8] if len(data) >= 11: self.quota, self.left, self.q_time = data[8:11] logging.debug('Read quota q=%s l=%s reset=%s', self.quota, self.left, self.q_time) if abs(quota - self.quota) > 0.5: self.change_quota() # Get timeline stats if len(data) == 12: self.timeline_total = data[11] else: self.quota = self.left = cfg.quota_size.get_float() res = self.reset_quota() except: self.defaults() # Force update of counters and validate data try: for server in self.grand_total.keys(): self.update(server) except TypeError: self.defaults() self.update() return res
def read(self): """ Read admin from disk, return True when pause is needed """ res = False quota = self.left = cfg.quota_size.get_float() # Quota for this period self.have_quota = bool(cfg.quota_size()) data = sabnzbd.load_admin(BYTES_FILE_NAME) try: ( self.last_update, self.grand_total, self.day_total, self.week_total, self.month_total, self.end_of_day, self.end_of_week, self.end_of_month, self.quota, self.left, self.q_time, self.timeline_total, ) = data if abs(quota - self.quota) > 0.5: self.change_quota() res = self.reset_quota() except: self.defaults() # Force update of counters and validate data try: for server in self.grand_total.keys(): self.update(server) except TypeError: self.defaults() self.update() return res
def change_quota(self, allow_resume=True): """ Update quota, potentially pausing downloader """ if not self.have_quota and self.quota < 0.5: # Never set, use last period's size per = cfg.quota_period() sums = self.get_sums() if per == 'd': self.left = sums[3] elif per == 'w': self.left = sums[2] elif per == 'm': self.left = sums[1] self.have_quota = bool(cfg.quota_size()) if self.have_quota: quota = cfg.quota_size.get_float() self.left = quota - (self.quota - self.left) self.quota = quota else: self.quota = self.left = 0L self.update(0) self.next_reset() if self.left > 0.5: from sabnzbd.downloader import Downloader if allow_resume and cfg.quota_resume() and Downloader.do and Downloader.do.paused: Downloader.do.resume()
def read(self): """ Read admin from disk """ quota = self.left = cfg.quota_size.get_float() # Quota for this period self.have_quota = bool(cfg.quota_size()) data = sabnzbd.load_admin(BYTES_FILE_NAME) try: self.last_update, self.grand_total, \ self.day_total, self.week_total, self.month_total, \ self.end_of_day, self.end_of_week, self.end_of_month = data[:8] if len(data) == 11: self.quota, self.left, self.q_time = data[8:] logging.debug('Read quota q=%s l=%s reset=%s', self.quota, self.left, self.q_time) if abs(quota - self.quota) > 0.5: self.change_quota() else: self.quota = self.left = cfg.quota_size.get_float() res = self.reset_quota() except: # Get the latest data from the database and assign to a fake server logging.debug('Setting default BPS meter values') grand, month, week = sabnzbd.proxy_get_history_size() if grand: self.grand_total['x'] = grand if month: self.month_total['x'] = month if week: self.week_total['x'] = week self.quota = self.left = cfg.quota_size.get_float() res = False # Force update of counters self.update() return res
def read(self): """ Read admin from disk, return True when pause is needed """ res = False quota = self.left = cfg.quota_size.get_float() # Quota for this period self.have_quota = bool(cfg.quota_size()) data = sabnzbd.load_admin(BYTES_FILE_NAME) try: ( self.last_update, self.grand_total, self.day_total, self.week_total, self.month_total, self.end_of_day, self.end_of_week, self.end_of_month, self.quota, self.left, self.q_time, self.timeline_total, ) = data[:12] # Article statistics were only added in 3.2.x if len(data) > 12: self.article_stats_tried, self.article_stats_failed = data[ 12:14] # Trigger quota actions if abs(quota - self.quota) > 0.5: self.change_quota() res = self.reset_quota() except: self.defaults() return res