From 76c37ce3acc7a4af0271c7535d4a33042f7749b5 Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Tue, 24 Jul 2012 09:35:55 -0500
Subject: Replace deprecated direct_to_template() with render() shortcut
Now that Django actually provides a concise way to use a RequestContext
object without instantiating it, we can use that rather than the old
function-based generic view that worked well to do the same.
Additionally, these function-based generic views will be gone in Django
1.5, so might as well make the move now.
Signed-off-by: Dan McGee
---
releng/views.py | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
(limited to 'releng/views.py')
diff --git a/releng/views.py b/releng/views.py
index fc81d410..a1bc3b81 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -2,8 +2,7 @@
from django.conf import settings
from django.db.models import Count, Max
from django.http import Http404
-from django.shortcuts import get_object_or_404, redirect
-from django.views.generic.simple import direct_to_template
+from django.shortcuts import get_object_or_404, redirect, render
from .models import (Architecture, BootType, Bootloader, ClockChoice,
Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source,
@@ -73,7 +72,7 @@ def submit_test_result(request):
form = TestForm()
context = {'form': form}
- return direct_to_template(request, 'releng/add.html', context)
+ return render(request, 'releng/add.html', context)
def calculate_option_overview(field_name):
field = Test._meta.get_field(field_name)
@@ -145,7 +144,7 @@ def test_results_overview(request):
'options': all_options,
'iso_url': settings.ISO_LIST_URL,
}
- return direct_to_template(request, 'releng/results.html', context)
+ return render(request, 'releng/results.html', context)
def test_results_iso(request, iso_id):
iso = get_object_or_404(Iso, pk=iso_id)
@@ -154,7 +153,7 @@ def test_results_iso(request, iso_id):
'iso_name': iso.name,
'test_list': test_list
}
- return direct_to_template(request, 'releng/result_list.html', context)
+ return render(request, 'releng/result_list.html', context)
def test_results_for(request, option, value):
if option not in Test._meta.get_all_field_names():
@@ -170,10 +169,10 @@ def test_results_for(request, option, value):
'value_id': value,
'test_list': test_list
}
- return direct_to_template(request, 'releng/result_list.html', context)
+ return render(request, 'releng/result_list.html', context)
def submit_test_thanks(request):
- return direct_to_template(request, "releng/thanks.html", None)
+ return render(request, "releng/thanks.html", None)
def iso_overview(request):
isos = Iso.objects.all().order_by('-pk')
@@ -192,6 +191,6 @@ def iso_overview(request):
context = {
'isos': isos
}
- return direct_to_template(request, 'releng/iso_overview.html', context)
+ return render(request, 'releng/iso_overview.html', context)
# vim: set ts=4 sw=4 et:
--
cgit v1.2.3-54-g00ecf
From bc5dab41a82ff980c51dd4e408983e32886721bb Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Mon, 13 Aug 2012 10:11:20 -0500
Subject: releng views code cleanup
Signed-off-by: Dan McGee
---
releng/views.py | 54 +++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 37 insertions(+), 17 deletions(-)
(limited to 'releng/views.py')
diff --git a/releng/views.py b/releng/views.py
index a1bc3b81..67b3cb4a 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -8,11 +8,13 @@
Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source,
Test)
+
def standard_field(model, empty_label=None, help_text=None, required=True):
return forms.ModelChoiceField(queryset=model.objects.all(),
widget=forms.RadioSelect(), empty_label=empty_label,
help_text=help_text, required=required)
+
class TestForm(forms.ModelForm):
iso = forms.ModelChoiceField(queryset=Iso.objects.filter(
active=True).order_by('-id'))
@@ -24,29 +26,34 @@ class TestForm(forms.ModelForm):
source = standard_field(Source)
clock_choice = standard_field(ClockChoice)
filesystem = standard_field(Filesystem,
- help_text="Verify /etc/fstab, `df -hT` output and commands like " \
+ help_text="Verify /etc/fstab, `df -hT` output and commands like "
"lvdisplay for special modules.")
modules = forms.ModelMultipleChoiceField(queryset=Module.objects.all(),
- help_text="", widget=forms.CheckboxSelectMultiple(), required=False)
+ widget=forms.CheckboxSelectMultiple(), required=False)
bootloader = standard_field(Bootloader,
- help_text="Verify that the entries in the bootloader config looks OK.")
+ help_text="Verify that the entries in the bootloader config "
+ "looks OK.")
rollback_filesystem = standard_field(Filesystem,
- help_text="If you did a rollback followed by a new attempt to setup " \
- "your blockdevices/filesystems, select which option you took here.",
+ help_text="If you did a rollback followed by a new attempt to "
+ "setup your blockdevices/filesystems, select which option you "
+ "took here.",
empty_label="N/A (did not rollback)", required=False)
- rollback_modules = forms.ModelMultipleChoiceField(queryset=Module.objects.all(),
- help_text="If you did a rollback followed by a new attempt to setup " \
- "your blockdevices/filesystems, select which option you took here.",
+ rollback_modules = forms.ModelMultipleChoiceField(
+ queryset=Module.objects.all(),
+ help_text="If you did a rollback followed by a new attempt to "
+ "setup your blockdevices/filesystems, select which option you "
+ "took here.",
widget=forms.CheckboxSelectMultiple(), required=False)
success = forms.BooleanField(
- help_text="Only check this if everything went fine. " \
- "If you ran into problems please create a ticket on the " \
- "bugtracker (or check that one already exists) and link to " \
+ help_text="Only check this if everything went fine. "
+ "If you ran into problems please create a ticket on the "
+ "bugtracker (or check that one already exists) and link to "
"it in the comments.",
required=False)
website = forms.CharField(label='',
- widget=forms.TextInput(attrs={'style': 'display:none;'}), required=False)
+ widget=forms.TextInput(attrs={'style': 'display:none;'}),
+ required=False)
class Meta:
model = Test
@@ -59,6 +66,7 @@ class Meta:
"modules": forms.CheckboxSelectMultiple(),
}
+
def submit_test_result(request):
if request.POST:
form = TestForm(request.POST)
@@ -74,6 +82,7 @@ def submit_test_result(request):
context = {'form': form}
return render(request, 'releng/add.html', context)
+
def calculate_option_overview(field_name):
field = Test._meta.get_field(field_name)
model = field.rel.to
@@ -108,6 +117,7 @@ def calculate_option_overview(field_name):
return option
+
def options_fetch_iso(options):
'''Replaces the Iso PK with a full Iso model object in a list of options
used on the overview page. We do it this way to only have to query the Iso
@@ -128,13 +138,19 @@ def options_fetch_iso(options):
return options
+
def test_results_overview(request):
# data structure produced:
- # [ { option, name, is_rollback, values: [ { value, success, failure } ... ] } ... ]
+ # [ {
+ # option, name, is_rollback,
+ # values: [ { value, success, failure } ... ]
+ # }
+ # ...
+ # ]
all_options = []
- fields = [ 'architecture', 'iso_type', 'boot_type', 'hardware_type',
+ fields = ['architecture', 'iso_type', 'boot_type', 'hardware_type',
'install_type', 'source', 'clock_choice', 'filesystem', 'modules',
- 'bootloader', 'rollback_filesystem', 'rollback_modules' ]
+ 'bootloader', 'rollback_filesystem', 'rollback_modules']
for field in fields:
all_options.append(calculate_option_overview(field))
@@ -146,6 +162,7 @@ def test_results_overview(request):
}
return render(request, 'releng/results.html', context)
+
def test_results_iso(request, iso_id):
iso = get_object_or_404(Iso, pk=iso_id)
test_list = iso.test_set.select_related()
@@ -155,6 +172,7 @@ def test_results_iso(request, iso_id):
}
return render(request, 'releng/result_list.html', context)
+
def test_results_for(request, option, value):
if option not in Test._meta.get_all_field_names():
raise Http404
@@ -171,9 +189,11 @@ def test_results_for(request, option, value):
}
return render(request, 'releng/result_list.html', context)
+
def submit_test_thanks(request):
return render(request, "releng/thanks.html", None)
+
def iso_overview(request):
isos = Iso.objects.all().order_by('-pk')
successes = dict(Iso.objects.values_list('pk').filter(
@@ -186,7 +206,7 @@ def iso_overview(request):
# only show "useful" rows, currently active ISOs or those with results
isos = [iso for iso in isos if
- iso.active == True or iso.successes > 0 or iso.failures > 0]
+ iso.active is True or iso.successes > 0 or iso.failures > 0]
context = {
'isos': isos
--
cgit v1.2.3-54-g00ecf
From 1a7e5d22f1c4e948c624d26b4d8c1ed30189acfe Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Sat, 19 Jan 2013 12:06:47 -0600
Subject: Add basic release list and details views
Signed-off-by: Dan McGee
---
feeds.py | 5 +---
releng/models.py | 3 +++
releng/urls.py | 6 +++++
releng/views.py | 13 ++++++++++-
templates/releng/release_detail.html | 24 ++++++++++++++++++++
templates/releng/release_list.html | 44 ++++++++++++++++++++++++++++++++++++
6 files changed, 90 insertions(+), 5 deletions(-)
create mode 100644 templates/releng/release_detail.html
create mode 100644 templates/releng/release_list.html
(limited to 'releng/views.py')
diff --git a/feeds.py b/feeds.py
index c68d3b0e..9721f41c 100644
--- a/feeds.py
+++ b/feeds.py
@@ -175,9 +175,6 @@ def item_title(self, item):
def item_description(self, item):
return item.info_html()
- # TODO: individual release pages
- item_link = '/download/'
-
def item_pubdate(self, item):
return datetime.combine(item.release_date, time()).replace(tzinfo=utc)
@@ -185,7 +182,7 @@ def item_guid(self, item):
# http://diveintomark.org/archives/2004/05/28/howto-atom-id
date = item.release_date
return 'tag:%s,%s:%s' % (Site.objects.get_current().domain,
- date.strftime('%Y-%m-%d'), item.iso_url())
+ date.strftime('%Y-%m-%d'), item.get_absolute_url())
def item_enclosure_url(self, item):
domain = Site.objects.get_current().domain
diff --git a/releng/models.py b/releng/models.py
index 9f091371..8bc54def 100644
--- a/releng/models.py
+++ b/releng/models.py
@@ -127,6 +127,9 @@ class Meta:
def __unicode__(self):
return self.version
+ def get_absolute_url(self):
+ return reverse('releng-release-detail', args=[self.version])
+
def dir_path(self):
return "iso/%s/" % self.version
diff --git a/releng/urls.py b/releng/urls.py
index 8d1b8f24..8413d318 100644
--- a/releng/urls.py
+++ b/releng/urls.py
@@ -1,5 +1,7 @@
from django.conf.urls import include, patterns
+from .views import ReleaseListView, ReleaseDetailView
+
feedback_patterns = patterns('releng.views',
(r'^$', 'test_results_overview', {}, 'releng-test-overview'),
(r'^submit/$', 'submit_test_result', {}, 'releng-test-submit'),
@@ -11,5 +13,9 @@
urlpatterns = patterns('',
(r'^feedback/', include(feedback_patterns)),
+ (r'^releases/$',
+ ReleaseListView.as_view(), {}, 'releng-release-list'),
+ (r'^releases/(?P[-.\w]+)/$',
+ ReleaseDetailView.as_view(), {}, 'releng-release-detail'),
)
# vim: set ts=4 sw=4 et:
diff --git a/releng/views.py b/releng/views.py
index 67b3cb4a..6c49275f 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -3,10 +3,11 @@
from django.db.models import Count, Max
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render
+from django.views.generic import DetailView, ListView
from .models import (Architecture, BootType, Bootloader, ClockChoice,
Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source,
- Test)
+ Test, Release)
def standard_field(model, empty_label=None, help_text=None, required=True):
@@ -213,4 +214,14 @@ def iso_overview(request):
}
return render(request, 'releng/iso_overview.html', context)
+
+class ReleaseListView(ListView):
+ model = Release
+
+
+class ReleaseDetailView(DetailView):
+ model = Release
+ slug_field = 'version'
+ slug_url_kwarg = 'version'
+
# vim: set ts=4 sw=4 et:
diff --git a/templates/releng/release_detail.html b/templates/releng/release_detail.html
new file mode 100644
index 00000000..fec9ce2b
--- /dev/null
+++ b/templates/releng/release_detail.html
@@ -0,0 +1,24 @@
+{% extends "base.html" %}
+{% block title %}Arch Linux - Release: {{ release.version }}{% endblock %}
+
+{% block content %}
+
+
{{ release.version }}
+
+
+ - Release Date: {{ release.release_date|date }}
+ {% if release.kernel_version %}- Kernel Version: {{ release.kernel_version }}
{% endif %}
+ - Available: {{ release.available|yesno }}
+ {% if release.available %}- Torrent
{% endif %}
+ {% if release.available %}- Magnet
{% endif %}
+ - Download Size: {% if release.file_size %}{{ release.file_size|filesizeformat }}{% else %}Unknown{% endif %}
+
+
+ {% if release.info %}
+
Release Notes
+
+
{{ release.info_html }}
+ {% endif %}
+
+{% endblock %}
diff --git a/templates/releng/release_list.html b/templates/releng/release_list.html
new file mode 100644
index 00000000..1657249f
--- /dev/null
+++ b/templates/releng/release_list.html
@@ -0,0 +1,44 @@
+{% extends "base.html" %}
+{% load url from future %}
+
+{% block title %}Arch Linux - Releases{% endblock %}
+
+{% block head %}
+
+{% endblock %}
+
+{% block content %}
+
+
+
Releases
+
+
+
+
+ Release Date |
+ Version |
+ Kernel Version |
+ Available? |
+ Torrent |
+ Magnet |
+ Download Size |
+
+
+
+ {% for item in release_list %}
+
+ {{ item.release_date|date }} |
+ {{ item.version }} |
+ {{ item.kernel_version|default:"" }} |
+ {{ item.available|yesno }} |
+ {% if item.available %}Torrent{% endif %} |
+ {% if item.available %}Magnet{% endif %} |
+ {% if item.file_size %}{{ item.file_size|filesizeformat }}{% endif %} |
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
--
cgit v1.2.3-54-g00ecf
From b642c93aff6bd22013615ae8b51b7a02763e261c Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Sat, 19 Jan 2013 17:38:54 -0600
Subject: Add a view to download the torrent available for a given release
Signed-off-by: Dan McGee
---
releng/urls.py | 15 +++++++++++----
releng/views.py | 16 +++++++++++++++-
2 files changed, 26 insertions(+), 5 deletions(-)
(limited to 'releng/views.py')
diff --git a/releng/urls.py b/releng/urls.py
index 8413d318..76c36345 100644
--- a/releng/urls.py
+++ b/releng/urls.py
@@ -11,11 +11,18 @@
(r'^iso/overview/$', 'iso_overview', {}, 'releng-iso-overview'),
)
-urlpatterns = patterns('',
- (r'^feedback/', include(feedback_patterns)),
- (r'^releases/$',
+releases_patterns = patterns('releng.views',
+ (r'^$',
ReleaseListView.as_view(), {}, 'releng-release-list'),
- (r'^releases/(?P[-.\w]+)/$',
+ (r'^(?P[-.\w]+)/$',
ReleaseDetailView.as_view(), {}, 'releng-release-detail'),
+ (r'^(?P[-.\w]+)/torrent/$',
+ 'release_torrent', {}, 'releng-release-torrent'),
)
+
+urlpatterns = patterns('',
+ (r'^feedback/', include(feedback_patterns)),
+ (r'^releases/', include(releases_patterns)),
+)
+
# vim: set ts=4 sw=4 et:
diff --git a/releng/views.py b/releng/views.py
index 6c49275f..ad4b07d1 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -1,7 +1,9 @@
+from base64 import b64decode
+
from django import forms
from django.conf import settings
from django.db.models import Count, Max
-from django.http import Http404
+from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.views.generic import DetailView, ListView
@@ -224,4 +226,16 @@ class ReleaseDetailView(DetailView):
slug_field = 'version'
slug_url_kwarg = 'version'
+
+def release_torrent(request, version):
+ release = get_object_or_404(Release, version=version)
+ if not release.torrent_data:
+ raise Http404
+ data = b64decode(release.torrent_data)
+ response = HttpResponse(data, content_type='application/x-bittorrent')
+ # TODO: this is duplicated from Release.iso_url()
+ filename = 'archlinux-%s-dual.iso.torrent' % release.version
+ response['Content-Disposition'] = 'attachment; filename=%s' % filename
+ return response
+
# vim: set ts=4 sw=4 et:
--
cgit v1.2.3-54-g00ecf
From b7b24740640e24883cd17fd683e1d465fbb343f8 Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Tue, 16 Apr 2013 22:12:01 -0500
Subject: Various minor code cleanups and fixes
Most of these were suggested by PyCharm, and include everything from
little syntax issues and other bad smells to dead or bad code.
Signed-off-by: Dan McGee
---
devel/management/commands/pgp_import.py | 1 +
devel/models.py | 1 -
devel/utils.py | 2 +-
devel/views.py | 2 +-
main/log.py | 1 -
main/migrations/0029_fill_in_repo_data.py | 1 -
main/models.py | 12 +++++-------
main/utils.py | 1 -
mirrors/management/commands/mirrorcheck.py | 12 +++---------
mirrors/models.py | 2 +-
mirrors/utils.py | 6 +++---
packages/migrations/0002_populate_package_relation.py | 2 --
packages/templatetags/package_extras.py | 4 ++--
packages/utils.py | 2 +-
packages/views/display.py | 2 --
packages/views/flag.py | 3 +--
public/views.py | 1 -
releng/management/commands/syncisos.py | 2 +-
releng/models.py | 2 +-
releng/views.py | 2 +-
retro/templates/retro/index-20030330.html | 1 -
sitestatic/archweb.js | 1 -
todolists/utils.py | 1 -
todolists/views.py | 1 -
visualize/static/visualize.js | 2 +-
25 files changed, 23 insertions(+), 44 deletions(-)
(limited to 'releng/views.py')
diff --git a/devel/management/commands/pgp_import.py b/devel/management/commands/pgp_import.py
index 10e6cfcb..b1f29d77 100644
--- a/devel/management/commands/pgp_import.py
+++ b/devel/management/commands/pgp_import.py
@@ -95,6 +95,7 @@ def parse_keydata(data):
# parse all of the output from our successful GPG command
logger.info("parsing command output")
+ node = None
for line in data.split('\n'):
parts = line.split(':')
if parts[0] == 'pub':
diff --git a/devel/models.py b/devel/models.py
index 67de40a6..4354e0f2 100644
--- a/devel/models.py
+++ b/devel/models.py
@@ -4,7 +4,6 @@
from django.db import models
from django.db.models.signals import pre_save
from django.contrib.auth.models import User
-from django.utils.timezone import now
from django_countries import CountryField
from .fields import PGPKeyField
diff --git a/devel/utils.py b/devel/utils.py
index e8e3a6c4..340841f5 100644
--- a/devel/utils.py
+++ b/devel/utils.py
@@ -131,7 +131,7 @@ def find(self, userstring):
self.username_email, self.user_name)
for matcher in find_methods:
user = matcher(name, email)
- if user != None:
+ if user is not None:
break
self.cache[userstring] = user
diff --git a/devel/views.py b/devel/views.py
index 61c1e568..4258ea7f 100644
--- a/devel/views.py
+++ b/devel/views.py
@@ -34,7 +34,7 @@
@login_required
def index(request):
'''the developer dashboard'''
- if(request.user.is_authenticated()):
+ if request.user.is_authenticated():
inner_q = PackageRelation.objects.filter(user=request.user)
else:
inner_q = PackageRelation.objects.none()
diff --git a/main/log.py b/main/log.py
index 63634874..5c745cc8 100644
--- a/main/log.py
+++ b/main/log.py
@@ -46,7 +46,6 @@ def filter(self, record):
trace = '\n'.join(traceback.format_exception(*record.exc_info))
key = md5(trace).hexdigest()
- duplicate = False
cache = self.cache_module.cache
# Test if the cache works
diff --git a/main/migrations/0029_fill_in_repo_data.py b/main/migrations/0029_fill_in_repo_data.py
index 0887b28c..7da6b1c4 100644
--- a/main/migrations/0029_fill_in_repo_data.py
+++ b/main/migrations/0029_fill_in_repo_data.py
@@ -7,7 +7,6 @@
class Migration(DataMigration):
def forwards(self, orm):
- "Write your forwards methods here."
orm.Repo.objects.filter(name__istartswith='community').update(bugs_project=5, svn_root='community')
orm.Repo.objects.filter(name__iexact='multilib').update(bugs_project=5, svn_root='community')
diff --git a/main/models.py b/main/models.py
index 89215f05..24aeed89 100644
--- a/main/models.py
+++ b/main/models.py
@@ -7,7 +7,6 @@
from django.db.models import Q
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
-from django.utils.timezone import now
from .fields import PositiveBigIntegerField
from .utils import set_created_field
@@ -140,7 +139,7 @@ def get_full_url(self, proto='https'):
@property
def signature(self):
try:
- data = b64decode(self.pgp_signature)
+ data = b64decode(self.pgp_signature.encode('utf-8'))
except TypeError:
return None
if not data:
@@ -274,7 +273,6 @@ def get_depends(self):
Packages will match the testing status of this package if possible.
"""
deps = []
- arches = None
# TODO: we can use list comprehension and an 'in' query to make this
# more effective
for dep in self.depends.all():
@@ -400,13 +398,13 @@ def elsewhere(self):
'''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('lib32-'):
+ if self.pkgname.startswith(u'lib32-'):
names.append(self.pkgname[6:])
- elif self.pkgname.endswith('-multilib'):
+ elif self.pkgname.endswith(u'-multilib'):
names.append(self.pkgname[:-9])
else:
- names.append('lib32-' + self.pkgname)
- names.append(self.pkgname + '-multilib')
+ names.append(u'lib32-' + self.pkgname)
+ names.append(self.pkgname + u'-multilib')
return Package.objects.normal().filter(
pkgname__in=names).exclude(id=self.id).order_by(
'arch__name', 'repo__name')
diff --git a/main/utils.py b/main/utils.py
index 8394e5cd..9ee8db58 100644
--- a/main/utils.py
+++ b/main/utils.py
@@ -3,7 +3,6 @@
except ImportError:
import pickle
-from datetime import datetime
import hashlib
from django.core.cache import cache
diff --git a/mirrors/management/commands/mirrorcheck.py b/mirrors/management/commands/mirrorcheck.py
index d6de8f22..e7dd7b49 100644
--- a/mirrors/management/commands/mirrorcheck.py
+++ b/mirrors/management/commands/mirrorcheck.py
@@ -106,19 +106,13 @@ def parse_lastsync(log, data):
def check_mirror_url(mirror_url, location, timeout):
- if location:
- if location.family == socket.AF_INET6:
- ipopt = '--ipv6'
- elif location.family == socket.AF_INET:
- ipopt = '--ipv4'
-
url = mirror_url.url + 'lastsync'
logger.info("checking URL %s", url)
log = MirrorLog(url=mirror_url, check_time=now(), location=location)
headers = {'User-Agent': 'archweb/1.0'}
req = urllib2.Request(url, None, headers)
+ start = time.time()
try:
- start = time.time()
result = urllib2.urlopen(req, timeout=timeout)
data = result.read()
result.close()
@@ -147,12 +141,12 @@ def check_mirror_url(mirror_url, location, timeout):
elif isinstance(e.reason, socket.error):
log.error = e.reason.args[1]
logger.debug("failed: %s, %s", url, log.error)
- except HTTPException as e:
+ except HTTPException:
# e.g., BadStatusLine
log.is_success = False
log.error = "Exception in processing HTTP request."
logger.debug("failed: %s, %s", url, log.error)
- except socket.timeout as e:
+ except socket.timeout:
log.is_success = False
log.error = "Connection timed out."
logger.debug("failed: %s, %s", url, log.error)
diff --git a/mirrors/models.py b/mirrors/models.py
index 791b0078..d8ac7952 100644
--- a/mirrors/models.py
+++ b/mirrors/models.py
@@ -92,7 +92,7 @@ def clean(self):
families = self.address_families()
self.has_ipv4 = socket.AF_INET in families
self.has_ipv6 = socket.AF_INET6 in families
- except socket.error as e:
+ except socket.error:
# We don't fail in this case; we'll just set both to False
self.has_ipv4 = False
self.has_ipv6 = False
diff --git a/mirrors/utils.py b/mirrors/utils.py
index 5a8bbf5d..531cf005 100644
--- a/mirrors/utils.py
+++ b/mirrors/utils.py
@@ -1,13 +1,13 @@
from datetime import timedelta
from django.db import connection
-from django.db.models import Avg, Count, Max, Min, StdDev
+from django.db.models import Count, Max, Min
from django.utils.dateparse import parse_datetime
from django.utils.timezone import now
from django_countries.fields import Country
from main.utils import cache_function, database_vendor
-from .models import MirrorLog, MirrorProtocol, MirrorUrl
+from .models import MirrorLog, MirrorUrl
DEFAULT_CUTOFF = timedelta(hours=24)
@@ -165,7 +165,7 @@ def get_mirror_errors(cutoff=DEFAULT_CUTOFF, mirror_id=None):
).order_by('-last_occurred', '-error_count')
if mirror_id:
- urls = urls.filter(mirror_id=mirror_id)
+ errors = errors.filter(url__mirror_id=mirror_id)
errors = list(errors)
for err in errors:
diff --git a/packages/migrations/0002_populate_package_relation.py b/packages/migrations/0002_populate_package_relation.py
index 738e068f..b0d32c7a 100644
--- a/packages/migrations/0002_populate_package_relation.py
+++ b/packages/migrations/0002_populate_package_relation.py
@@ -11,7 +11,6 @@ class Migration(DataMigration):
)
def forwards(self, orm):
- "Write your forwards methods here."
# search by pkgbase first and insert those records
qs = orm['main.Package'].objects.exclude(maintainer=None).exclude(
pkgbase=None).distinct().values('pkgbase', 'maintainer_id')
@@ -29,7 +28,6 @@ def forwards(self, orm):
defaults={'user_id': row['maintainer_id']})
def backwards(self, orm):
- "Write your backwards methods here."
if not db.dry_run:
orm.PackageRelation.objects.all().delete()
pass
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index f14fab1e..ef0e1aea 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -53,10 +53,10 @@ def do_buildsortqs(parser, token):
tagname, sortfield = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError(
- "%r tag requires a single argument" % tagname)
+ "%r tag requires a single argument" % token)
if not (sortfield[0] == sortfield[-1] and sortfield[0] in ('"', "'")):
raise template.TemplateSyntaxError(
- "%r tag's argument should be in quotes" % tagname)
+ "%r tag's argument should be in quotes" % token)
return BuildQueryStringNode(sortfield[1:-1])
diff --git a/packages/utils.py b/packages/utils.py
index a4217fbd..4f3b8665 100644
--- a/packages/utils.py
+++ b/packages/utils.py
@@ -391,7 +391,7 @@ def signoffs_id_query(model, repos):
"""
cursor = connection.cursor()
# query pre-process- fill in table name and placeholders for IN
- repo_sql = ','.join(['%s' for r in repos])
+ repo_sql = ','.join(['%s' for _ in repos])
sql = sql % (model._meta.db_table, repo_sql, repo_sql)
repo_ids = [r.pk for r in repos]
# repo_ids are needed twice, so double the array
diff --git a/packages/views/display.py b/packages/views/display.py
index 87424483..021c7ed8 100644
--- a/packages/views/display.py
+++ b/packages/views/display.py
@@ -228,8 +228,6 @@ def download(request, name, repo, arch):
if pkg.arch.agnostic:
# grab the first non-any arch to fake the download path
arch = Arch.objects.exclude(agnostic=True)[0].name
- values = {
- }
url = '{host}{repo}/os/{arch}/{filename}'.format(host=url.url,
repo=pkg.repo.name.lower(), arch=arch, filename=pkg.filename)
return redirect(url)
diff --git a/packages/views/flag.py b/packages/views/flag.py
index 5c76e1d5..39cdcef8 100644
--- a/packages/views/flag.py
+++ b/packages/views/flag.py
@@ -110,7 +110,7 @@ def perform_updates():
subject = '%s package [%s] marked out-of-date' % \
(pkg.repo.name, pkg.pkgname)
for maint in maints:
- if maint.userprofile.notify == True:
+ if maint.userprofile.notify is True:
toemail.append(maint.email)
if toemail:
@@ -133,7 +133,6 @@ def perform_updates():
return redirect('package-flag-confirmed', name=name, repo=repo,
arch=arch)
else:
- initial = {}
form = FlagForm(authenticated=authenticated)
context = {
diff --git a/public/views.py b/public/views.py
index 22cb8759..39273396 100644
--- a/public/views.py
+++ b/public/views.py
@@ -125,7 +125,6 @@ def keys(request):
master_keys = MasterKey.objects.select_related('owner', 'revoker',
'owner__userprofile', 'revoker__userprofile').filter(
revoked__isnull=True)
- master_key_ids = frozenset(key.pgp_key[-16:] for key in master_keys)
sig_counts = PGPSignature.objects.filter(not_expired, valid=True,
signee__in=user_key_ids).order_by().values_list('signer').annotate(
diff --git a/releng/management/commands/syncisos.py b/releng/management/commands/syncisos.py
index c9f61964..f182cc33 100644
--- a/releng/management/commands/syncisos.py
+++ b/releng/management/commands/syncisos.py
@@ -20,7 +20,7 @@ def handle_starttag(self, tag, attrs):
if tag == 'a':
for name, value in attrs:
if name == "href":
- if value != '../' and self.url_re.search(value) != None:
+ if value != '../' and self.url_re.search(value) is not None:
self.hyperlinks.append(value[:-1])
def parse(self, url):
diff --git a/releng/models.py b/releng/models.py
index b95f7d52..5ee2f325 100644
--- a/releng/models.py
+++ b/releng/models.py
@@ -160,7 +160,7 @@ def info_html(self):
def torrent(self):
try:
- data = b64decode(self.torrent_data)
+ data = b64decode(self.torrent_data.encode('utf-8'))
except TypeError:
return None
if not data:
diff --git a/releng/views.py b/releng/views.py
index ad4b07d1..b1c76a4a 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -231,7 +231,7 @@ def release_torrent(request, version):
release = get_object_or_404(Release, version=version)
if not release.torrent_data:
raise Http404
- data = b64decode(release.torrent_data)
+ data = b64decode(release.torrent_data.encode('utf-8'))
response = HttpResponse(data, content_type='application/x-bittorrent')
# TODO: this is duplicated from Release.iso_url()
filename = 'archlinux-%s-dual.iso.torrent' % release.version
diff --git a/retro/templates/retro/index-20030330.html b/retro/templates/retro/index-20030330.html
index 449731af..51cc8ba3 100644
--- a/retro/templates/retro/index-20030330.html
+++ b/retro/templates/retro/index-20030330.html
@@ -232,7 +232,6 @@
-
diff --git a/sitestatic/archweb.js b/sitestatic/archweb.js
index dda22d9e..aa225f5f 100644
--- a/sitestatic/archweb.js
+++ b/sitestatic/archweb.js
@@ -146,7 +146,6 @@ if (typeof $ !== 'undefined' && typeof $.tablesorter !== 'undefined') {
(function($) {
$.fn.enableCheckboxRangeSelection = function() {
var lastCheckbox = null,
- lastElement = null,
spec = this;
spec.unbind("click.checkboxrange");
diff --git a/todolists/utils.py b/todolists/utils.py
index 51a75a3c..7b98c887 100644
--- a/todolists/utils.py
+++ b/todolists/utils.py
@@ -1,5 +1,4 @@
from django.db import connections, router
-from django.db.models import Count
from .models import Todolist, TodolistPackage
from packages.models import Package
diff --git a/todolists/views.py b/todolists/views.py
index 7636d38e..d5b39934 100644
--- a/todolists/views.py
+++ b/todolists/views.py
@@ -9,7 +9,6 @@
from django.views.decorators.cache import never_cache
from django.views.generic import DeleteView
from django.template import Context, loader
-from django.template.defaultfilters import slugify
from django.utils.timezone import now
from main.models import Package, Repo
diff --git a/visualize/static/visualize.js b/visualize/static/visualize.js
index 7e240d44..5004fe6c 100644
--- a/visualize/static/visualize.js
+++ b/visualize/static/visualize.js
@@ -55,7 +55,7 @@ function packages_treemap(chart_id, orderings, default_order) {
var nodes = d3_div.data([json]).selectAll("div")
.data(treemap.nodes, key_func);
/* start out new nodes in the center of the picture area */
- var w_center = jq_div.width() / 2;
+ var w_center = jq_div.width() / 2,
h_center = jq_div.height() / 2;
nodes.enter().append("div")
.attr("class", "treemap-cell")
--
cgit v1.2.3-54-g00ecf