More generic changes from 2to3
authorMagnus Hagander <magnus@hagander.net>
Mon, 21 Jan 2019 09:42:05 +0000 (10:42 +0100)
committerMagnus Hagander <magnus@hagander.net>
Sat, 26 Jan 2019 15:19:26 +0000 (16:19 +0100)
18 files changed:
pgweb/account/urls.py
pgweb/core/views.py
pgweb/downloads/views.py
pgweb/featurematrix/models.py
pgweb/security/admin.py
pgweb/security/management/commands/update_cve_links.py
pgweb/security/models.py
pgweb/util/helpers.py
pgweb/util/middleware.py
pgweb/util/signals.py
tools/docs/docload.py
tools/ftp/spider_ftp.py
tools/ftp/spider_yum.py
tools/purgehook/purgehook.py
tools/search/crawler/lib/basecrawler.py
tools/search/crawler/lib/genericsite.py
tools/search/crawler/lib/parsers.py
tools/search/crawler/webcrawler.py

index 9467ca0b9ac497c10429117d412c83307bc10dc0..293836de636d6735e0e07025d933fc0ede7c992b 100644 (file)
@@ -53,5 +53,5 @@ urlpatterns = [
     url(r'^signup/oauth/$', pgweb.account.views.signup_oauth),
 ]
 
-for provider in settings.OAUTH.keys():
+for provider in list(settings.OAUTH.keys()):
     urlpatterns.append(url(r'^login/({0})/$'.format(provider), pgweb.account.oauthclient.login_oauth))
index bd33eebff6f31dd31eaab28c85fa1f45cf16ed61..4ec07709f0a76fdb59609545ec635834b36096cb 100644 (file)
@@ -291,7 +291,7 @@ def admin_purge(request):
         url = request.POST['url']
         expr = request.POST['expr']
         xkey = request.POST['xkey']
-        l = len(filter(None, [url, expr, xkey]))
+        l = len([_f for _f in [url, expr, xkey] if _f])
         if l == 0:
             # Nothing specified
             return HttpResponseRedirect('.')
index 3554e2b7bd94fd8856ed128671a26411ebab4e55..866faa10ff9bfc4c9b1dd2fd1ce1ff50bc90d929 100644 (file)
@@ -5,7 +5,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.conf import settings
 
 import os
-import cPickle as pickle
+import pickle as pickle
 import json
 
 from pgweb.util.decorators import nocache
@@ -74,9 +74,9 @@ def ftpbrowser(request, subpath):
     del allnodes
 
     # Add all directories
-    directories = [{'link': k, 'url': k, 'type': 'd'} for k, v in node.items() if v['t'] == 'd']
+    directories = [{'link': k, 'url': k, 'type': 'd'} for k, v in list(node.items()) if v['t'] == 'd']
     # Add all symlinks (only directories supported)
-    directories.extend([{'link': k, 'url': v['d'], 'type': 'l'} for k, v in node.items() if v['t'] == 'l'])
+    directories.extend([{'link': k, 'url': v['d'], 'type': 'l'} for k, v in list(node.items()) if v['t'] == 'l'])
 
     # A ittle early sorting wouldn't go amiss, so .. ends up at the top
     directories.sort(key=version_sort, reverse=True)
@@ -86,7 +86,7 @@ def ftpbrowser(request, subpath):
         directories.insert(0, {'link': '[Parent Directory]', 'url': '..'})
 
     # Fetch files
-    files = [{'name': k, 'mtime': v['d'], 'size': v['s']} for k, v in node.items() if v['t'] == 'f']
+    files = [{'name': k, 'mtime': v['d'], 'size': v['s']} for k, v in list(node.items()) if v['t'] == 'f']
 
     breadcrumbs = []
     if subpath:
index 9e79ec8bc88586debd41779860681c35c49127b3..4234c6568b3f237ec4c7d63edde0889cc0a43d53 100644 (file)
@@ -6,7 +6,7 @@ choices_map = {
     2: {'str': 'Obsolete', 'class': 'obs', 'bgcolor': '#ddddff'},
     3: {'str': '?', 'class': 'unk', 'bgcolor': '#ffffaa'},
 }
-choices = [(k, v['str']) for k, v in choices_map.items()]
+choices = [(k, v['str']) for k, v in list(choices_map.items())]
 
 
 class FeatureGroup(models.Model):
index 9a3e902a5329bd98f7508508ad0f887d07af0f6b..0d94f6e0cad2affb5f68ed1c9127f09f305007d5 100644 (file)
@@ -29,10 +29,10 @@ class SecurityPatchForm(forms.ModelForm):
 
     def clean(self):
         d = super(SecurityPatchForm, self).clean()
-        vecs = [v for k, v in d.items() if k.startswith('vector_')]
+        vecs = [v for k, v in list(d.items()) if k.startswith('vector_')]
         empty = [v for v in vecs if v == '']
         if len(empty) != len(vecs) and len(empty) != 0:
