mirror of
https://github.com/postgres/pgweb.git
synced 2025-08-10 00:42:06 +00:00
More generic changes from 2to3
This commit is contained in:
@ -53,5 +53,5 @@ urlpatterns = [
|
|||||||
url(r'^signup/oauth/$', pgweb.account.views.signup_oauth),
|
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))
|
urlpatterns.append(url(r'^login/({0})/$'.format(provider), pgweb.account.oauthclient.login_oauth))
|
||||||
|
@ -291,7 +291,7 @@ def admin_purge(request):
|
|||||||
url = request.POST['url']
|
url = request.POST['url']
|
||||||
expr = request.POST['expr']
|
expr = request.POST['expr']
|
||||||
xkey = request.POST['xkey']
|
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:
|
if l == 0:
|
||||||
# Nothing specified
|
# Nothing specified
|
||||||
return HttpResponseRedirect('.')
|
return HttpResponseRedirect('.')
|
||||||
|
@ -5,7 +5,7 @@ from django.views.decorators.csrf import csrf_exempt
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import cPickle as pickle
|
import pickle as pickle
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from pgweb.util.decorators import nocache
|
from pgweb.util.decorators import nocache
|
||||||
@ -74,9 +74,9 @@ def ftpbrowser(request, subpath):
|
|||||||
del allnodes
|
del allnodes
|
||||||
|
|
||||||
# Add all directories
|
# 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)
|
# 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
|
# A ittle early sorting wouldn't go amiss, so .. ends up at the top
|
||||||
directories.sort(key=version_sort, reverse=True)
|
directories.sort(key=version_sort, reverse=True)
|
||||||
@ -86,7 +86,7 @@ def ftpbrowser(request, subpath):
|
|||||||
directories.insert(0, {'link': '[Parent Directory]', 'url': '..'})
|
directories.insert(0, {'link': '[Parent Directory]', 'url': '..'})
|
||||||
|
|
||||||
# Fetch files
|
# 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 = []
|
breadcrumbs = []
|
||||||
if subpath:
|
if subpath:
|
||||||
|
@ -6,7 +6,7 @@ choices_map = {
|
|||||||
2: {'str': 'Obsolete', 'class': 'obs', 'bgcolor': '#ddddff'},
|
2: {'str': 'Obsolete', 'class': 'obs', 'bgcolor': '#ddddff'},
|
||||||
3: {'str': '?', 'class': 'unk', 'bgcolor': '#ffffaa'},
|
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):
|
class FeatureGroup(models.Model):
|
||||||
|
@ -29,10 +29,10 @@ class SecurityPatchForm(forms.ModelForm):
|
|||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
d = super(SecurityPatchForm, self).clean()
|
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 == '']
|
empty = [v for v in vecs if v == '']
|
||||||
if len(empty) != len(vecs) and len(empty) != 0:
|
if len(empty) != len(vecs) and len(empty) != 0:
|
||||||
for k in d.keys():
|
for k in list(d.keys()):
|
||||||
if k.startswith('vector_'):
|
if k.startswith('vector_'):
|
||||||
self.add_error(k, 'Either specify all vector values or none')
|
self.add_error(k, 'Either specify all vector values or none')
|
||||||
return d
|
return d
|
||||||
|
@ -35,4 +35,4 @@ and have been made visible on the website.
|
|||||||
|
|
||||||
{0}
|
{0}
|
||||||
""".format("\n".join(newly_visible)))
|
""".format("\n".join(newly_visible)))
|
||||||
map(varnish_purge, SecurityPatch.purge_urls)
|
list(map(varnish_purge, SecurityPatch.purge_urls))
|
||||||
|
@ -8,7 +8,7 @@ from pgweb.news.models import NewsArticle
|
|||||||
|
|
||||||
import cvss
|
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 = (
|
component_choices = (
|
||||||
('core server', 'Core server product'),
|
('core server', 'Core server product'),
|
||||||
@ -42,7 +42,7 @@ def other_vectors_validator(val):
|
|||||||
if v not in cvss.constants3.METRICS_VALUES[k]:
|
if v not in cvss.constants3.METRICS_VALUES[k]:
|
||||||
raise ValidationError("Metric {0} has unknown value {1}. Valind ones are: {2}".format(
|
raise ValidationError("Metric {0} has unknown value {1}. Valind ones are: {2}".format(
|
||||||
k, v,
|
k, v,
|
||||||
", ".join(cvss.constants3.METRICS_VALUES[k].keys()),
|
", ".join(list(cvss.constants3.METRICS_VALUES[k].keys())),
|
||||||
))
|
))
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
raise
|
raise
|
||||||
|
@ -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,
|
# Set fixed fields. Note that this will not work if the fixed fields are ManyToMany,
|
||||||
# but we'll fix that sometime in the future
|
# but we'll fix that sometime in the future
|
||||||
if fixedfields:
|
if fixedfields:
|
||||||
for k, v in fixedfields.items():
|
for k, v in list(fixedfields.items()):
|
||||||
setattr(r, k, v)
|
setattr(r, k, v)
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
|
@ -51,13 +51,13 @@ class PgMiddleware(object):
|
|||||||
('font', ["'self'", "fonts.gstatic.com", "data:", ]),
|
('font', ["'self'", "fonts.gstatic.com", "data:", ]),
|
||||||
])
|
])
|
||||||
if hasattr(response, 'x_allow_extra_sources'):
|
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:
|
if k in sources:
|
||||||
sources[k].extend(v)
|
sources[k].extend(v)
|
||||||
else:
|
else:
|
||||||
sources[k] = v
|
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):
|
if not getattr(response, 'x_allow_frames', False):
|
||||||
response['X-Frame-Options'] = 'DENY'
|
response['X-Frame-Options'] = 'DENY'
|
||||||
|
@ -31,17 +31,14 @@ def _get_full_text_diff(obj, oldobj):
|
|||||||
return "This object does not know how to express ifself."
|
return "This object does not know how to express ifself."
|
||||||
|
|
||||||
s = "\n\n".join(["\n".join(
|
s = "\n\n".join(["\n".join(
|
||||||
filter(
|
[x for x in difflib.unified_diff(
|
||||||
lambda x: not x.startswith('@@'),
|
_get_attr_value(oldobj, n).splitlines(),
|
||||||
difflib.unified_diff(
|
_get_attr_value(obj, n).splitlines(),
|
||||||
_get_attr_value(oldobj, n).splitlines(),
|
n=1,
|
||||||
_get_attr_value(obj, n).splitlines(),
|
lineterm='',
|
||||||
n=1,
|
fromfile=n,
|
||||||
lineterm='',
|
tofile=n,
|
||||||
fromfile=n,
|
) if not x.startswith('@@')]
|
||||||
tofile=n,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
) for n in fieldlist if _get_attr_value(oldobj, n) != _get_attr_value(obj, n)])
|
) for n in fieldlist if _get_attr_value(oldobj, n) != _get_attr_value(obj, n)])
|
||||||
if not s:
|
if not s:
|
||||||
return None
|
return None
|
||||||
@ -174,7 +171,7 @@ def my_post_save_handler(sender, **kwargs):
|
|||||||
purgelist = instance.purge_urls()
|
purgelist = instance.purge_urls()
|
||||||
else:
|
else:
|
||||||
purgelist = instance.purge_urls
|
purgelist = instance.purge_urls
|
||||||
map(varnish_purge, purgelist)
|
list(map(varnish_purge, purgelist))
|
||||||
|
|
||||||
|
|
||||||
def register_basic_signal_handlers():
|
def register_basic_signal_handlers():
|
||||||
|
@ -8,7 +8,7 @@ import tarfile
|
|||||||
import re
|
import re
|
||||||
import tidy
|
import tidy
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
from ConfigParser import ConfigParser
|
from configparser import ConfigParser
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import cPickle as pickle
|
import pickle as pickle
|
||||||
import codecs
|
import codecs
|
||||||
import urllib2
|
import urllib2
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ archs = ['x86_64', 'i386', 'i686', 'ppc64le']
|
|||||||
|
|
||||||
|
|
||||||
def generate_platform(dirname, familyprefix, ver, installer, systemd):
|
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), {
|
yield ('%s-%s' % (f, ver), {
|
||||||
't': platform_names[f].format(ver),
|
't': platform_names[f].format(ver),
|
||||||
'p': os.path.join(dirname, '{0}-{1}'.format(familyprefix, ver)),
|
'p': os.path.join(dirname, '{0}-{1}'.format(familyprefix, ver)),
|
||||||
@ -66,7 +66,7 @@ if __name__ == "__main__":
|
|||||||
reporpms[v] = {}
|
reporpms[v] = {}
|
||||||
vroot = os.path.join(args.yumroot, v)
|
vroot = os.path.join(args.yumroot, v)
|
||||||
for dirpath, dirnames, filenames in os.walk(vroot):
|
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:
|
if rmatches:
|
||||||
familypath = os.path.join(*dirpath.split('/')[-2:])
|
familypath = os.path.join(*dirpath.split('/')[-2:])
|
||||||
@ -76,7 +76,7 @@ if __name__ == "__main__":
|
|||||||
shortdist, shortver, ver = r.groups(1)
|
shortdist, shortver, ver = r.groups(1)
|
||||||
|
|
||||||
found = False
|
found = False
|
||||||
for p, pinfo in platforms.items():
|
for p, pinfo in list(platforms.items()):
|
||||||
if pinfo['p'] == familypath and pinfo['f'] == shortdist:
|
if pinfo['p'] == familypath and pinfo['f'] == shortdist:
|
||||||
if p not in reporpms[v]:
|
if p not in reporpms[v]:
|
||||||
reporpms[v][p] = {}
|
reporpms[v][p] = {}
|
||||||
@ -89,8 +89,8 @@ if __name__ == "__main__":
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# Filter all platforms that are not used
|
# Filter all platforms that are not used
|
||||||
platforms = {k: v for k, v in platforms.iteritems() if v['found']}
|
platforms = {k: v for k, v in platforms.items() if v['found']}
|
||||||
for k, v in platforms.iteritems():
|
for k, v in platforms.items():
|
||||||
del v['found']
|
del v['found']
|
||||||
|
|
||||||
j = json.dumps({'platforms': platforms, 'reporpms': reporpms})
|
j = json.dumps({'platforms': platforms, 'reporpms': reporpms})
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import hashlib
|
import hashlib
|
||||||
from ConfigParser import ConfigParser
|
from configparser import ConfigParser
|
||||||
import psycopg2
|
import psycopg2
|
||||||
|
|
||||||
# Templates that we don't want to ban automatically
|
# Templates that we don't want to ban automatically
|
||||||
|
@ -55,7 +55,7 @@ class BaseSiteCrawler(object):
|
|||||||
curs = self.dbconn.cursor()
|
curs = self.dbconn.cursor()
|
||||||
curs.execute("DELETE FROM webpages WHERE site=%(site)s AND NOT suburl=ANY(%(urls)s)", {
|
curs.execute("DELETE FROM webpages WHERE site=%(site)s AND NOT suburl=ANY(%(urls)s)", {
|
||||||
'site': self.siteid,
|
'site': self.siteid,
|
||||||
'urls': self.pages_crawled.keys(),
|
'urls': list(self.pages_crawled.keys()),
|
||||||
})
|
})
|
||||||
if curs.rowcount:
|
if curs.rowcount:
|
||||||
log("Deleted %s pages no longer accessible" % curs.rowcount)
|
log("Deleted %s pages no longer accessible" % curs.rowcount)
|
||||||
|
@ -14,7 +14,7 @@ class GenericSiteCrawler(BaseSiteCrawler):
|
|||||||
|
|
||||||
# We need to seed the crawler with every URL we've already seen, since
|
# 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.
|
# 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
|
# Figure out if there are any excludes to deal with (beyond the
|
||||||
# robots.txt ones)
|
# robots.txt ones)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import re
|
import re
|
||||||
import urllib
|
import urllib
|
||||||
from StringIO import StringIO
|
from io import StringIO
|
||||||
import dateutil.parser
|
import dateutil.parser
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from HTMLParser import HTMLParser
|
from html.parser import HTMLParser
|
||||||
|
|
||||||
from lib.log import log
|
from lib.log import log
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ from lib.genericsite import GenericSiteCrawler
|
|||||||
from lib.sitemapsite import SitemapSiteCrawler
|
from lib.sitemapsite import SitemapSiteCrawler
|
||||||
from lib.threadwrapper import threadwrapper
|
from lib.threadwrapper import threadwrapper
|
||||||
|
|
||||||
from ConfigParser import ConfigParser
|
from configparser import ConfigParser
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user