summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSol Jerome <sol.jerome@gmail.com>2011-04-26 12:13:04 -0500
committerSol Jerome <sol.jerome@gmail.com>2011-04-26 12:13:04 -0500
commit25576cd076d66dfed4bbd98ce1bbb3bc86a6230e (patch)
treee27153c4735139f152442c3f1a6326fdd8134d8d /src
parent7ed0493ee4af4ca14bb7642a29a66cd51f4d5836 (diff)
downloadbcfg2-25576cd076d66dfed4bbd98ce1bbb3bc86a6230e.tar.gz
bcfg2-25576cd076d66dfed4bbd98ce1bbb3bc86a6230e.tar.bz2
bcfg2-25576cd076d66dfed4bbd98ce1bbb3bc86a6230e.zip
Reports: Add full PY3K compatibility
Note that Django still doesn't yet support version 3 so this won't necessarily work until there is a compatible version of django available for use. Signed-off-by: Sol Jerome <sol.jerome@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/Server/Reports/backends.py10
-rwxr-xr-xsrc/lib/Server/Reports/importscript.py13
-rw-r--r--src/lib/Server/Reports/py3kcompat.py24
-rw-r--r--src/lib/Server/Reports/reports/templatetags/bcfg2_tags.py14
-rw-r--r--src/lib/Server/Reports/reports/templatetags/syntax_coloring.py13
-rw-r--r--src/lib/Server/Reports/reports/views.py3
-rw-r--r--src/lib/Server/Reports/settings.py2
-rw-r--r--src/lib/Server/Reports/updatefix.py3
8 files changed, 62 insertions, 20 deletions
diff --git a/src/lib/Server/Reports/backends.py b/src/lib/Server/Reports/backends.py
index 9e37a2e6f..85241932f 100644
--- a/src/lib/Server/Reports/backends.py
+++ b/src/lib/Server/Reports/backends.py
@@ -20,13 +20,15 @@ class NISBackend(object):
return user
- except NISAUTHError, e:
- print(str(e))
+ except NISAUTHError:
+ e = sys.exc_info()[1]
+ print(e)
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
- except User.DoesNotExist, e:
- print(str(e))
+ except User.DoesNotExist:
+ e = sys.exc_info()[1]
+ print(e)
return None
diff --git a/src/lib/Server/Reports/importscript.py b/src/lib/Server/Reports/importscript.py
index 86e176394..0766ffa94 100755
--- a/src/lib/Server/Reports/importscript.py
+++ b/src/lib/Server/Reports/importscript.py
@@ -10,7 +10,8 @@ import os
import sys
try:
import Bcfg2.Server.Reports.settings
-except Exception, e:
+except Exception:
+ e = sys.exc_info()[1]
sys.stderr.write("Failed to load configuration settings. %s\n" % e)
sys.exit(1)
@@ -29,11 +30,13 @@ from datetime import datetime
from time import strptime
from django.db import connection
from Bcfg2.Server.Reports.updatefix import update_database
-import ConfigParser
import logging
import Bcfg2.Logger
import platform
+# Compatibility imports
+from py3kcompat import ConfigParser
+
def build_reason_kwargs(r_ent):
binary_file = False
@@ -140,7 +143,8 @@ def load_stats(cdata, sdata, vlevel, logger, quick=False, location=''):
rr.save()
if vlevel > 0:
logger.info("Created reason: %s" % rr.id)
- except Exception, ex:
+ except Exception:
+ ex = sys.exc_info()[1]
logger.error("Failed to create reason for %s: %s" % (x.get('name'), ex))
rr = Reason(current_exists=x.get('current_exists',
default="True").capitalize() == "True")
@@ -213,7 +217,8 @@ if __name__ == '__main__':
"stats=",
"config=",
"syslog"])
- except GetoptError, mesg:
+ except GetoptError:
+ mesg = sys.exc_info()[1]
# print help information and exit:
print("%s\nUsage:\nimportscript.py [-h] [-v] [-u] [-d] [-S] [-C bcfg2 config file] [-c clients-file] [-s statistics-file]" % (mesg))
raise SystemExit(2)
diff --git a/src/lib/Server/Reports/py3kcompat.py b/src/lib/Server/Reports/py3kcompat.py
new file mode 100644
index 000000000..b334c4466
--- /dev/null
+++ b/src/lib/Server/Reports/py3kcompat.py
@@ -0,0 +1,24 @@
+try:
+ from email.Utils import formatdate
+except ImportError:
+ from email.utils import formatdate
+
+# urllib imports
+try:
+ from urllib import urlopen
+except ImportError:
+ from urllib.request import urlopen
+try:
+ from urlparse import urljoin
+except ImportError:
+ from urllib.parse import urljoin
+
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from io import StringIO
+
+try:
+ import ConfigParser
+except ImportError:
+ import configparser as ConfigParser
diff --git a/src/lib/Server/Reports/reports/templatetags/bcfg2_tags.py b/src/lib/Server/Reports/reports/templatetags/bcfg2_tags.py
index 2d210cc07..629984f26 100644
--- a/src/lib/Server/Reports/reports/templatetags/bcfg2_tags.py
+++ b/src/lib/Server/Reports/reports/templatetags/bcfg2_tags.py
@@ -21,9 +21,9 @@ def page_navigator(context):
path = context['request'].META['PATH_INFO']
total_pages = int(context['total_pages'])
records_per_page = int(context['records_per_page'])
- except KeyError, e:
+ except KeyError:
return fragment
- except ValueError, e:
+ except ValueError:
return fragment
if total_pages < 2:
@@ -84,7 +84,8 @@ def page_navigator(context):
except Resolver404:
path = "404"
- except NoReverseMatch, nr:
+ except NoReverseMatch:
+ nr = sys.exc_info()[1]
path = "NoReverseMatch: %s" % nr
except ValueError:
path = "ValueError"
@@ -193,12 +194,13 @@ class AddUrlFilter(template.Node):
del kwargs['server']
try:
link = reverse(view, args=args, kwargs=kwargs)
- except NoReverseMatch, rm:
+ except NoReverseMatch:
link = reverse(self.fallback_view, args=None,
kwargs={ filter_name: filter_value })
- except NoReverseMatch, rm:
+ except NoReverseMatch:
+ rm = sys.exc_info()[1]
raise rm
- except (Resolver404, ValueError), e:
+ except (Resolver404, ValueError):
pass
return link
diff --git a/src/lib/Server/Reports/reports/templatetags/syntax_coloring.py b/src/lib/Server/Reports/reports/templatetags/syntax_coloring.py
index 43dafb262..291528e2e 100644
--- a/src/lib/Server/Reports/reports/templatetags/syntax_coloring.py
+++ b/src/lib/Server/Reports/reports/templatetags/syntax_coloring.py
@@ -1,3 +1,4 @@
+import sys
from django import template
from django.utils.encoding import smart_unicode, smart_str
from django.utils.html import conditional_escape
@@ -14,6 +15,12 @@ try:
except:
colorize = False
+def u_str(string):
+ if sys.hexversion >= 0x03000000:
+ return string
+ else:
+ return unicode(string)
+
@register.filter
def syntaxhilight(value, arg="diff", autoescape=None):
"""
@@ -26,9 +33,9 @@ def syntaxhilight(value, arg="diff", autoescape=None):
if colorize:
try:
- output = u'<style type="text/css">' \
+ output = u_str('<style type="text/css">') \
+ smart_unicode(HtmlFormatter().get_style_defs('.highlight')) \
- + u'</style>'
+ + u_str('</style>')
lexer = get_lexer_by_name(arg)
output += highlight(value, lexer, HtmlFormatter())
@@ -36,6 +43,6 @@ def syntaxhilight(value, arg="diff", autoescape=None):
except:
return value
else:
- return mark_safe(u'<div class="note-box">Tip: Install pygments for highlighting</div><pre>%s</pre>' % value)
+ return mark_safe(u_str('<div class="note-box">Tip: Install pygments for highlighting</div><pre>%s</pre>') % value)
syntaxhilight.needs_autoescape = True
diff --git a/src/lib/Server/Reports/reports/views.py b/src/lib/Server/Reports/reports/views.py
index 463dec674..ccd71a60e 100644
--- a/src/lib/Server/Reports/reports/views.py
+++ b/src/lib/Server/Reports/reports/views.py
@@ -368,7 +368,8 @@ def render_history_view(request, template='clients/history.html', **kwargs):
iquery,
page,
max_results)
- except PaginationError, page_error:
+ except PaginationError:
+ page_error = sys.exc_info()[1]
if isinstance(page_error[0], HttpResponse):
return page_error[0]
return HttpResponseServerError(page_error)
diff --git a/src/lib/Server/Reports/settings.py b/src/lib/Server/Reports/settings.py
index 121d55a27..0b9d25776 100644
--- a/src/lib/Server/Reports/settings.py
+++ b/src/lib/Server/Reports/settings.py
@@ -1,7 +1,7 @@
import django
# Django settings for bcfg2 reports project.
-from ConfigParser import ConfigParser, NoSectionError, NoOptionError
+from py3kcompat import ConfigParser
c = ConfigParser()
c.read(['/etc/bcfg2.conf', '/etc/bcfg2-web.conf'])
diff --git a/src/lib/Server/Reports/updatefix.py b/src/lib/Server/Reports/updatefix.py
index 5c61f599f..4d3c964f5 100644
--- a/src/lib/Server/Reports/updatefix.py
+++ b/src/lib/Server/Reports/updatefix.py
@@ -74,7 +74,8 @@ def _populate_interaction_entry_counts():
updates.append(row)
try:
cursor.executemany("update reports_interaction set " + count_field[type] + "=%s where id = %s", updates)
- except Exception, e:
+ except Exception:
+ e = sys.exc_info()[1]
print(e)
cursor.close()