diff --git a/src/reports/admin.py b/src/reports/admin.py index ccc4106..b541a6c 100644 --- a/src/reports/admin.py +++ b/src/reports/admin.py @@ -32,7 +32,7 @@ def get_urls(self): # Add in each model's views, but without the app label valid_app_labels = set() - for model, model_admin in self._registry.iteritems(): + for model, model_admin in self._registry.items(): urlpatterns.append( url(r'^%s/' % model._meta.model_name, include(model_admin.urls)) diff --git a/src/reports/jsonfield/__init__.py b/src/reports/jsonfield/__init__.py index 63396f0..9c2a0ed 100644 --- a/src/reports/jsonfield/__init__.py +++ b/src/reports/jsonfield/__init__.py @@ -1 +1 @@ -from fields import JSONField, JSONCharField \ No newline at end of file +from .fields import JSONField, JSONCharField diff --git a/src/reports/repo/admin.py b/src/reports/repo/admin.py index b4ca766..64cc498 100644 --- a/src/reports/repo/admin.py +++ b/src/reports/repo/admin.py @@ -443,9 +443,9 @@ def get_urls(self): return my_urls + urls def abi_export(self, request, pk): - print pk + print(pk) abi = ABI.objects.get(pk=pk) - print abi + print(abi) return HttpResponse( json.dumps(abi.listing), content_type='application/json', diff --git a/src/reports/repo/misc.py b/src/reports/repo/misc.py index a7bd111..40c6b05 100644 --- a/src/reports/repo/misc.py +++ b/src/reports/repo/misc.py @@ -1,8 +1,7 @@ import datetime from collections import defaultdict, OrderedDict -import rpmUtils.miscutils -import yum +#import rpmUtils.miscutils def _get_pkg_meta(pkg, platforms, repo_pkg_meta): @@ -64,14 +63,22 @@ def _get_chlog_ver(item): for item in chlog: tm = datetime.date.fromtimestamp(int(item[0])) flat.append("* %s %s" % ( - tm.strftime("%a %b %d %Y"), yum.misc.to_unicode(item[1])) + tm.strftime("%a %b %d %Y"), _to_unicode(item[1])) ) - flat.extend([yum.misc.to_unicode(line) + flat.extend([_to_unicode(line) for line in item[2].splitlines()]) flat.append("") return flat +# Lifted from yum +def _to_unicode(obj, encoding='utf-8', errors='replace'): + if isinstance(obj, basestring): + if not isinstance(obj, unicode): + obj = unicode(obj, encoding, errors) + return obj + + # recursive function that given a list of repos, # will find their common container repos set containers is passed by reference def _find_containers(repos, containers): diff --git a/src/reports/repo/models.py b/src/reports/repo/models.py index 6e8b700..829d42e 100644 --- a/src/reports/repo/models.py +++ b/src/reports/repo/models.py @@ -1,20 +1,20 @@ import datetime import os -import urlparse +import urllib.parse from collections import defaultdict from copy import copy import requests -import yum +#import yum from django.conf import settings from django.contrib.auth.backends import RemoteUserBackend from django.core.cache import cache from django.core.exceptions import ValidationError from django.db import models -from rpmUtils.miscutils import splitFilename +#from rpmUtils.miscutils import splitFilename -import buildservice -import rpmmd +#import buildservice +import repo.rpmmd from .misc import ( _find_containers, _fmt_chlog, _gen_abi, _get_latest_repo_pkg_meta, @@ -272,7 +272,7 @@ def yumrepos(self): for arch in archs: yumrepoid = self.yumrepoid yumrepourl = self.yumrepourl.replace("@ARCH@", arch) - print yumrepourl + print(yumrepourl) cachedir = os.path.join( yum.misc.getCacheDir(tmpdir=settings.YUM_CACHE_DIR), self.yumrepoid, str(arch), @@ -282,8 +282,8 @@ def yumrepos(self): yumrepoid, yumrepourl, cachedir=cachedir ) self._yumrepos.append(yumrepo) - except requests.exceptions.RequestException, exc: - print exc + except requests.exceptions.RequestException as exc: + print(exc) return self._yumrepos @@ -510,7 +510,7 @@ def link_to_repos(self): _repos.add(os.path.dirname(url)) for urlline in _repos: - print urlline + print(urlline) for arch in archs: urlline = urlline.replace(arch, '@ARCH@') parts = urlparse.urlsplit(urlline) @@ -538,9 +538,9 @@ def link_to_repos(self): split_path = path.split("/") while not found and split_path: - print pointer.name - print repo_split_path - print split_path + print(pointer.name) + print(repo_split_path) + print(split_path) if split_path == repo_split_path: found_repos.add(repo) found = True diff --git a/src/reports/repo/rpmmd.py b/src/reports/repo/rpmmd.py index f241679..3289f1f 100644 --- a/src/reports/repo/rpmmd.py +++ b/src/reports/repo/rpmmd.py @@ -5,16 +5,15 @@ import os import tempfile import traceback -import urlparse +import urllib.parse import weakref from collections import defaultdict, namedtuple import requests from lxml import etree -from rpmUtils.miscutils import ( - compareEVR, rangeCompare, splitFilename, stringToVersion -) -from yum import i18n +#from rpmUtils.miscutils import ( +# compareEVR, rangeCompare, splitFilename, stringToVersion +#) class Session(object): @@ -300,7 +299,7 @@ def refresh_cache(self): ), verify=False ) - print req.url + print(req.url) if not req.status_code == requests.codes.ok: req.raise_for_status() @@ -328,7 +327,7 @@ def repomd(self): urlparse.urljoin(self.baseurl, "repodata/repomd.xml"), verify=False ) - print req.url + print(req.url) if req.status_code == requests.codes.ok: self._repomd = etree.fromstring(req.content) self.revision = self._repomd.find("{*}revision").text @@ -710,7 +709,7 @@ def matchingPrcos(self, prcotype, reqtuple): # find the named entry in pkgobj, do the comparsion result = [] for (n, f, (e, v, r)) in self.prco.get(prcotype, []): - if not i18n.str_eq(reqn, n): + if not _str_eq(reqn, n): continue if f == '=': @@ -733,6 +732,21 @@ def matchingPrcos(self, prcotype, reqtuple): return result + # Lifted from yum + def _str_eq(a, b): + if isinstance(a, unicode) == isinstance(b, unicode): + if a == b: + return True + elif _to_utf8(a) == _to_utf8(b): + return True + return False + + # Lifted from yum + def _to_utf8(obj, errors='replace'): + if isinstance(obj, unicode): + obj = obj.encode('utf-8', errors) + return obj + class Patterns(object): def __init__(self, patxml): diff --git a/src/reports/repo/utils.py b/src/reports/repo/utils.py index ad98254..d84660c 100644 --- a/src/reports/repo/utils.py +++ b/src/reports/repo/utils.py @@ -3,10 +3,10 @@ from collections import defaultdict, OrderedDict from copy import copy from tempfile import mkstemp -from urllib2 import HTTPError +from urllib.error import HTTPError import pydot -import yum +#import yum from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.core.files import File @@ -16,7 +16,7 @@ from django.utils.safestring import mark_safe from osc import core -import buildservice +#import buildservice from .misc import ( _exclude_by_meta, _find_comparable_component, _find_unmet_reqs, _fmt_chlog, @@ -340,14 +340,14 @@ def _graph_post_save(sender, **kwargs): graph.dot and os.path.exists(os.path.join(settings.MEDIA_ROOT, graph.dot.name)) ): - print "already exists" + print("already exists") return if graph.image: repos = graph.image.repo.all() elif graph.repo: repos = graph.repo.all() else: - print "neither image or repo" + print("neither image or repo") return packages = None @@ -458,7 +458,7 @@ def _find_obs_pkg(bs, pkg, src_project): # search predicate predicate = "(@name = '%s') and path/@project='%s'" % (pkg, src_project) kwa = {path: predicate} - print kwa + print(kwa) # osc search function wants keyword args result = core.search(bs.apiurl, **kwa) # obs search will return results from subprojects as well, @@ -474,7 +474,7 @@ def _find_obs_pkg(bs, pkg, src_project): pkg, src_project ) kwa = {path: predicate} - print kwa + print(kwa) # osc search function wants keyword args result = core.search(bs.apiurl, **kwa) # obs search will return results from subprojects as well, @@ -535,8 +535,8 @@ def _creq(new_repo, old_repo, submit, delete, comment): tgt_prj_pkgs = bs.getPackageList(str(tgt_prj.name)) if pkg not in src_prj_pkgs: - print pkg - print src_prj + print(pkg) + print(src_prj) pkg = _find_obs_pkg(bs, pkg, src_prj.name) if not pkg: messages.append( @@ -577,7 +577,7 @@ def _creq(new_repo, old_repo, submit, delete, comment): 'tgt_package': pkg, } ) - print options + print(options) all_actions = [] tgts = [] for tgt, actions in options.items(): @@ -598,7 +598,7 @@ def _creq(new_repo, old_repo, submit, delete, comment): weburl, req.reqid, req.reqid, ", ".join(tgts))) ) - except HTTPError, err: + except HTTPError as err: status = etree.fromstring(err.read()) errors.append( "Error while creating request: %s" % status.find(("summary")).text diff --git a/src/reports/settings.py b/src/reports/settings.py index 170c83c..5b63b62 100644 --- a/src/reports/settings.py +++ b/src/reports/settings.py @@ -1,5 +1,5 @@ # Django settings for reports project. -import ConfigParser +import configparser import json from os.path import dirname, expanduser, isabs, isdir, isfile, join, split @@ -7,7 +7,7 @@ PROJECT_DIR = dirname(__file__) -config = ConfigParser.ConfigParser() +config = configparser.ConfigParser() # Read defaults config.readfp(open(join(PROJECT_DIR, "reports.conf"))) # Read overrides from etc and local file for developement setup