From d848f046503dacc5423a840d483fe7e5edc07ca3 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 19 Sep 2016 23:15:14 +0100 Subject: [PATCH] trivial: Don't shadow built-ins * Don't use 'str', 'id', 'max', etc. as variable names * Remove unnecessary use of six.range * Remove unnecessary use of six.map There is one paramter in xmlrpc that cannot be renamed as it could break some client code. noqa this instead. Signed-off-by: Stephen Finucane Reviewed-by: Daniel Axtens --- patchwork/filters.py | 73 +++++++++++++++---------------- patchwork/models.py | 14 +++--- patchwork/paginator.py | 1 - patchwork/parser.py | 9 ++-- patchwork/templatetags/listurl.py | 14 +++--- patchwork/templatetags/person.py | 4 +- patchwork/templatetags/syntax.py | 23 +++++----- patchwork/urls.py | 7 ++- patchwork/views/bundle.py | 4 +- patchwork/views/help.py | 2 +- patchwork/views/patch.py | 14 +++--- patchwork/views/project.py | 3 +- patchwork/views/xmlrpc.py | 2 +- 13 files changed, 80 insertions(+), 90 deletions(-) diff --git a/patchwork/filters.py b/patchwork/filters.py index 56500148..faec89e1 100644 --- a/patchwork/filters.py +++ b/patchwork/filters.py @@ -55,10 +55,13 @@ class Filter(object): that user's delegated patches""" pass - def parse(self, dict): - if self.param not in dict: + def _set_key(self, key): + raise NotImplementedError + + def parse(self, values): + if self.param not in values: return - self._set_key(dict[self.param]) + self._set_key(values[self.param]) def url_without_me(self): return self.filters.querystring_without_filter(self) @@ -89,34 +92,29 @@ class SubmitterFilter(Filter): self.person = None self.person_match = None - def _set_key(self, str): + def _set_key(self, key): self.person = None self.person_match = None submitter_id = None - str = str.strip() - if str == '': + key = key.strip() + if not key: return try: - submitter_id = int(str) + submitter_id = int(key) except ValueError: pass - except: - return if submitter_id: - self.person = Person.objects.get(id=int(str)) + self.person = Person.objects.get(id=submitter_id) self.applied = True return - people = Person.objects.filter(name__icontains=str) - - if not people: - return - - self.person_match = str - self.applied = True + people = Person.objects.filter(name__icontains=key) + if people: + self.person_match = key + self.applied = True def kwargs(self): if self.person: @@ -158,16 +156,16 @@ class StateFilter(Filter): self.state = None self.applied = True - def _set_key(self, str): + def _set_key(self, key): self.state = None - if str == self.any_key: + if key == self.any_key: self.applied = False return try: - self.state = State.objects.get(id=int(str)) - except: + self.state = State.objects.get(id=int(key)) + except (ValueError, State.DoesNotExist): return self.applied = True @@ -193,17 +191,17 @@ class StateFilter(Filter): return None def _form(self): - str = '' % self.param selected = '' if not self.applied: selected = 'selected' - str += '' % (selected, self.any_key) + out += '' % (selected, self.any_key) selected = '' if self.applied and self.state is None: selected = 'selected' - str += '' % ( + out += '' % ( selected, self.action_req_str) for state in State.objects.all(): @@ -211,10 +209,10 @@ class StateFilter(Filter): if self.state and self.state == state: selected = ' selected="true"' - str += '' % ( + out += '' % ( state.id, selected, state.name) - str += '' - return mark_safe(str) + out += '' + return mark_safe(out) def form_function(self): return 'function(form) { return form.x.value }' @@ -235,11 +233,12 @@ class SearchFilter(Filter): self.param = 'q' self.search = None - def _set_key(self, str): - str = str.strip() - if str == '': + def _set_key(self, key): + key = key.strip() + if not key: return - self.search = str + + self.search = key self.applied = True def kwargs(self): @@ -281,11 +280,11 @@ class ArchiveFilter(Filter): None: 'Both' } - def _set_key(self, str): + def _set_key(self, key): self.archive_state = False self.applied = True for (k, v) in self.param_map.items(): - if str == v: + if key == v: self.archive_state = k if self.archive_state is None: self.applied = False @@ -351,8 +350,6 @@ class DelegateFilter(Filter): delegate_id = int(key) except ValueError: pass - except: - return if delegate_id: self.delegate = User.objects.get(id=int(key)) @@ -410,11 +407,11 @@ class Filters: def __init__(self, request): self._filters = [c(self) for c in filterclasses] - self.dict = request.GET + self.values = request.GET self.project = None for f in self._filters: - f.parse(self.dict) + f.parse(self.values) def set_project(self, project): self.project = project @@ -439,7 +436,7 @@ class Filters: def querystring(self, remove=None): params = dict(self.params()) - for (k, v) in self.dict.items(): + for (k, v) in self.values.items(): if k not in params: params[k] = v diff --git a/patchwork/models.py b/patchwork/models.py index e7538703..808c37fd 100644 --- a/patchwork/models.py +++ b/patchwork/models.py @@ -33,7 +33,6 @@ from django.core.urlresolvers import reverse from django.db import models from django.utils.encoding import python_2_unicode_compatible from django.utils.functional import cached_property -from django.utils.six.moves import filter from patchwork.fields import HashField @@ -136,9 +135,8 @@ class UserProfile(models.Model): def name(self): if self.user.first_name or self.user.last_name: - names = list(filter( - bool, [self.user.first_name, self.user.last_name])) - return ' '.join(names) + names = [self.user.first_name, self.user.last_name] + return ' '.join([x for x in names if x]) return self.user.username def contributor_projects(self): @@ -697,10 +695,10 @@ class EmailConfirmation(models.Model): return self.date + self.validity > datetime.datetime.now() def save(self): - max = 1 << 32 - if self.key == '': - str = '%s%s%d' % (self.user, self.email, random.randint(0, max)) - self.key = self._meta.get_field('key').construct(str).hexdigest() + limit = 1 << 32 + if not self.key: + key = '%s%s%d' % (self.user, self.email, random.randint(0, limit)) + self.key = self._meta.get_field('key').construct(key).hexdigest() super(EmailConfirmation, self).save() diff --git a/patchwork/paginator.py b/patchwork/paginator.py index 5ae03468..e31c76c7 100644 --- a/patchwork/paginator.py +++ b/patchwork/paginator.py @@ -21,7 +21,6 @@ from __future__ import absolute_import from django.conf import settings from django.core import paginator -from django.utils.six.moves import range DEFAULT_ITEMS_PER_PAGE = 100 diff --git a/patchwork/parser.py b/patchwork/parser.py index 3389e96c..642b50be 100644 --- a/patchwork/parser.py +++ b/patchwork/parser.py @@ -31,7 +31,6 @@ import re from django.contrib.auth.models import User from django.utils import six -from django.utils.six.moves import map from patchwork.models import (Patch, Project, Person, Comment, State, DelegationRule, Submission, CoverLetter, @@ -45,9 +44,9 @@ list_id_headers = ['List-ID', 'X-Mailing-List', 'X-list'] LOGGER = logging.getLogger(__name__) -def normalise_space(str): +def normalise_space(value): whitespace_re = re.compile(r'\s+') - return whitespace_re.sub(' ', str).strip() + return whitespace_re.sub(' ', value).strip() def clean_header(header): @@ -60,7 +59,7 @@ def clean_header(header): return frag_str.decode() return frag_str - fragments = list(map(decode, decode_header(header))) + fragments = [decode(x) for x in decode_header(header)] return normalise_space(u' '.join(fragments)) @@ -454,7 +453,7 @@ def parse_patch(content): return 1 return int(x) - lc = list(map(fn, match.groups())) + lc = [fn(x) for x in match.groups()] state = 4 patchbuf += buf + line diff --git a/patchwork/templatetags/listurl.py b/patchwork/templatetags/listurl.py index 7e0e3d77..3f28f719 100644 --- a/patchwork/templatetags/listurl.py +++ b/patchwork/templatetags/listurl.py @@ -47,18 +47,18 @@ class ListURLNode(template.defaulttags.URLNode): view_name = template.Variable('list_view.view').resolve(context) kwargs = template.Variable('list_view.view_params').resolve(context) - str = None + path = None try: - str = reverse(view_name, args=[], kwargs=kwargs) + path = reverse(view_name, args=[], kwargs=kwargs) except NoReverseMatch: try: project_name = settings.SETTINGS_MODULE.split('.')[0] - str = reverse(project_name + '.' + view_name, - args=[], kwargs=kwargs) + path = reverse(project_name + '.' + view_name, + args=[], kwargs=kwargs) except NoReverseMatch: raise - if str is None: + if path is None: return '' params = [] @@ -72,9 +72,9 @@ class ListURLNode(template.defaulttags.URLNode): params[smart_str(k, 'ascii')] = v.resolve(context) if not params: - return str + return path - return str + '?' + '&'.join( + return path + '?' + '&'.join( ['%s=%s' % (k, escape(v)) for (k, v) in list(params.items())]) diff --git a/patchwork/templatetags/person.py b/patchwork/templatetags/person.py index 7af021f0..adbabb0e 100644 --- a/patchwork/templatetags/person.py +++ b/patchwork/templatetags/person.py @@ -40,7 +40,7 @@ def personify(person, project): url = reverse('patch-list', kwargs={'project_id': project.linkname}) - str = '%s' % ( + out = '%s' % ( url, SubmitterFilter.param, escape(person.id), linktext) - return mark_safe(str) + return mark_safe(out) diff --git a/patchwork/templatetags/syntax.py b/patchwork/templatetags/syntax.py index 653caf47..341a1819 100644 --- a/patchwork/templatetags/syntax.py +++ b/patchwork/templatetags/syntax.py @@ -24,27 +24,26 @@ import re from django import template from django.utils.html import escape from django.utils.safestring import mark_safe -from django.utils.six.moves import map register = template.Library() -def _compile(t): - (r, str) = t - return (re.compile(r, re.M | re.I), str) +def _compile(value): + regex, cls = value + return re.compile(regex, re.M | re.I), cls -_patch_span_res = list(map(_compile, [ +_patch_span_res = [_compile(x) for x in [ (r'^(Index:?|diff|\-\-\-|\+\+\+|\*\*\*) .*$', 'p_header'), (r'^\+.*$', 'p_add'), (r'^-.*$', 'p_del'), (r'^!.*$', 'p_mod'), -])) +]] -_patch_chunk_re = \ - re.compile(r'^(@@ \-\d+(?:,\d+)? \+\d+(?:,\d+)? @@)(.*)$', re.M | re.I) +_patch_chunk_re = re.compile( + r'^(@@ \-\d+(?:,\d+)? \+\d+(?:,\d+)? @@)(.*)$', re.M | re.I) -_comment_span_res = list(map(_compile, [ +_comment_span_res = [_compile(x) for x in [ (r'^\s*Signed-off-by: .*$', 'signed-off-by'), (r'^\s*Acked-by: .*$', 'acked-by'), (r'^\s*Nacked-by: .*$', 'nacked-by'), @@ -52,7 +51,7 @@ _comment_span_res = list(map(_compile, [ (r'^\s*Reviewed-by: .*$', 'reviewed-by'), (r'^\s*From: .*$', 'from'), (r'^\s*>.*$', 'quote'), -])) +]] _span = '%s' @@ -61,8 +60,8 @@ _span = '%s' def patchsyntax(patch): diff = escape(patch.diff).replace('\r\n', '\n') - for (r, cls) in _patch_span_res: - diff = r.sub(lambda x: _span % (cls, x.group(0)), diff) + for (regex, cls) in _patch_span_res: + diff = regex.sub(lambda x: _span % (cls, x.group(0)), diff) diff = _patch_chunk_re.sub( lambda x: diff --git a/patchwork/urls.py b/patchwork/urls.py index a58c1ee2..33e4781f 100644 --- a/patchwork/urls.py +++ b/patchwork/urls.py @@ -40,8 +40,8 @@ admin.autodiscover() urlpatterns = [ url(r'^admin/', include(admin.site.urls)), - url(r'^$', project_views.list, name='project-list'), - url(r'^project/(?P[^/]+)/list/$', patch_views.list, + url(r'^$', project_views.projects, name='project-list'), + url(r'^project/(?P[^/]+)/list/$', patch_views.patches, name='patch-list'), url(r'^project/(?P[^/]+)/bundles/$', bundle_views.bundles, name='bundle-list'), @@ -60,7 +60,6 @@ urlpatterns = [ url(r'^cover/(?P\d+)/$', cover_views.cover, name='cover-detail'), - # logged-in user stuff url(r'^user/$', user_views.profile, name='user-profile'), url(r'^user/todo/$', user_views.todo_lists, @@ -124,7 +123,7 @@ urlpatterns = [ url(r'^mail/optin/$', mail_views.optin, name='mail-optin'), # help! - url(r'^help/(?P.*)$', help_views.help, name='help'), + url(r'^help/(?P.*)$', help_views.detail, name='help'), ] if 'debug_toolbar' in settings.INSTALLED_APPS: diff --git a/patchwork/views/bundle.py b/patchwork/views/bundle.py index dabaef15..ba569e26 100644 --- a/patchwork/views/bundle.py +++ b/patchwork/views/bundle.py @@ -65,9 +65,9 @@ def setbundle(request): else: patch_ids = get_patch_ids(request.POST) - for id in patch_ids: + for patch_id in patch_ids: try: - patch = Patch.objects.get(id=id) + patch = Patch.objects.get(id=patch_id) bundle.append_patch(patch) except: pass diff --git a/patchwork/views/help.py b/patchwork/views/help.py index 1d429464..7666b0a8 100644 --- a/patchwork/views/help.py +++ b/patchwork/views/help.py @@ -33,7 +33,7 @@ if settings.ENABLE_XMLRPC: help_pages['pwclient/'] = 'pwclient.html' -def help(request, path): +def detail(request, path): if path in help_pages: return render(request, 'patchwork/help/' + help_pages[path]) diff --git a/patchwork/views/patch.py b/patchwork/views/patch.py index 33465681..41a2ec83 100644 --- a/patchwork/views/patch.py +++ b/patchwork/views/patch.py @@ -108,6 +108,13 @@ def patch(request, patch_id): return render(request, 'patchwork/submission.html', context) +def patches(request, project_id): + project = get_object_or_404(Project, linkname=project_id) + context = generic_list(request, project, 'patch-list', + view_args={'project_id': project.linkname}) + return render(request, 'patchwork/list.html', context) + + def content(request, patch_id): patch = get_object_or_404(Patch, id=patch_id) response = HttpResponse(content_type="text/x-patch") @@ -128,10 +135,3 @@ def mbox(request, patch_id): response['Content-Disposition'] = 'attachment; filename=' + \ patch.filename().replace(';', '').replace('\n', '') return response - - -def list(request, project_id): - project = get_object_or_404(Project, linkname=project_id) - context = generic_list(request, project, 'patch-list', - view_args={'project_id': project.linkname}) - return render(request, 'patchwork/list.html', context) diff --git a/patchwork/views/project.py b/patchwork/views/project.py index ea876b33..461618bc 100644 --- a/patchwork/views/project.py +++ b/patchwork/views/project.py @@ -28,7 +28,7 @@ from django.shortcuts import get_object_or_404, render from patchwork.models import Project -def list(request): +def projects(request): projects = Project.objects.all() if projects.count() == 1: @@ -42,7 +42,6 @@ def list(request): return render(request, 'patchwork/projects.html', context) -# TODO(stephenfin): Consistently rename these as list and detail def project(request, project_id): project = get_object_or_404(Project, linkname=project_id) diff --git a/patchwork/views/xmlrpc.py b/patchwork/views/xmlrpc.py index e1eeb609..77e25338 100644 --- a/patchwork/views/xmlrpc.py +++ b/patchwork/views/xmlrpc.py @@ -635,7 +635,7 @@ def patch_get(patch_id): @xmlrpc_method() -def patch_get_by_hash(hash): +def patch_get_by_hash(hash): # noqa """Get a patch by its hash. Retrieve a patch matching a given patch hash, if any exists. -- 2.47.3