summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJelle van der Waa <jelle@vdwaa.nl>2018-02-16 22:08:35 +0100
committerJelle van der Waa <jelle@vdwaa.nl>2019-01-21 21:19:58 +0100
commitc612b1931415ca5e6a7265b4e06cd045e851e07e (patch)
tree89527c2290c58721042a063d26b59cd135a1b12f
parent7742430a261f36a834b93d2b8242cf847d25caa3 (diff)
downloadarchweb-c612b1931415ca5e6a7265b4e06cd045e851e07e.tar.gz
archweb-c612b1931415ca5e6a7265b4e06cd045e851e07e.zip
main: run 2to3
-rw-r--r--devel/forms.py2
-rw-r--r--devel/management/commands/pgp_import.py4
-rw-r--r--devel/management/commands/rematch_developers.py4
-rw-r--r--devel/management/commands/reporead.py10
-rw-r--r--devel/management/commands/reporead_inotify.py2
-rw-r--r--devel/models.py4
-rw-r--r--main/migrations/0001_initial.py2
-rw-r--r--main/models.py12
-rw-r--r--main/templatetags/attributes.py2
-rw-r--r--main/templatetags/details_link.py6
-rw-r--r--main/templatetags/flags.py2
-rw-r--r--main/templatetags/pgp.py10
-rw-r--r--main/tests/test_templatetags_pgp.py4
-rw-r--r--main/utils.py2
-rw-r--r--mirrors/views/api.py6
-rw-r--r--packages/alpm.py6
-rw-r--r--packages/models.py42
-rw-r--r--packages/templatetags/package_extras.py2
-rw-r--r--packages/tests.py2
-rw-r--r--packages/utils.py18
-rw-r--r--packages/views/signoff.py2
-rw-r--r--public/utils.py2
-rw-r--r--todolists/views.py2
-rw-r--r--visualize/views.py4
24 files changed, 76 insertions, 76 deletions
diff --git a/devel/forms.py b/devel/forms.py
index db4428fa..e6ccf68b 100644
--- a/devel/forms.py
+++ b/devel/forms.py
@@ -59,7 +59,7 @@ class NewUserForm(forms.ModelForm):
'alias', 'public_email')
for key in keys:
self.fields[key] = old[key]
- for key, _ in old.items():
+ for key, _ in list(old.items()):
if key not in keys:
self.fields[key] = old[key]
diff --git a/devel/management/commands/pgp_import.py b/devel/management/commands/pgp_import.py
index 2188de3c..455bbe69 100644
--- a/devel/management/commands/pgp_import.py
+++ b/devel/management/commands/pgp_import.py
@@ -141,7 +141,7 @@ def import_keys(keyring):
finder = UserFinder()
# we are dependent on parents coming before children; parse_keydata
# uses an OrderedDict to ensure this is the case.
- for data in keydata.values():
+ for data in list(keydata.values()):
parent_id = None
if data.parent:
parent_data = keydata.get(data.parent, None)
@@ -161,7 +161,7 @@ def import_keys(keyring):
if created:
created_ct += 1
else:
- for k, v in other.items():
+ for k, v in list(other.items()):
if getattr(dkey, k) != v:
setattr(dkey, k, v)
needs_save = True
diff --git a/devel/management/commands/rematch_developers.py b/devel/management/commands/rematch_developers.py
index 7178d1d8..9fd7acf1 100644
--- a/devel/management/commands/rematch_developers.py
+++ b/devel/management/commands/rematch_developers.py
@@ -62,7 +62,7 @@ def match_packager(finder):
logger.debug(" found user %s", user.username)
matched_count += 1
- for packager_str, user in mapping.items():
+ for packager_str, user in list(mapping.items()):
package_count += Package.objects.filter(packager__isnull=True,
packager_str=packager_str).update(packager=user)
@@ -88,7 +88,7 @@ def match_flagrequest(finder):
logger.debug(" found user %s", user.username)
matched_count += 1
- for user_email, user in mapping.items():
+ for user_email, user in list(mapping.items()):
req_count += FlagRequest.objects.filter(user__isnull=True,
user_email=user_email).update(user=user)
diff --git a/devel/management/commands/reporead.py b/devel/management/commands/reporead.py
index 37ba10d8..e2f6cb48 100644
--- a/devel/management/commands/reporead.py
+++ b/devel/management/commands/reporead.py
@@ -107,12 +107,12 @@ class RepoPackage(object):
self.files = None
def populate(self, values):
- for k, v in values.iteritems():
+ for k, v in values.items():
# ensure we stay under our DB character limit
if k in self.bare:
setattr(self, k, v[0][:254])
elif k in self.number:
- setattr(self, k, long(v[0]))
+ setattr(self, k, int(v[0]))
elif k in ('desc', 'pgpsig'):
# do NOT prune these values at all
setattr(self, k, v[0])
@@ -145,8 +145,8 @@ class RepoPackage(object):
def full_version(self):
'''Very similar to the main.models.Package method.'''
if self.epoch > 0:
- return u'%d:%s-%s' % (self.epoch, self.ver, self.rel)
- return u'%s-%s' % (self.ver, self.rel)
+ return '%d:%s-%s' % (self.epoch, self.ver, self.rel)
+ return '%s-%s' % (self.ver, self.rel)
DEPEND_RE = re.compile(r"^(.+?)((>=|<=|=|>|<)(.+))?$")
@@ -573,7 +573,7 @@ def parse_repo(repopath):
repodb.close()
logger.info("Finished repo parsing, %d total packages", len(pkgs))
- return (reponame, pkgs.values())
+ return (reponame, list(pkgs.values()))
def locate_arch(arch):
"Check if arch is valid."
diff --git a/devel/management/commands/reporead_inotify.py b/devel/management/commands/reporead_inotify.py
index fadcb881..eb183060 100644
--- a/devel/management/commands/reporead_inotify.py
+++ b/devel/management/commands/reporead_inotify.py
@@ -187,7 +187,7 @@ class EventHandler(pyinotify.ProcessEvent):
# we really want a single path to arch mapping, so massage the data
arch_paths = kwargs['arch_paths']
- for arch, paths in arch_paths.items():
+ for arch, paths in list(arch_paths.items()):
self.arch_lookup.update((path.rstrip('/'), arch) for path in paths)
def process_default(self, event):
diff --git a/devel/models.py b/devel/models.py
index 4322df06..b5300d07 100644
--- a/devel/models.py
+++ b/devel/models.py
@@ -95,7 +95,7 @@ class MasterKey(models.Model):
get_latest_by = 'created'
def __unicode__(self):
- return u'%s, created %s' % (
+ return '%s, created %s' % (
self.owner.get_full_name(), self.created)
@@ -128,7 +128,7 @@ class PGPSignature(models.Model):
verbose_name = 'PGP signature'
def __unicode__(self):
- return u'%s → %s' % (self.signer, self.signee)
+ return '%s → %s' % (self.signer, self.signee)
pre_save.connect(set_created_field, sender=UserProfile,
diff --git a/main/migrations/0001_initial.py b/main/migrations/0001_initial.py
index 8349d4b9..6c87bf7e 100644
--- a/main/migrations/0001_initial.py
+++ b/main/migrations/0001_initial.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
+
from django.db import models, migrations
import main.fields
diff --git a/main/models.py b/main/models.py
index 476ee017..446c33ea 100644
--- a/main/models.py
+++ b/main/models.py
@@ -124,8 +124,8 @@ class Package(models.Model):
@property
def full_version(self):
if self.epoch > 0:
- return u'%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
- return u'%s-%s' % (self.pkgver, self.pkgrel)
+ return '%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
+ return '%s-%s' % (self.pkgver, self.pkgrel)
def get_absolute_url(self):
return '/packages/%s/%s/%s/' % (self.repo.name.lower(),
@@ -417,13 +417,13 @@ class Package(models.Model):
'''attempt to locate this package anywhere else, regardless of
architecture or repository. Excludes this package from the list.'''
names = [self.pkgname]
- if self.pkgname.startswith(u'lib32-'):
+ if self.pkgname.startswith('lib32-'):
names.append(self.pkgname[6:])
- elif self.pkgname.endswith(u'-multilib'):
+ elif self.pkgname.endswith('-multilib'):
names.append(self.pkgname[:-9])
else:
- names.append(u'lib32-' + self.pkgname)
- names.append(self.pkgname + u'-multilib')
+ names.append('lib32-' + self.pkgname)
+ names.append(self.pkgname + '-multilib')
return Package.objects.normal().filter(
pkgname__in=names).exclude(id=self.id).order_by(
'arch__name', 'repo__name')
diff --git a/main/templatetags/attributes.py b/main/templatetags/attributes.py
index bd4ccf3d..ab09b63e 100644
--- a/main/templatetags/attributes.py
+++ b/main/templatetags/attributes.py
@@ -9,7 +9,7 @@ def attribute(value, arg):
"""Gets an attribute of an object dynamically from a string name"""
if hasattr(value, str(arg)):
return getattr(value, arg)
- elif hasattr(value, 'has_key') and value.has_key(arg):
+ elif hasattr(value, 'has_key') and arg in value:
return value[arg]
elif numeric_test.match(str(arg)) and len(value) > int(arg):
return value[int(arg)]
diff --git a/main/templatetags/details_link.py b/main/templatetags/details_link.py
index c9c0521a..582ffa1b 100644
--- a/main/templatetags/details_link.py
+++ b/main/templatetags/details_link.py
@@ -1,4 +1,4 @@
-from urllib import urlencode, quote as urlquote, unquote
+from urllib.parse import urlencode, quote as urlquote, unquote
from django import template
from main.templatetags import pgp
@@ -8,7 +8,7 @@ register = template.Library()
def link_encode(url, query):
# massage the data into all utf-8 encoded strings first, so urlencode
# doesn't barf at the data we pass it
- query = {k: unicode(v).encode('utf-8') for k, v in query.items()}
+ query = {k: str(v).encode('utf-8') for k, v in list(query.items())}
data = urlencode(query)
return "%s?%s" % (url, data)
@@ -70,7 +70,7 @@ def pgp_key_link(key_id, link_text=None):
def url_unquote(original_url):
try:
url = original_url
- if isinstance(url, unicode):
+ if isinstance(url, str):
url = url.encode('ascii')
url = unquote(url).decode('utf-8')
return url
diff --git a/main/templatetags/flags.py b/main/templatetags/flags.py
index fafcb5aa..d47ee707 100644
--- a/main/templatetags/flags.py
+++ b/main/templatetags/flags.py
@@ -9,7 +9,7 @@ def country_flag(country):
if not country:
return ''
return format_html('<span class="fam-flag fam-flag-%s" title="%s"></span> ' % (
- unicode(country.code).lower(), unicode(country.name)))
+ str(country.code).lower(), str(country.name)))
# vim: set ts=4 sw=4 et:
diff --git a/main/templatetags/pgp.py b/main/templatetags/pgp.py
index f8c99574..4597e10b 100644
--- a/main/templatetags/pgp.py
+++ b/main/templatetags/pgp.py
@@ -9,19 +9,19 @@ register = template.Library()
def format_key(key_id):
if len(key_id) in (8, 20):
- return u'0x%s' % key_id
+ return '0x%s' % key_id
elif len(key_id) == 40:
# normal display format is 5 groups of 4 hex chars seperated by spaces,
# double space, then 5 more groups of 4 hex chars
split = tuple(key_id[i:i+4] for i in range(0, 40, 4))
- return u'%s\u00a0 %s' % (' '.join(split[0:5]), ' '.join(split[5:10]))
- return u'0x%s' % key_id
+ return '%s\u00a0 %s' % (' '.join(split[0:5]), ' '.join(split[5:10]))
+ return '0x%s' % key_id
@register.simple_tag
def pgp_key_link(key_id, link_text=None):
if not key_id:
return "Unknown"
- if isinstance(key_id, (int, long)):
+ if isinstance(key_id, int):
key_id = '%X' % key_id
# zero-fill to nearest 8, 16, or 40 chars if necessary
if len(key_id) <= 8:
@@ -57,7 +57,7 @@ def user_pgp_key_link(dev_keys, key_id):
@register.filter
def pgp_fingerprint(key_id):
if not key_id:
- return u''
+ return ''
return mark_safe(format_key(conditional_escape(key_id)))
diff --git a/main/tests/test_templatetags_pgp.py b/main/tests/test_templatetags_pgp.py
index 240de3cb..39ace88b 100644
--- a/main/tests/test_templatetags_pgp.py
+++ b/main/tests/test_templatetags_pgp.py
@@ -13,7 +13,7 @@ class PGPTemplateTest(TestCase):
pgp_key_len = len(pgp_key)
output = format_key(pgp_key)
- spaces = output.count(' ') + output.count(u'\xa0') # nbsp
+ spaces = output.count(' ') + output.count('\xa0') # nbsp
self.assertEqual(pgp_key_len + spaces, len(output))
# 21 - 39 len case
@@ -68,7 +68,7 @@ class PGPTemplateTest(TestCase):
self.assertNotIn("https", pgp_key_link(pgp_key))
def test_pgp_fingerprint(self):
- self.assertEqual(pgp_fingerprint(None), u"")
+ self.assertEqual(pgp_fingerprint(None), "")
keyid = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
fingerprint = pgp_fingerprint(keyid)
self.assertTrue(len(fingerprint) > len(keyid))
diff --git a/main/utils.py b/main/utils.py
index ff976f51..f0b10ef5 100644
--- a/main/utils.py
+++ b/main/utils.py
@@ -1,5 +1,5 @@
try:
- import cPickle as pickle
+ import pickle as pickle
except ImportError:
import pickle
diff --git a/mirrors/views/api.py b/mirrors/views/api.py
index 857b1d1d..268bf330 100644
--- a/mirrors/views/api.py
+++ b/mirrors/views/api.py
@@ -24,7 +24,7 @@ class MirrorStatusJSONEncoder(DjangoJSONEncoder):
if isinstance(obj, MirrorUrl):
data = {attr: getattr(obj, attr) for attr in self.url_attributes}
country = obj.country
- data['country'] = unicode(country.name)
+ data['country'] = str(country.name)
data['country_code'] = country.code
data['isos'] = obj.mirror.isos
data['ipv4'] = obj.has_ipv4
@@ -32,7 +32,7 @@ class MirrorStatusJSONEncoder(DjangoJSONEncoder):
data['details'] = obj.get_full_url()
return data
if isinstance(obj, MirrorProtocol):
- return unicode(obj)
+ return str(obj)
return super(MirrorStatusJSONEncoder, self).default(obj)
@@ -64,7 +64,7 @@ class LocationJSONEncoder(DjangoJSONEncoder):
'id': obj.pk,
'hostname': obj.hostname,
'source_ip': obj.source_ip,
- 'country': unicode(obj.country.name),
+ 'country': str(obj.country.name),
'country_code': obj.country.code,
'ip_version': obj.ip_version,
}
diff --git a/packages/alpm.py b/packages/alpm.py
index 027fadc9..7be096c7 100644
--- a/packages/alpm.py
+++ b/packages/alpm.py
@@ -64,9 +64,9 @@ class AlpmAPI(object):
def main(): # pragma: no cover
api = AlpmAPI()
- print(api.version())
- print(api.vercmp(1, 2))
- print(api.compare_versions(1, '<', 2))
+ print((api.version()))
+ print((api.vercmp(1, 2)))
+ print((api.compare_versions(1, '<', 2)))
if __name__ == '__main__': # pragma: no cover
diff --git a/packages/models.py b/packages/models.py
index 04ad7adb..10808faa 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -42,7 +42,7 @@ class PackageRelation(models.Model):
return Update.objects.filter(pkgbase=self.pkgbase).latest()
def __unicode__(self):
- return u'%s: %s (%s)' % (
+ return '%s: %s (%s)' % (
self.pkgbase, self.user, self.get_type_display())
@@ -94,11 +94,11 @@ class SignoffSpecification(models.Model):
@property
def full_version(self):
if self.epoch > 0:
- return u'%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
- return u'%s-%s' % (self.pkgver, self.pkgrel)
+ return '%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
+ return '%s-%s' % (self.pkgver, self.pkgrel)
def __unicode__(self):
- return u'%s-%s' % (self.pkgbase, self.full_version)
+ return '%s-%s' % (self.pkgbase, self.full_version)
# Fake signoff specs for when we don't have persisted ones in the database.
@@ -109,7 +109,7 @@ FakeSignoffSpecification = namedtuple('FakeSignoffSpecification',
def fake_signoff_spec(arch):
- return FakeSignoffSpecification(arch.required_signoffs, True, False, u'')
+ return FakeSignoffSpecification(arch.required_signoffs, True, False, '')
class SignoffManager(models.Manager):
@@ -163,14 +163,14 @@ class Signoff(models.Model):
@property
def full_version(self):
if self.epoch > 0:
- return u'%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
- return u'%s-%s' % (self.pkgver, self.pkgrel)
+ return '%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
+ return '%s-%s' % (self.pkgver, self.pkgrel)
def __unicode__(self):
- revoked = u''
+ revoked = ''
if self.revoked:
- revoked = u' (revoked)'
- return u'%s-%s: %s%s' % (
+ revoked = ' (revoked)'
+ return '%s-%s: %s%s' % (
self.pkgbase, self.full_version, self.user, revoked)
@@ -208,10 +208,10 @@ class FlagRequest(models.Model):
# handle the case of pkgver and pkgrel being null as this table didn't
# originally have version columns.
if self.pkgver == '' and self.pkgrel == '':
- return u''
+ return ''
if self.epoch > 0:
- return u'%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
- return u'%s-%s' % (self.pkgver, self.pkgrel)
+ return '%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel)
+ return '%s-%s' % (self.pkgver, self.pkgrel)
def get_associated_packages(self):
return Package.objects.normal().filter(
@@ -221,7 +221,7 @@ class FlagRequest(models.Model):
'pkgname', 'repo__name', 'arch__name')
def __unicode__(self):
- return u'%s from %s on %s' % (self.pkgbase, self.who(), self.created)
+ return '%s from %s on %s' % (self.pkgbase, self.who(), self.created)
class UpdateManager(models.Manager):
@@ -313,16 +313,16 @@ class Update(models.Model):
if self.action_flag == ADDITION:
return None
if self.old_epoch > 0:
- return u'%d:%s-%s' % (self.old_epoch, self.old_pkgver, self.old_pkgrel)
- return u'%s-%s' % (self.old_pkgver, self.old_pkgrel)
+ return '%d:%s-%s' % (self.old_epoch, self.old_pkgver, self.old_pkgrel)
+ return '%s-%s' % (self.old_pkgver, self.old_pkgrel)
@property
def new_version(self):
if self.action_flag == DELETION:
return None
if self.new_epoch > 0:
- return u'%d:%s-%s' % (self.new_epoch, self.new_pkgver, self.new_pkgrel)
- return u'%s-%s' % (self.new_pkgver, self.new_pkgrel)
+ return '%d:%s-%s' % (self.new_epoch, self.new_pkgver, self.new_pkgrel)
+ return '%s-%s' % (self.new_pkgver, self.new_pkgrel)
def elsewhere(self):
return Package.objects.normal().filter(
@@ -343,7 +343,7 @@ class Update(models.Model):
self.arch.name, self.pkgname)
def __unicode__(self):
- return u'%s of %s on %s' % (self.get_action_flag_display(),
+ return '%s of %s on %s' % (self.get_action_flag_display(),
self.pkgname, self.created)
@@ -457,7 +457,7 @@ class RelatedToBase(models.Model):
def __unicode__(self):
if self.version:
- return u'%s%s%s' % (self.name, self.comparison, self.version)
+ return '%s%s%s' % (self.name, self.comparison, self.version)
return self.name
class Meta:
@@ -483,7 +483,7 @@ class Depend(RelatedToBase):
'''For depends, we may also have a description and a modifier.'''
to_str = super(Depend, self).__unicode__()
if self.description:
- return u'%s: %s' % (to_str, self.description)
+ return '%s: %s' % (to_str, self.description)
return to_str
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index bc66390e..1cccc2bd 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -19,7 +19,7 @@ class BuildQueryStringNode(template.Node):
# have simply u'\u2603' or a byte string of the UTF-8 value. Force the
# keys and list of values to be byte strings only.
qs = {k.encode('latin-1'): [v.encode('latin-1') for v in vals]
- for k, vals in qs.items()}
+ for k, vals in list(qs.items())}
if 'sort' in qs and self.sortfield in qs['sort']:
if self.sortfield.startswith('-'):
qs['sort'] = [self.sortfield[1:]]
diff --git a/packages/tests.py b/packages/tests.py
index c41db99a..fe47f24b 100644
--- a/packages/tests.py
+++ b/packages/tests.py
@@ -80,7 +80,7 @@ class PackageSearchJson(TestCase):
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertEqual(len(data['results']), 5)
- self.assertEqual(set(map(lambda r: r['pkgname'], data['results'])),
+ self.assertEqual(set([r['pkgname'] for r in data['results']]),
{"coreutils", "glibc", "linux", "pacman", "systemd"})
def test_packagename(self):
diff --git a/packages/utils.py b/packages/utils.py
index dbf8b90c..c1f328f3 100644
--- a/packages/utils.py
+++ b/packages/utils.py
@@ -50,8 +50,8 @@ def get_group_info(include_arches=None):
if 'any' in group_mapping:
any_groups = group_mapping['any']
del group_mapping['any']
- for arch, arch_groups in group_mapping.iteritems():
- for grp in any_groups.itervalues():
+ for arch, arch_groups in group_mapping.items():
+ for grp in any_groups.values():
if grp['name'] in arch_groups:
found = arch_groups[grp['name']]
found['count'] += grp['count']
@@ -66,9 +66,9 @@ def get_group_info(include_arches=None):
# now transform it back into a sorted list, including only the specified
# architectures if we got a list
groups = []
- for key, val in group_mapping.iteritems():
+ for key, val in group_mapping.items():
if not include_arches or key in include_arches:
- groups.extend(val.itervalues())
+ groups.extend(iter(val.values()))
return sorted(groups, key=itemgetter('name', 'arch'))
@@ -318,7 +318,7 @@ class PackageSignoffGroup(object):
return user in (s.user for s in self.signoffs if not s.revoked)
def __unicode__(self):
- return u'%s-%s (%s): %d' % (
+ return '%s-%s (%s): %d' % (
self.pkgbase, self.version, self.arch, len(self.signoffs))
@@ -352,14 +352,14 @@ SELECT DISTINCT s.id
def get_current_signoffs(repos):
'''Returns a list of signoff objects for the given repos.'''
to_fetch = signoffs_id_query(Signoff, repos)
- return Signoff.objects.select_related('user').in_bulk(to_fetch).values()
+ return list(Signoff.objects.select_related('user').in_bulk(to_fetch).values())
def get_current_specifications(repos):
'''Returns a list of signoff specification objects for the given repos.'''
to_fetch = signoffs_id_query(SignoffSpecification, repos)
- return SignoffSpecification.objects.select_related('arch').in_bulk(
- to_fetch).values()
+ return list(SignoffSpecification.objects.select_related('arch').in_bulk(
+ to_fetch).values())
def get_target_repo_map(repos):
@@ -450,7 +450,7 @@ class PackageJSONEncoder(DjangoJSONEncoder):
if isinstance(obj, (PackageGroup, License)):
return obj.name
if isinstance(obj, (Depend, Conflict, Provision, Replacement)):
- return unicode(obj)
+ return str(obj)
elif isinstance(obj, User):
return obj.username
return super(PackageJSONEncoder, self).default(obj)
diff --git a/packages/views/signoff.py b/packages/views/signoff.py
index 8596fa9f..db20f697 100644
--- a/packages/views/signoff.py
+++ b/packages/views/signoff.py
@@ -166,7 +166,7 @@ class SignoffJSONEncoder(DjangoJSONEncoder):
elif isinstance(obj, Signoff):
return {attr: getattr(obj, attr) for attr in self.signoff_attrs}
elif isinstance(obj, Arch) or isinstance(obj, Repo):
- return unicode(obj)
+ return str(obj)
elif isinstance(obj, User):
return obj.username
elif isinstance(obj, set):
diff --git a/public/utils.py b/public/utils.py
index 248bd7d8..cf768129 100644
--- a/public/utils.py
+++ b/public/utils.py
@@ -48,7 +48,7 @@ class RecentUpdate(object):
by_arch = defaultdict(list)
for package in self.others:
by_arch[package.arch].append(package)
- for _, packages in by_arch.items():
+ for _, packages in list(by_arch.items()):
if len(packages) == 1:
yield packages[0]
else:
diff --git a/todolists/views.py b/todolists/views.py
index 85539b7f..740d1155 100644
--- a/todolists/views.py
+++ b/todolists/views.py
@@ -218,7 +218,7 @@ def send_todolist_emails(todo_list, new_packages):
for maint in maints:
maint_packages.setdefault(maint, []).append(todo_package)
- for maint, packages in maint_packages.iteritems():
+ for maint, packages in maint_packages.items():
packages = sorted(packages, key=attrgetter('pkgname', 'arch'))
ctx = {
'todo_packages': packages,
diff --git a/visualize/views.py b/visualize/views.py
index 9c537c20..27b2e03f 100644
--- a/visualize/views.py
+++ b/visualize/views.py
@@ -52,8 +52,8 @@ def arch_repo_data():
repo_groups[repo]['data'].append(values)
data = {
- 'by_arch': { 'name': 'Architectures', 'data': arch_groups.values() },
- 'by_repo': { 'name': 'Repositories', 'data': repo_groups.values() },
+ 'by_arch': { 'name': 'Architectures', 'data': list(arch_groups.values()) },
+ 'by_repo': { 'name': 'Repositories', 'data': list(repo_groups.values()) },
}
return data