Skip to content

Commit c8325ce

Browse files
committed
move imports to top-level
1 parent 296b32a commit c8325ce

7 files changed

Lines changed: 22 additions & 35 deletions

File tree

hosts/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# You should have received a copy of the GNU General Public License
1616
# along with Patchman. If not, see <http://www.gnu.org/licenses/>
1717

18+
from urllib.parse import parse_qs
19+
1820
from django.contrib import messages
1921
from django.contrib.auth.decorators import login_required
2022
from django.db.models import Q
@@ -31,6 +33,7 @@
3133
from hosts.models import Host, HostRepo
3234
from hosts.serializers import HostRepoSerializer, HostSerializer
3335
from hosts.tables import HostTable
36+
from hosts.tasks import find_host_updates
3437
from operatingsystems.models import OSRelease, OSVariant
3538
from reports.models import Report
3639
from util import sanitize_filter_params
@@ -39,7 +42,6 @@
3942

4043
def _get_filtered_hosts(filter_params):
4144
"""Helper to reconstruct filtered queryset from filter params."""
42-
from urllib.parse import parse_qs
4345
params = parse_qs(filter_params)
4446

4547
hosts = Host.objects.select_related('osvariant', 'arch', 'domain')
@@ -222,7 +224,6 @@ def host_delete(request, hostname):
222224
def host_find_updates(request, hostname):
223225
""" Find updates using a celery task
224226
"""
225-
from hosts.tasks import find_host_updates
226227
host = get_object_or_404(Host, hostname=hostname)
227228
find_host_updates.delay(host.id)
228229
text = f'Finding updates for Host {host}'
@@ -261,7 +262,6 @@ def host_bulk_action(request):
261262
name = Host._meta.verbose_name if count == 1 else Host._meta.verbose_name_plural
262263

263264
if action == 'find_updates':
264-
from hosts.tasks import find_host_updates
265265
for host in hosts:
266266
find_host_updates.delay(host.id)
267267
messages.success(request, f'Queued {count} {name} for update check')

operatingsystems/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# You should have received a copy of the GNU General Public License
1616
# along with Patchman. If not, see <http://www.gnu.org/licenses/>
1717

18+
from urllib.parse import parse_qs
19+
1820
from django.contrib import messages
1921
from django.contrib.auth.decorators import login_required
2022
from django.db.models import Count, Q
@@ -37,7 +39,6 @@
3739

3840
def _get_filtered_osvariants(filter_params):
3941
"""Helper to reconstruct filtered queryset from filter params."""
40-
from urllib.parse import parse_qs
4142
params = parse_qs(filter_params)
4243

4344
osvariants = OSVariant.objects.select_related('osrelease', 'arch')
@@ -57,7 +58,6 @@ def _get_filtered_osvariants(filter_params):
5758

5859
def _get_filtered_osreleases(filter_params):
5960
"""Helper to reconstruct filtered queryset from filter params."""
60-
from urllib.parse import parse_qs
6161
params = parse_qs(filter_params)
6262

6363
osreleases = OSRelease.objects.all()

packages/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
from django.core.exceptions import MultipleObjectsReturned
2121
from django.db import IntegrityError, transaction
22+
from django.db.models import Count, Min
2223