-            for k in d.keys():
+            for k in list(d.keys()):
                 if k.startswith('vector_'):
                     self.add_error(k, 'Either specify all vector values or none')
         return d
index d07641d42f3e414cb9db0c67a3cf96191f9730af..bc3d27c09d715b12bf369236be6f64efdbccdf37 100644 (file)
@@ -35,4 +35,4 @@ and have been made visible on the website.
 
 {0}
 """.format("\n".join(newly_visible)))
-                map(varnish_purge, SecurityPatch.purge_urls)
+                list(map(varnish_purge, SecurityPatch.purge_urls))
index 659e568a9d8fbd4a4e1f508b05fac8e17299b05d..18418561bec00f0a7d689fccc6c334eb9ec6b860 100644 (file)
@@ -8,7 +8,7 @@ from pgweb.news.models import NewsArticle
 
 import cvss
 
-vector_choices = {k: list(v.items()) for k, v in cvss.constants3.METRICS_VALUE_NAMES.items()}
+vector_choices = {k: list(v.items()) for k, v in list(cvss.constants3.METRICS_VALUE_NAMES.items())}
 
 component_choices = (
     ('core server', 'Core server product'),
@@ -42,7 +42,7 @@ def other_vectors_validator(val):
             if v not in cvss.constants3.METRICS_VALUES[k]:
                 raise ValidationError("Metric {0} has unknown value {1}. Valind ones are: {2}".format(
                     k, v,
-                    ", ".join(cvss.constants3.METRICS_VALUES[k].keys()),
+                    ", ".join(list(cvss.constants3.METRICS_VALUES[k].keys())),
                 ))
     except ValidationError:
         raise
index 68628ce68d423417749421cc9e2b5102c59fd512..f4fee7b46269b7556434b0961794921bb06f367a 100644 (file)
@@ -34,7 +34,7 @@ def simple_form(instancetype, itemid, request, formclass, formtemplate='base/for
             # Set fixed fields. Note that this will not work if the fixed fields are ManyToMany,
             # but we'll fix that sometime in the future
             if fixedfields:
-                for k, v in fixedfields.items():
+                for k, v in list(fixedfields.items()):
                     setattr(r, k, v)
             r.save()
 
index fa7803f75fdc5f51f3d81e5cb1fae02a2ce1be98..a6d1dd914014fa2ec88c460f75c62a0444b2050a 100644 (file)
@@ -51,13 +51,13 @@ class PgMiddleware(object):
             ('font', ["'self'", "fonts.gstatic.com", "data:", ]),
         ])
         if hasattr(response, 'x_allow_extra_sources'):
-            for k, v in response.x_allow_extra_sources.items():
+            for k, v in list(response.x_allow_extra_sources.items()):
                 if k in sources:
                     sources[k].extend(v)
                 else:
                     sources[k] = v
 
-        security_policies = ["{0}-src {1}".format(k, " ".join(v)) for k, v in sources.items()]
+        security_policies = ["{0}-src {1}".format(k, " ".join(v)) for k, v in list(sources.items())]
 
         if not getattr(response, 'x_allow_frames', False):
             response['X-Frame-Options'] = 'DENY'
index 15179cb682b944b890c99561885c2855240e9087..992679ee9aca46ab9be6976d2982359bcdde16f4 100644 (file)
@@ -31,17 +31,14 @@ def _get_full_text_diff(obj, oldobj):
         return "This object does not know how to express ifself."
 
     s = "\n\n".join(["\n".join(
-        filter(
-            lambda x: not x.startswith('@@'),
-            difflib.unified_diff(
-                _get_attr_value(oldobj, n).splitlines(),
-                _get_attr_value(obj, n).splitlines(),
-                n=1,
-                lineterm='',
-                fromfile=n,
-                tofile=n,
-            )
-        )
+        [x for x in difflib.unified_diff(
+            _get_attr_value(oldobj, n).splitlines(),
+            _get_attr_value(obj, n).splitlines(),
+            n=1,
+            lineterm='',
+            fromfile=n,
+            tofile=n,
+        ) if not x.startswith('@@')]
     ) for n in fieldlist if _get_attr_value(oldobj, n) != _get_attr_value(obj, n)])
     if not s:
         return None
@@ -174,7 +171,7 @@ def my_post_save_handler(sender, **kwargs):
             purgelist = instance.purge_urls()
         else:
             purgelist = instance.purge_urls
-        map(varnish_purge, purgelist)
+        list(map(varnish_purge, purgelist))
 
 
 def register_basic_signal_handlers():
index f71e896cadab0934c27f5a774194fe6a5b5e1984..7d03bffd09bcb1a9df6076d151b68d1a2739fcfa 100755 (executable)
@@ -8,7 +8,7 @@ import tarfile
 import re
 import tidy
 from optparse import OptionParser
-from ConfigParser import ConfigParser
+from configparser import ConfigParser
 
 import psycopg2
 
index 8ea3557442e85adda52958cb873095140520a2d3..4582bc2a137774892da4e414c3991821f2cb3023 100755 (executable)
@@ -9,7 +9,7 @@
 import sys
 import os
 from datetime import datetime
-import cPickle as pickle
+import pickle as pickle
 import codecs
 import urllib2
 
index 6528fba0c0a09ea080556495dcdf546096f19972..79ab45bd15e3807369f529a81ebd18fbb1cebde0 100755 (executable)
@@ -28,7 +28,7 @@ archs = ['x86_64', 'i386', 'i686', 'ppc64le']
 
 
 def generate_platform(dirname, familyprefix, ver, installer, systemd):
-    for f in platform_names.keys():
+    for f in list(platform_names.keys()):
         yield ('%s-%s' % (f, ver), {
             't': platform_names[f].format(ver),
             'p': os.path.join(dirname, '{0}-{1}'.format(familyprefix, ver)),
@@ -66,7 +66,7 @@ if __name__ == "__main__":
         reporpms[v] = {}
         vroot = os.path.join(args.yumroot, v)
         for dirpath, dirnames, filenames in os.walk(vroot):
-            rmatches = filter(None, (re_reporpm.match(f) for f in sorted(filenames, reverse=True)))
+            rmatches = [_f for _f in (re_reporpm.match(f) for f in sorted(filenames, reverse=True)) if _f]
 
             if rmatches:
                 familypath = os.path.join(*dirpath.split('/')[-2:])
@@ -76,7 +76,7 @@ if __name__ == "__main__":
                     shortdist, shortver, ver = r.groups(1)
 
                     found = False
-                    for p, pinfo in platforms.items():
+                    for p, pinfo in list(platforms.items()):
                         if pinfo['p'] == familypath and pinfo['f'] == shortdist:
                             if p not in reporpms[v]:
                                 reporpms[v][p] = {}
@@ -89,8 +89,8 @@ if __name__ == "__main__":
                         pass
 
     # Filter all platforms that are not used
-    platforms = {k: v for k, v in platforms.iteritems() if v['found']}
-    for k, v in platforms.iteritems():
+    platforms = {k: v for k, v in platforms.items() if v['found']}
+    for k, v in platforms.items():
         del v['found']
 
     j = json.dumps({'platforms': platforms, 'reporpms': reporpms})
index 2ccfdf887d19778454f5a44acf26698edfa37cf1..3f064028147c96a5062cf67fad38a05ba9065bc1 100755 (executable)
@@ -9,7 +9,7 @@
 import sys
 import os
 import hashlib
-from ConfigParser import ConfigParser
+from configparser import ConfigParser
 import psycopg2
 
 # Templates that we don't want to ban automatically
index aeae20b8d9005539bc1b2964827d1e3c212faad6..c7579cd39e94397f0cb8ffcdb2306842a2781850 100644 (file)
@@ -55,7 +55,7 @@ class BaseSiteCrawler(object):
         curs = self.dbconn.cursor()
         curs.execute("DELETE FROM webpages WHERE site=%(site)s AND NOT suburl=ANY(%(urls)s)", {
             'site': self.siteid,
-            'urls': self.pages_crawled.keys(),
+            'urls': list(self.pages_crawled.keys()),
         })
         if curs.rowcount:
             log("Deleted %s pages no longer accessible" % curs.rowcount)
index 2204cdaca565689852e6399d0032e46fdc81b445..5372d6c5e535449f8427e8980057f25da5b4f15b 100644 (file)
@@ -14,7 +14,7 @@ class GenericSiteCrawler(BaseSiteCrawler):
 
         # We need to seed the crawler with every URL we've already seen, since
         # we don't recrawl the contents if they haven't changed.
-        allpages = self.scantimes.keys()
+        allpages = list(self.scantimes.keys())
 
         # Figure out if there are any excludes to deal with (beyond the
         # robots.txt ones)
index 4315548dddfb37c30f793e88479c5e76ec262fef..c19bf932cd04834a222f5292176730440f0e7698 100644 (file)
@@ -1,10 +1,10 @@
 import re
 import urllib
-from StringIO import StringIO
+from io import StringIO
 import dateutil.parser
 from datetime import timedelta
 
-from HTMLParser import HTMLParser
+from html.parser import HTMLParser
 
 from lib.log import log
 
index ee65b54c1ed7e3d49eb1fa3bb73223c28e807145..9627d3f212f834867593bacfec08a1c2b822b80e 100755 (executable)
@@ -6,7 +6,7 @@ from lib.genericsite import GenericSiteCrawler
 from lib.sitemapsite import SitemapSiteCrawler
 from lib.threadwrapper import threadwrapper
 
-from ConfigParser import ConfigParser
+from configparser import ConfigParser
 import psycopg2
 import time