summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngel Velásquez <angvp@archlinux.org>2017-08-23 11:21:03 -0400
committerGitHub <noreply@github.com>2017-08-23 11:21:03 -0400
commitdcc32265ce815882544c2e6568e4c75dc359fc85 (patch)
tree2b8a3e802f37160300745f1c510e9d56196bd1ef
parent5ce4d6ef59fd5ad6f46ab4eecacf6a6d76724407 (diff)
parent9de6b137b8a188f546f3446a7bc3bd7db6954327 (diff)
downloadarchweb-dcc32265ce815882544c2e6568e4c75dc359fc85.tar.gz
archweb-dcc32265ce815882544c2e6568e4c75dc359fc85.zip
Merge pull request #50 from jelly/refactor
Refactor and introduce Pylint to travisci
-rw-r--r--.pylintrc583
-rw-r--r--.travis.yml3
-rw-r--r--devel/forms.py2
-rw-r--r--main/models.py3
-rw-r--r--mirrors/tests.py2
-rw-r--r--packages/templatetags/package_extras.py2
-rw-r--r--packages/tests.py1
-rw-r--r--packages/views/__init__.py4
-rw-r--r--public/utils.py2
-rw-r--r--public/views.py2
-rw-r--r--releng/models.py1
-rw-r--r--releng/tests.py3
-rw-r--r--releng/views.py4
-rw-r--r--urls.py6
14 files changed, 597 insertions, 21 deletions
diff --git a/.pylintrc b/.pylintrc
new file mode 100644
index 00000000..fc540ae7
--- /dev/null
+++ b/.pylintrc
@@ -0,0 +1,583 @@
+[MASTER]
+
+# Specify a configuration file.
+#rcfile=
+
+# Add files or directories to the blacklist. They should be base names, not
+# paths.
+ignore=env
+
+# Pickle collected data for later comparisons.
+persistent=no
+
+# List of plugins (as comma separated values of python modules names) to load,
+# usually to register additional checkers.
+load-plugins=
+
+# Use multiple processes to speed up Pylint.
+# DO NOT CHANGE THIS VALUES >1 HIDE RESULTS!!!!!
+jobs=1
+
+# Allow loading of arbitrary C extensions. Extensions are imported into the
+# active Python interpreter and may run arbitrary code.
+unsafe-load-any-extension=no
+
+# A comma-separated list of package or module names from where C extensions may
+# be loaded. Extensions are loading into the active Python interpreter and may
+# run arbitrary code
+extension-pkg-whitelist=
+
+# Allow optimization of some AST trees. This will activate a peephole AST
+# optimizer, which will apply various small optimizations. For instance, it can
+# be used to obtain the result of joining multiple strings with the addition
+# operator. Joining a lot of strings can lead to a maximum recursion error in
+# Pylint and this flag can prevent that. It has one side effect, the resulting
+# AST will be different than the one from reality.
+optimize-ast=no
+
+
+[MESSAGES CONTROL]
+
+# Only show warnings with the listed confidence levels. Leave empty to show
+# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
+confidence=
+
+# Enable the message, report, category or checker with the given id(s). You can
+# either give multiple identifier separated by comma (,) or put this option
+# multiple time. See also the "--disable" option for examples.
+disable=all
+
+enable=import-self,
+ reimported,
+ misplaced-future,
+ relative-import,
+ deprecated-module,
+ unpacking-non-sequence,
+ invalid-all-object,
+ undefined-all-variable,
+ used-before-assignment,
+ cell-var-from-loop,
+ global-variable-undefined,
+ redefined-builtin,
+ redefine-in-handler,
+ unused-import,
+ global-variable-not-assigned,
+ undefined-loop-variable,
+ global-statement,
+ global-at-module-level,
+ bad-open-mode,
+ redundant-unittest-assert,
+ boolean-datetime,
+ not-in-loop,
+ return-outside-function,
+ pointless-statement,
+ pointless-string-statement,
+ unnecessary-pass,
+ unreachable,
+ unnecessary-semicolon,
+ eval-used,
+ exec-used,
+ logging-unsupported-format,
+ logging-not-lazy,
+ unused-variable
+
+# Things we'd like to enable someday:
+# redefined-outer-name (requires a bunch of work to clean up our code first)
+# undefined-variable (re-enable when pylint fixes https://github.com/PyCQA/pylint/issues/760)
+# no-name-in-module (giving us spurious warnings https://github.com/PyCQA/pylint/issues/73)
+# unused-argument (need to clean up or code a lot, e.g. prefix unused_?)
+
+# Things we'd like to try.
+# Procedure:
+# 1. Enable a bunch.
+# 2. See if there's spurious ones; if so disable.
+# 3. Record above.
+# 4. Remove from this list.
+ # deprecated-method,
+ # anomalous-unicode-escape-in-string,
+ # anomalous-backslash-in-string,
+ # not-in-loop,
+ # function-redefined,
+ # continue-in-finally,
+ # abstract-class-instantiated,
+ # star-needs-assignment-target,
+ # duplicate-argument-name,
+ # return-in-init,
+ # too-many-star-expressions,
+ # nonlocal-and-global,
+ # return-outside-function,
+ # return-arg-in-generator,
+ # invalid-star-assignment-target,
+ # bad-reversed-sequence,
+ # nonexistent-operator,
+ # yield-outside-function,
+ # init-is-generator,
+ # nonlocal-without-binding,
+ # lost-exception,
+ # assert-on-tuple,
+ # dangerous-default-value,
+ # duplicate-key,
+ # useless-else-on-loop,
+ # expression-not-assigned,
+ # confusing-with-statement,
+ # unnecessary-lambda,
+ # pointless-statement,
+ # pointless-string-statement,
+ # unnecessary-pass,
+ # unreachable,
+ # eval-used,
+ # exec-used,
+ # bad-builtin,
+ # using-constant-test,
+ # deprecated-lambda,
+ # bad-super-call,
+ # missing-super-argument,
+ # slots-on-old-class,
+ # super-on-old-class,
+ # property-on-old-class,
+ # not-an-iterable,
+ # not-a-mapping,
+ # format-needs-mapping,
+ # truncated-format-string,
+ # missing-format-string-key,
+ # mixed-format-string,
+ # too-few-format-args,
+ # bad-str-strip-call,
+ # too-many-format-args,
+ # bad-format-character,
+ # format-combined-specification,
+ # bad-format-string-key,
+ # bad-format-string,
+ # missing-format-attribute,
+ # missing-format-argument-key,
+ # unused-format-string-argument,
+ # unused-format-string-key,
+ # invalid-format-index,
+ # bad-indentation,
+ # mixed-indentation,
+ # unnecessary-semicolon,
+ # lowercase-l-suffix,
+ # fixme,
+ # invalid-encoded-data,
+ # unpacking-in-except,
+ # import-star-module-level,
+ # parameter-unpacking,
+ # long-suffix,
+ # old-octal-literal,
+ # old-ne-operator,
+ # backtick,
+ # old-raise-syntax,
+ # print-statement,
+ # metaclass-assignment,
+ # next-method-called,
+ # dict-iter-method,
+ # dict-view-method,
+ # indexing-exception,
+ # raising-string,
+ # standarderror-builtin,
+ # using-cmp-argument,
+ # cmp-method,
+ # coerce-method,
+ # delslice-method,
+ # getslice-method,
+ # hex-method,
+ # nonzero-method,
+ # oct-method,
+ # setslice-method,
+ # apply-builtin,
+ # basestring-builtin,
+ # buffer-builtin,
+ # cmp-builtin,
+ # coerce-builtin,
+ # old-division,
+ # execfile-builtin,
+ # file-builtin,
+ # filter-builtin-not-iterating,
+ # no-absolute-import,
+ # input-builtin,
+ # intern-builtin,
+ # long-builtin,
+ # map-builtin-not-iterating,
+ # range-builtin-not-iterating,
+ # raw_input-builtin,
+ # reduce-builtin,
+ # reload-builtin,
+ # round-builtin,
+ # unichr-builtin,
+ # unicode-builtin,
+ # xrange-builtin,
+ # zip-builtin-not-iterating,
+ # logging-format-truncated,
+ # logging-too-few-args,
+ # logging-too-many-args,
+ # logging-unsupported-format,
+ # logging-not-lazy,
+ # logging-format-interpolation,
+ # invalid-unary-operand-type,
+ # unsupported-binary-operation,
+ # no-member,
+ # not-callable,
+ # redundant-keyword-arg,
+ # assignment-from-no-return,
+ # assignment-from-none,
+ # not-context-manager,
+ # repeated-keyword,
+ # missing-kwoa,
+ # no-value-for-parameter,
+ # invalid-sequence-index,
+ # invalid-slice-index,
+ # too-many-function-args,
+ # unexpected-keyword-arg,
+ # unsupported-membership-test,
+ # unsubscriptable-object,
+ # access-member-before-definition,
+ # method-hidden,
+ # assigning-non-slot,
+ # duplicate-bases,
+ # inconsistent-mro,
+ # inherit-non-class,
+ # invalid-slots,
+ # invalid-slots-object,
+ # no-method-argument,
+ # no-self-argument,
+ # unexpected-special-method-signature,
+ # non-iterator-returned,
+ # protected-access,
+ # arguments-differ,
+ # attribute-defined-outside-init,
+ # no-init,
+ # abstract-method,
+ # signature-differs,
+ # bad-staticmethod-argument,
+ # non-parent-init-called,
+ # super-init-not-called,
+ # bad-except-order,
+ # catching-non-exception,
+ # bad-exception-context,
+ # notimplemented-raised,
+ # raising-bad-type,
+ # raising-non-exception,
+ # misplaced-bare-raise,
+ # duplicate-except,
+ # broad-except,
+ # nonstandard-exception,
+ # binary-op-exception,
+ # bare-except,
+ # not-async-context-manager,
+ # yield-inside-async-function,
+
+# ...
+[REPORTS]
+
+# Set the output format. Available formats are text, parseable, colorized, msvs
+# (visual studio) and html. You can also give a reporter class, eg
+# mypackage.mymodule.MyReporterClass.
+output-format=parseable
+
+# Put messages in a separate file for each module / package specified on the
+# command line instead of printing them on stdout. Reports (if any) will be
+# written in a file name "pylint_global.[txt|html]".
+files-output=no
+
+# Tells whether to display a full report or only the messages
+reports=no
+
+# Python expression which should return a note less than 10 (10 is the highest
+# note). You have access to the variables errors warning, statement which
+# respectively contain the number of errors / warnings messages and the total
+# number of statements analyzed. This is used by the global evaluation report
+# (RP0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Template used to display messages. This is a python new-style format string
+# used to format the message information. See doc for all details
+#msg-template=
+
+
+[LOGGING]
+
+# Logging modules to check that the string format arguments are in logging
+# function parameter format
+logging-modules=logging
+
+
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=100
+
+# Regexp for a line that is allowed to be longer than the limit.
+ignore-long-lines=^\s*(# )?<?https?://\S+>?$
+
+# Allow the body of an if to be on the same line as the test if there is no
+# else.
+single-line-if-stmt=no
+
+# List of optional constructs for which whitespace checking is disabled. `dict-
+# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
+# `trailing-comma` allows a space between comma and closing bracket: (a, ).
+# `empty-line` allows space-only lines.
+no-space-check=trailing-comma,dict-separator
+
+# Maximum number of lines in a module
+max-module-lines=1000
+
+# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
+# tab).
+indent-string=' '
+
+# Number of spaces of indent required inside a hanging or continued line.
+indent-after-paren=4
+
+# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
+expected-line-ending-format=
+
+
+[TYPECHECK]
+
+# Tells whether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# List of module names for which member attributes should not be checked
+# (useful for modules/projects where namespaces are manipulated during runtime
+# and thus existing member attributes cannot be deduced by static analysis. It
+# supports qualified module names, as well as Unix pattern matching.
+ignored-modules=
+
+# List of classes names for which member attributes should not be checked
+# (useful for classes with attributes dynamically set). This supports can work
+# with qualified names.
+ignored-classes=
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E1101 when accessed. Python regular
+# expressions are accepted.
+generated-members=
+
+
+[VARIABLES]
+
+# Tells whether we should check for unused import in __init__ files.
+init-import=no
+
+# A regular expression matching the name of dummy variables (i.e. expectedly
+# not used).
+dummy-variables-rgx=^_|^dummy
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+additional-builtins=
+
+# List of strings which can identify a callback function by name. A callback
+# name must start or end with one of those strings.
+callbacks=cb_,_cb
+
+
+[SIMILARITIES]
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
+
+# Ignore imports when computing similarities.
+ignore-imports=no
+
+
+[SPELLING]
+
+# Spelling dictionary name. Available dictionaries: none. To make it working
+# install python-enchant package.
+spelling-dict=
+
+# List of comma separated words that should not be checked.
+spelling-ignore-words=
+
+# A path to a file that contains private dictionary; one word per line.
+spelling-private-dict-file=
+
+# Tells whether to store unknown words to indicated private dictionary in
+# --spelling-private-dict-file option instead of raising a message.
+spelling-store-unknown-words=no
+
+
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,XXX,TODO
+
+
+[BASIC]
+
+# List of builtins function names that should not be used, separated by a comma
+bad-functions=map,filter,input
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=i,j,k,ex,Run,_
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=foo,bar,baz,toto,tutu,tata
+
+# Colon-delimited sets of names that determine each other's naming style when
+# the name regexes allow several styles.
+name-group=
+
+# Include a hint for the correct naming format with invalid-name
+include-naming-hint=no
+
+# Regular expression matching correct function names
+function-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for function names
+function-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct variable names
+variable-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for variable names
+variable-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct constant names
+const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Naming hint for constant names
+const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Regular expression matching correct attribute names
+attr-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for attribute names
+attr-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct argument names
+argument-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for argument names
+argument-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct class attribute names
+class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Naming hint for class attribute names
+class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Regular expression matching correct inline iteration names
+inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
+
+# Naming hint for inline iteration names
+inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
+
+# Regular expression matching correct class names
+class-rgx=[A-Z_][a-zA-Z0-9]+$
+
+# Naming hint for class names
+class-name-hint=[A-Z_][a-zA-Z0-9]+$
+
+# Regular expression matching correct module names
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Naming hint for module names
+module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Regular expression matching correct method names
+method-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for method names
+method-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression which should only match function or class names that do
+# not require a docstring.
+no-docstring-rgx=^_
+
+# Minimum line length for functions/classes that require docstrings, shorter
+# ones are exempt.
+docstring-min-length=-1
+
+
+[ELIF]
+
+# Maximum number of nested blocks for function / method body
+max-nested-blocks=5
+
+
+[IMPORTS]
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=regsub,TERMIOS,Bastion,rexec
+
+# Create a graph of every (i.e. internal and external) dependencies in the
+# given file (report RP0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report RP0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report RP0402 must
+# not be disabled)
+int-import-graph=
+
+
+[DESIGN]
+
+# Maximum number of arguments for function / method
+max-args=5
+
+# Argument names that match this expression will be ignored. Default to name
+# with leading underscore
+ignored-argument-names=_.*
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branches=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+# Maximum number of boolean expressions in a if statement
+max-bool-expr=5
+
+
+[CLASSES]
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,__new__,setUp
+
+# List of valid names for the first argument in a class method.
+valid-classmethod-first-arg=cls
+
+# List of valid names for the first argument in a metaclass class method.
+valid-metaclass-classmethod-first-arg=mcs
+
+# List of member names, which should be excluded from the protected access
+# warning.
+exclude-protected=_asdict,_fields,_replace,_source,_make
+
+
+[EXCEPTIONS]
+
+# Exceptions that will emit a warning when being caught. Defaults to
+# "Exception"
+overgeneral-exceptions=Exception
diff --git a/.travis.yml b/.travis.yml
index 9fdb9a94..94cadeca 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,11 +1,12 @@
language: python
python:
- "2.7"
-install: "pip install -r requirements.txt && pip install coveralls"
+install: "pip install -r requirements.txt && pip install coveralls pylint"
script:
- python manage.py collectstatic --noinput
- coverage run --rcfile .coveragerc manage.py test
+ - pylint *.py
after_success:
- coveralls
diff --git a/devel/forms.py b/devel/forms.py
index cd50eb50..73d725e5 100644
--- a/devel/forms.py
+++ b/devel/forms.py
@@ -73,7 +73,7 @@ class NewUserForm(forms.ModelForm):
def save(self, commit=True):
profile = super(NewUserForm, self).save(False)
pwletters = ascii_letters + digits
- password = ''.join([random.choice(pwletters) for _ in xrange(8)])
+ password = ''.join([random.choice(pwletters) for _ in range(8)])
user = User.objects.create_user(username=self.cleaned_data['username'],
email=self.cleaned_data['private_email'], password=password)
user.first_name = self.cleaned_data['first_name']
diff --git a/main/models.py b/main/models.py
index 1b95f3fa..9fe4b1fa 100644
--- a/main/models.py
+++ b/main/models.py
@@ -1,4 +1,3 @@
-from datetime import datetime
from itertools import groupby
from pgpdump import BinaryData
@@ -249,7 +248,7 @@ class Package(models.Model):
return (depend.deptype, p.pkgbase, p.repo.testing, p.repo.staging)
filtered = []
- for (typ, pkgbase, _, _), dep_pkgs in groupby(requiredby, grouper):
+ for (typ, _, _, _), dep_pkgs in groupby(requiredby, grouper):
dep_pkgs = list(dep_pkgs)
if typ == 'D' or len(dep_pkgs) == 1:
filtered.extend(dep_pkgs)
diff --git a/mirrors/tests.py b/mirrors/tests.py
index 47710e48..1261cf59 100644
--- a/mirrors/tests.py
+++ b/mirrors/tests.py
@@ -2,7 +2,7 @@ import json
from django.test import TestCase
-from models import MirrorUrl, MirrorProtocol, Mirror
+from mirrors.models import MirrorUrl, MirrorProtocol, Mirror
def create_mirror_url():
mirror = Mirror.objects.create(name='mirror1', admin_email='admin@archlinux.org')
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index 73a39092..f9aa086d 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -36,7 +36,7 @@ class BuildQueryStringNode(template.Node):
@register.tag(name='buildsortqs')
def do_buildsortqs(parser, token):
try:
- tagname, sortfield = token.split_contents()
+ _, sortfield = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError(
"%r tag requires a single argument" % token)
diff --git a/packages/tests.py b/packages/tests.py
index 5b916bfa..e7230e95 100644
--- a/packages/tests.py
+++ b/packages/tests.py
@@ -1,7 +1,6 @@
import unittest
from django.test import TestCase
-from main.models import Package, Arch, Repo
from .alpm import AlpmAPI
diff --git a/packages/views/__init__.py b/packages/views/__init__.py
index 7941a265..634758f6 100644
--- a/packages/views/__init__.py
+++ b/packages/views/__init__.py
@@ -65,7 +65,7 @@ def update(request):
ids = request.POST.getlist('pkgid')
count = 0
- if request.POST.has_key('adopt'):
+ if 'adopt' in request.POST:
repos = request.user.userprofile.allowed_repos.all()
pkgs = Package.objects.filter(id__in=ids, repo__in=repos)
disallowed_pkgs = Package.objects.filter(id__in=ids).exclude(
@@ -87,7 +87,7 @@ def update(request):
messages.info(request, "%d base packages adopted." % count)
- elif request.POST.has_key('disown'):
+ elif 'disown' in request.POST:
# allow disowning regardless of allowed repos, helps things like
# [community] -> [extra] moves
for pkg in Package.objects.filter(id__in=ids):
diff --git a/public/utils.py b/public/utils.py
index 11091883..248bd7d8 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 arch, packages in by_arch.items():
+ for _, packages in by_arch.items():
if len(packages) == 1:
yield packages[0]
else:
diff --git a/public/views.py b/public/views.py
index ad053b43..9afad7a2 100644
--- a/public/views.py
+++ b/public/views.py
@@ -2,7 +2,6 @@ from datetime import datetime
import json
from operator import attrgetter
-from django.conf import settings
from django.contrib.auth.models import User
from django.db.models import Count, Q
from django.http import HttpResponse
@@ -115,7 +114,6 @@ def keys(request):
signatures = frozenset(PGPSignature.objects.filter(
not_expired, revoked__isnull=True).values_list('signer', 'signee'))
- restrict = Q(signer__in=user_key_ids) & Q(signee__in=user_key_ids)
cross_signatures = PGPSignature.objects.filter(
not_expired, revoked__isnull=True).order_by('created')
# filter in python so we aren't sending a crazy long query to the DB
diff --git a/releng/models.py b/releng/models.py
index c85ab547..6a0f15dc 100644
--- a/releng/models.py
+++ b/releng/models.py
@@ -10,7 +10,6 @@ from django.db import models
from django.db.models.signals import pre_save
from django.utils.safestring import mark_safe
-from main.fields import PositiveBigIntegerField
from main.utils import set_created_field, parse_markdown
diff --git a/releng/tests.py b/releng/tests.py
index 3c072095..0ed5f1fe 100644
--- a/releng/tests.py
+++ b/releng/tests.py
@@ -1,6 +1,3 @@
-import hashlib
-from datetime import datetime
-
from django.test import TestCase
from releng.models import Release
diff --git a/releng/views.py b/releng/views.py
index 70be9736..c3a10256 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -13,7 +13,7 @@ from django.views.generic import DetailView, ListView
from .models import (Architecture, BootType, Bootloader, ClockChoice,
Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source,
Test, Release)
-from mirrors.models import (Mirror, MirrorUrl, MirrorProtocol)
+from mirrors.models import MirrorUrl
def standard_field(model, empty_label=None, help_text=None, required=True):
return forms.ModelChoiceField(queryset=model.objects.all(),
@@ -282,7 +282,7 @@ def releases_json(request):
def netboot_config(request):
release_qs = Release.objects.filter(available=True).order_by('-release_date')
- releases = [ release.version for release in release_qs ]
+ releases = [release.version for release in release_qs]
mirrorurls = MirrorUrl.objects.filter(protocol__protocol='http',
active=True,
mirror__public=True,
diff --git a/urls.py b/urls.py
index f35907d6..081331e0 100644
--- a/urls.py
+++ b/urls.py
@@ -1,9 +1,9 @@
-from django.conf.urls import include, patterns, url
+from django.conf.urls import include, patterns
from django.contrib import admin
from django.contrib.sitemaps import views as sitemap_views
from django.views.decorators.cache import cache_page
-from django.views.generic import TemplateView, RedirectView
+from django.views.generic import TemplateView
from feeds import PackageFeed, NewsFeed, ReleaseFeed
import sitemaps
@@ -19,7 +19,7 @@ our_sitemaps = {
'todolists': sitemaps.TodolistSitemap,
}
-news_sitemaps = { 'news': sitemaps.RecentNewsSitemap }
+news_sitemaps = {'news': sitemaps.RecentNewsSitemap}
urlpatterns = []