From c0e3e0a801e1c5cae2ea6fddd4508572b718d20a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Wed, 9 Dec 2020 13:24:29 +0100 Subject: [PATCH] Update code for Python3 --- display.py | 50 ++++++++++++++++++------------- iwla.py | 6 ++-- plugins/post_analysis/referers.py | 4 +-- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/display.py b/display.py index 101f2ab..f48022f 100644 --- a/display.py +++ b/display.py @@ -76,16 +76,16 @@ class DisplayHTMLBlock(DisplayHTMLRaw): return self.title def setTitle(self, value): - self.title = unicode(value) + self.title = value def setCSSClass(self, cssclass): - self.cssclass = unicode(cssclass) + self.cssclass = cssclass def setTitleCSSClass(self, cssclass): - self.title_cssclass = unicode(cssclass) + self.title_cssclass = cssclass def setValueCSSClass(self, cssclass): - self.value_cssclass = unicode(cssclass) + self.value_cssclass = cssclass def _buildHTML(self): html = u'
' % (self.cssclass) @@ -143,14 +143,14 @@ class DisplayHTMLBlockTable(DisplayHTMLBlock): row >= len(self.rows) or col >= len(self.cols): raise ValueError('Invalid indices %d,%d' % (row, col)) - self.rows[row][col] = unicode(value) + self.rows[row][col] = value def setCellCSSClass(self, row, col, value): if row < 0 or col < 0 or\ row >= len(self.rows) or col >= len(self.cols): raise ValueError('Invalid indices %d,%d' % (row, col)) - self.rows_cssclasses[row][col] = unicode(value) + self.rows_cssclasses[row][col] = value def getCellCSSClass(self, row, col): if row < 0 or col < 0 or\ @@ -169,13 +169,13 @@ class DisplayHTMLBlockTable(DisplayHTMLBlock): if row < 0 or row >= len(self.rows): raise ValueError('Invalid indice %d' % (row)) - self.rows_cssclasses[row] = [unicode(value)] * len(self.rows_cssclasses[row]) + self.rows_cssclasses[row] = [value] * len(self.rows_cssclasses[row]) def setColCSSClass(self, col, value): if col < 0 or col >= len(self.cols): raise ValueError('Invalid indice %d' % (col)) - self.cols_cssclasses[col] = unicode(value) + self.cols_cssclasses[col] = value def setColsCSSClass(self, values): if len(values) != len(self.cols): @@ -255,7 +255,7 @@ class DisplayHTMLBlockTableWithGraph(DisplayHTMLBlockTable): super(DisplayHTMLBlockTableWithGraph, self).appendRow(row) def appendShortTitle(self, short_title): - self.short_titles.append(unicode(short_title)) + self.short_titles.append(short_title) def setShortTitle(self, short_titles): self.short_titles = listToStr(short_titles) @@ -267,8 +267,11 @@ class DisplayHTMLBlockTableWithGraph(DisplayHTMLBlockTable): for i in range(0, self.nb_valid_rows): row = self.raw_rows[i] for j in range(1, len(row)): - if row[j] > self.maxes[j]: - self.maxes[j] = row[j] + try: + if row[j] > self.maxes[j]: + self.maxes[j] = row[j] + except: + continue def _getIconFromStyle(self, style): if style.startswith(u'iwla_page'): icon = u'vp.png' @@ -321,7 +324,7 @@ class DisplayHTMLPage(object): def __init__(self, iwla, title, filename, css_path): self.iwla = iwla - self.title = unicode(title) + self.title = title self.filename = filename self.blocks = [] self.css_path = listToStr(css_path) @@ -421,27 +424,34 @@ class DisplayHTMLBuild(object): # Global functions # -def bytesToStr(bytes): +def bytesToStr(_bytes): suffixes = [u'', u' kB', u' MB', u' GB', u' TB'] + try: + if type(_bytes) != int: + _bytes = int(_bytes, 10) + except: + return _bytes + for i in range(0, len(suffixes)): - if bytes < 1024: break - bytes /= 1024.0 + if _bytes < 1024: break + _bytes /= 1024.0 if i: - return u'%.02f%s' % (bytes, suffixes[i]) + return u'%.02f%s' % (_bytes, suffixes[i]) else: - return u'%d%s' % (bytes, suffixes[i]) + return u'%d%s' % (_bytes, suffixes[i]) def _toStr(v): + return v if type(v) != unicode: return unicode(v) else: return v -def listToStr(l): return map(lambda v : _toStr(v), l) +def listToStr(l): return l #map(lambda v : _toStr(v), l) def generateHTMLLink(url, name=None, max_length=100, prefix=u'http'): - url = unicode(url) - if not name: name = unicode(url) + url = url + if not name: name = url if not url.startswith(prefix): url = u'%s://%s' % (prefix, url) return u'%s' % (url, name[:max_length]) diff --git a/iwla.py b/iwla.py index 25a2dc7..0f54fca 100755 --- a/iwla.py +++ b/iwla.py @@ -482,9 +482,9 @@ class IWLA(object): row = [0, nb_visits, stats['viewed_pages'], stats['viewed_hits'], stats['viewed_bandwidth'], stats['not_viewed_bandwidth']] if nb_days: - average_row = map(lambda v: int(v/nb_days), row) + average_row = list(map(lambda v: int(v/nb_days), row)) else: - average_row = map(lambda v: 0, row) + average_row = list(map(lambda v: 0, row)) average_row[0] = self._('Average') average_row[4] = bytesToStr(average_row[4]) @@ -642,6 +642,8 @@ class IWLA(object): self._callPlugins(conf.POST_HOOK_DIRECTORY) if args.display_only: + if not 'stats' in self.meta_infos.keys(): + self.meta_infos['stats'] = {} self._generateDisplay() return diff --git a/plugins/post_analysis/referers.py b/plugins/post_analysis/referers.py index d4357e9..ee7ed8e 100644 --- a/plugins/post_analysis/referers.py +++ b/plugins/post_analysis/referers.py @@ -19,7 +19,7 @@ # import re -import urllib +import urllib.parse from iwla import IWLA from iplugin import IPlugin @@ -113,7 +113,7 @@ class IWLAPostAnalysisReferers(IPlugin): if groups: key_phrase = groups.groupdict()['key_phrase'] try: - key_phrase = urllib.unquote_plus(key_phrase).decode('utf8') + key_phrase = urllib.parse.unquote_plus(key_phrase) except Exception as e: print(e) continue