2324
from arch.models import PackageArchitecture
2425
from packages.models import (

reports/views.py

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
# along with Patchman. If not, see <http://www.gnu.org/licenses/>
1717

1818
import json
19-
from urllib.parse import unquote
19+
from urllib.parse import parse_qs, unquote
2020

21+
from django.conf import settings
2122
from django.contrib import messages
2223
from django.contrib.auth.decorators import login_required
2324
from django.db.models import Q
@@ -28,21 +29,26 @@
2829
from django.views.decorators.csrf import csrf_exempt
2930
from django_tables2 import RequestConfig
3031
from rest_framework import status, viewsets
32+
from rest_framework.permissions import AllowAny, IsAuthenticatedOrReadOnly
3133
from rest_framework.response import Response
34+
from rest_framework_api_key.permissions import HasAPIKey
3235
from tenacity import (
3336
retry, retry_if_exception_type, stop_after_attempt, wait_exponential,
3437
)
3538

3639
from reports.models import Report
37-
from reports.serializers import ReportUploadSerializer
38-
from reports.tables import ReportTable
40+
from reports.serializers import ReportSerializer, ReportUploadSerializer
41+
from reports.tables import (
42+
ReportModuleTable, ReportPackageTable, ReportRepoTable, ReportTable,
43+
ReportUpdateTable,
44+
)
45+
from reports.tasks import process_report
3946
from util import sanitize_filter_params
4047
from util.filterspecs import Filter, FilterBar
4148

4249

4350
def _get_filtered_reports(filter_params):
4451
"""Helper to reconstruct filtered queryset from filter params."""
45-
from urllib.parse import parse_qs
4652
params = parse_qs(filter_params)
4753

4854
reports = Report.objects.all()
@@ -78,7 +84,6 @@ def upload(request):
7884
report = Report.objects.create()
7985
report.parse(data, meta)
8086

81-
from reports.tasks import process_report
8287
process_report.delay(report.id)
8388

8489
if 'report' in data and data['report'] == 'true':
@@ -159,10 +164,6 @@ def report_detail(request, report_id):
159164

160165
# Add tables for Protocol 2 reports
161166
if report.protocol == '2':
162-
from reports.tables import (
163-
ReportModuleTable, ReportPackageTable, ReportRepoTable,
164-
ReportUpdateTable,
165-
)
166167
if report.has_packages:
167168
context['packages_table'] = ReportPackageTable(report.packages_parsed)
168169
if report.has_repos:
@@ -183,7 +184,6 @@ def report_detail(request, report_id):
183184
def report_process(request, report_id):
184185
""" Process a report using a celery task
185186
"""
186-
from reports.tasks import process_report
187187
report = get_object_or_404(Report, id=report_id)
188188
report.processed = False
189189
report.save()
@@ -243,7 +243,6 @@ def report_bulk_action(request):
243243
name = Report._meta.verbose_name if count == 1 else Report._meta.verbose_name_plural
244244

245245
if action == 'process':
246-
from reports.tasks import process_report
247246
for report in reports:
248247
report.processed = False
249248
report.save()
@@ -273,12 +272,6 @@ class ReportViewSet(viewsets.ViewSet):
273272
"""
274273

275274
def get_permissions(self):
276-
from django.conf import settings
277-
from rest_framework.permissions import (
278-
AllowAny, IsAuthenticatedOrReadOnly,
279-
)
280-
from rest_framework_api_key.permissions import HasAPIKey
281-
282275
# POST requires API key if configured, otherwise allow any
283276
if self.action == 'create':
284277
if getattr(settings, 'REQUIRE_API_KEY', False):
@@ -289,16 +282,12 @@ def get_permissions(self):
289282

290283
def list(self, request):
291284
"""List all reports."""
292-
from reports.serializers import ReportSerializer
293285
queryset = Report.objects.all().order_by('-created')
294286
serializer = ReportSerializer(queryset, many=True, context={'request': request})
295287
return Response(serializer.data)
296288

297289
def retrieve(self, request, pk=None):
298290
"""Retrieve a single report."""
299-
from django.shortcuts import get_object_or_404
300-
301-
from reports.serializers import ReportSerializer
302291
report = get_object_or_404(Report, pk=pk)
303292
serializer = ReportSerializer(report, context={'request': request})
304293
return Response(serializer.data)
@@ -357,7 +346,6 @@ def create(self, request):
357346
)
358347

359348
# Queue for async processing
360-
from reports.tasks import process_report
361349
process_report.delay(report.id)
362350

363351
return Response(

repos/views.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# You should have received a copy of the GNU General Public License
1616
# along with Patchman. If not, see <http://www.gnu.org/licenses/>
1717

18+
from urllib.parse import parse_qs
19+
1820
from django.contrib import messages
1921
from django.contrib.auth.decorators import login_required
2022
from django.db import IntegrityError
@@ -36,6 +38,7 @@
3638
MirrorPackageSerializer, MirrorSerializer, RepositorySerializer,
3739
)
3840
from repos.tables import MirrorTable, RepositoryTable
41+
from repos.tasks import refresh_repo
3942
from util import sanitize_filter_params
4043
from util.filterspecs import Filter, FilterBar
4144

@@ -403,7 +406,6 @@ def repo_toggle_security(request, repo_id):
403406
def repo_refresh(request, repo_id):
404407
""" Refresh a repo using a celery task
405408
"""
406-
from repos.tasks import refresh_repo
407409
repo = get_object_or_404(Repository, id=repo_id)
408410
refresh_repo.delay(repo.id)
409411
text = f'Repostory {repo} is being refreshed'
@@ -413,7 +415,6 @@ def repo_refresh(request, repo_id):
413415

414416
def _get_filtered_repos(filter_params):
415417
"""Helper to reconstruct filtered queryset from filter params."""
416-
from urllib.parse import parse_qs
417418
params = parse_qs(filter_params)
418419

419420
repos = Repository.objects.select_related('arch').order_by('name')
@@ -486,7 +487,6 @@ def repo_bulk_action(request):
486487
repos.update(security=False)
487488
messages.success(request, f'Marked {count} {name} as non-security')
488489
elif action == 'refresh':
489-
from repos.tasks import refresh_repo
490490
for repo in repos:
491491
refresh_repo.delay(repo.id)
492492
messages.success(request, f'Queued {count} {name} for refresh')
@@ -504,7 +504,6 @@ def repo_bulk_action(request):
504504

505505
def _get_filtered_mirrors(filter_params):
506506
"""Helper to reconstruct filtered queryset from filter params."""
507-
from urllib.parse import parse_qs
508507
params = parse_qs(filter_params)
509508

510509
mirrors = Mirror.objects.select_related('repo').order_by('packages_checksum')

util/context_processors.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import subprocess
1818
from datetime import timedelta
19+
from importlib.metadata import version as get_pkg_version
1920
from pathlib import Path
2021

2122
from django.db.models import F
@@ -52,8 +53,7 @@ def _get_version():
5253
"""Get version from package metadata or VERSION.txt."""
5354
# Try importlib.metadata first (for installed packages)
5455
try:
55-
from importlib.metadata import version
56-
return version('patchman')
56+
return get_pkg_version('patchman')
5757
except Exception:
5858
pass
5959

util/templatetags/common.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
from datetime import timedelta
1919
from urllib.parse import urlencode
2020

21-
from django.template import Library
2221
from django.db.models import Sum
22+
from django.template import Library, engines
2323
from django.template.loader import get_template
2424
from django.utils import timezone
2525
from django.utils.html import format_html
@@ -74,7 +74,6 @@ def gen_table(context, object_list, template_name=None):
7474
RequestConfig(request, paginate=False).configure(table)
7575

7676
# Render using the table's configured template
77-
from django.template import engines
7877
django_engine = engines['django']
7978
template = django_engine.from_string('{% load django_tables2 %}{% render_table table %}')
8079
return template.render({'table': table, 'request': request})

0 commit comments

Comments
 (0)