Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/lint-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ jobs:
pip install flake8
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --max-line-length=120 --show-source --statistics
- name: Check isort
run: |
pip install isort
isort --check --profile=django .
- name: Set secret key
run: ./sbin/patchman-set-secret-key
- name: Test with django
Expand Down
3 changes: 2 additions & 1 deletion arch/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from django.contrib import admin
from arch.models import PackageArchitecture, MachineArchitecture

from arch.models import MachineArchitecture, PackageArchitecture

admin.site.register(PackageArchitecture)
admin.site.register(MachineArchitecture)
2 changes: 1 addition & 1 deletion arch/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

from rest_framework import serializers

from arch.models import PackageArchitecture, MachineArchitecture
from arch.models import MachineArchitecture, PackageArchitecture


class PackageArchitectureSerializer(serializers.HyperlinkedModelSerializer):
Expand Down
2 changes: 1 addition & 1 deletion arch/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from arch.models import PackageArchitecture, MachineArchitecture
from arch.models import MachineArchitecture, PackageArchitecture
from util.logging import info_message


Expand Down
7 changes: 4 additions & 3 deletions arch/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@

from rest_framework import viewsets

from arch.models import PackageArchitecture, MachineArchitecture
from arch.serializers import PackageArchitectureSerializer, \
MachineArchitectureSerializer
from arch.models import MachineArchitecture, PackageArchitecture
from arch.serializers import (
MachineArchitectureSerializer, PackageArchitectureSerializer,
)


class PackageArchitectureViewSet(viewsets.ModelViewSet):
Expand Down
1 change: 1 addition & 0 deletions domains/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from django.contrib import admin

from domains.models import Domain

admin.site.register(Domain)
1 change: 1 addition & 0 deletions errata/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from django.contrib import admin

from errata.models import Erratum


Expand Down
7 changes: 3 additions & 4 deletions errata/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,16 @@

import json

from django.db import models
from django.db import IntegrityError, models
from django.urls import reverse
from django.db import IntegrityError

from errata.managers import ErratumManager
from packages.models import Package, PackageUpdate
from packages.utils import find_evr, get_matching_packages
from errata.managers import ErratumManager
from security.models import CVE, Reference
from security.utils import get_or_create_cve, get_or_create_reference
from util.logging import error_message
from util import get_url
from util.logging import error_message


class Erratum(models.Model):
Expand Down
2 changes: 1 addition & 1 deletion errata/sources/distros/alma.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
from operatingsystems.utils import get_or_create_osrelease
from packages.models import Package
from packages.utils import get_or_create_package, parse_package_string
from util import get_url, fetch_content, get_setting_of_type
from patchman.signals import pbar_start, pbar_update
from util import fetch_content, get_setting_of_type, get_url


def update_alma_errata(concurrent_processing=True):
Expand Down
10 changes: 6 additions & 4 deletions errata/sources/distros/arch.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@
from django.db import connections

from operatingsystems.utils import get_or_create_osrelease
from util.logging import error_message
from patchman.signals import pbar_start, pbar_update
from packages.models import Package
from packages.utils import find_evr, get_matching_packages, get_or_create_package
from util import get_url, fetch_content
from packages.utils import (
find_evr, get_matching_packages, get_or_create_package,
)
from patchman.signals import pbar_start, pbar_update
from util import fetch_content, get_url
from util.logging import error_message


def update_arch_errata(concurrent_processing=False):
Expand Down
7 changes: 4 additions & 3 deletions errata/sources/distros/centos.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

import re

from defusedxml import ElementTree

from operatingsystems.utils import get_or_create_osrelease
from packages.models import Package
from packages.utils import parse_package_string, get_or_create_package
from util.logging import error_message
from packages.utils import get_or_create_package, parse_package_string
from patchman.signals import pbar_start, pbar_update
from util import bunzip2, get_url, fetch_content, get_sha1, get_setting_of_type
from util import bunzip2, fetch_content, get_setting_of_type, get_sha1, get_url
from util.logging import error_message


def update_centos_errata():
Expand Down
8 changes: 4 additions & 4 deletions errata/sources/distros/debian.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
import csv
import re
from datetime import datetime
from debian.deb822 import Dsc
from io import StringIO

from debian.deb822 import Dsc
from django.db import connections

from operatingsystems.models import OSRelease
from operatingsystems.utils import get_or_create_osrelease
from packages.models import Package
from packages.utils import get_or_create_package, find_evr
from util.logging import error_message, warning_message
from packages.utils import find_evr, get_or_create_package
from patchman.signals import pbar_start, pbar_update
from util import get_url, fetch_content, get_setting_of_type, extract
from util import extract, fetch_content, get_setting_of_type, get_url
from util.logging import error_message, warning_message

DSCs = {}

Expand Down
12 changes: 7 additions & 5 deletions errata/sources/distros/rocky.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,21 @@
# You should have received a copy of the GNU General Public License
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

import json
import concurrent.futures
from tenacity import retry, retry_if_exception_type, stop_after_attempt, wait_exponential
import json

from django.db import connections
from django.db.utils import OperationalError
from tenacity import (
retry, retry_if_exception_type, stop_after_attempt, wait_exponential,
)

from operatingsystems.utils import get_or_create_osrelease
from packages.models import Package
from packages.utils import parse_package_string, get_or_create_package
from packages.utils import get_or_create_package, parse_package_string
from patchman.signals import pbar_start, pbar_update
from util import get_url, fetch_content
from util.logging import info_message, error_message
from util import fetch_content, get_url
from util.logging import error_message, info_message


def update_rocky_errata(concurrent_processing=True):
Expand Down
13 changes: 9 additions & 4 deletions errata/sources/distros/ubuntu.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

import concurrent.futures
import csv
import os
import json
import os
from io import StringIO
from urllib.parse import urlparse

Expand All @@ -26,10 +26,15 @@
from operatingsystems.models import OSRelease, OSVariant
from operatingsystems.utils import get_or_create_osrelease
from packages.models import Package
from packages.utils import get_or_create_package, parse_package_string, find_evr, get_matching_packages
from util import get_url, fetch_content, get_sha256, bunzip2, get_setting_of_type
from util.logging import error_message
from packages.utils import (
find_evr, get_matching_packages, get_or_create_package,
parse_package_string,
)
from patchman.signals import pbar_start, pbar_update
from util import (
bunzip2, fetch_content, get_setting_of_type, get_sha256, get_url,
)
from util.logging import error_message


def update_ubuntu_errata(concurrent_processing=False):
Expand Down
4 changes: 2 additions & 2 deletions errata/sources/repos/yum.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@

import concurrent.futures
from io import BytesIO
from defusedxml import ElementTree

from defusedxml import ElementTree
from django.db import connections

from operatingsystems.utils import get_or_create_osrelease
from packages.models import Package
from packages.utils import get_or_create_package
from util.logging import error_message
from patchman.signals import pbar_start, pbar_update
from security.models import Reference
from util import extract, get_url
from util.logging import error_message


def extract_updateinfo(data, url, concurrent_processing=True):
Expand Down
7 changes: 3 additions & 4 deletions errata/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,18 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from celery import shared_task

from django.core.cache import cache

from errata.sources.distros.arch import update_arch_errata
from errata.sources.distros.alma import update_alma_errata
from errata.sources.distros.debian import update_debian_errata
from errata.sources.distros.arch import update_arch_errata
from errata.sources.distros.centos import update_centos_errata
from errata.sources.distros.debian import update_debian_errata
from errata.sources.distros.rocky import update_rocky_errata
from errata.sources.distros.ubuntu import update_ubuntu_errata
from util.logging import error_message, warning_message
from repos.models import Repository
from security.tasks import update_cves, update_cwes
from util import get_setting_of_type
from util.logging import error_message, warning_message


@shared_task
Expand Down
4 changes: 2 additions & 2 deletions errata/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@

from django.db import connections

from util import tz_aware_datetime
from errata.models import Erratum
from packages.models import PackageUpdate
from util.logging import warning_message
from patchman.signals import pbar_start, pbar_update
from util import tz_aware_datetime
from util.logging import warning_message


def get_or_create_erratum(name, e_type, issue_date, synopsis):
Expand Down
7 changes: 3 additions & 4 deletions errata/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,15 @@
# You should have received a copy of the GNU General Public License
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from django.shortcuts import get_object_or_404, render
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.db.models import Q

from django.shortcuts import get_object_or_404, render
from rest_framework import viewsets

from operatingsystems.models import OSRelease
from errata.models import Erratum
from errata.serializers import ErratumSerializer
from operatingsystems.models import OSRelease
from util.filterspecs import Filter, FilterBar


Expand Down
4 changes: 3 additions & 1 deletion etc/patchman/local_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,10 @@
}
}

from datetime import timedelta # noqa
from datetime import timedelta # noqa

from celery.schedules import crontab # noqa

CELERY_BEAT_SCHEDULE = {
'process_all_unprocessed_reports': {
'task': 'reports.tasks.process_reports',
Expand Down
1 change: 1 addition & 0 deletions hooks/yum/patchman.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

import os

from yum.plugins import TYPE_CORE

requires_api_version = '2.1'
Expand Down
3 changes: 2 additions & 1 deletion hooks/zypper/patchman.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
#
# zypp system plugin for patchman

import os
import logging
import os

from zypp_plugin import Plugin


Expand Down
1 change: 1 addition & 0 deletions hosts/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
# along with Patchman. If not, see <http://www.gnu.org/licenses/>

from django.contrib import admin

from hosts.models import Host, HostRepo


Expand Down
3 changes: 2 additions & 1 deletion hosts/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Generated by Django 3.2.19 on 2023-12-11 22:15

from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
from django.db import migrations, models

try:
import tagging.fields
has_tagging = True
Expand Down
2 changes: 1 addition & 1 deletion hosts/migrations/0002_initial.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 3.2.19 on 2023-12-11 22:15

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
3 changes: 2 additions & 1 deletion hosts/migrations/0004_remove_host_tags_host_tags.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Generated by Django 4.2.18 on 2025-02-04 23:37

import taggit.managers
from django.apps import apps
from django.db import migrations
import taggit.managers

try:
import tagging # noqa
except ImportError:
Expand Down
1 change: 1 addition & 0 deletions hosts/migrations/0006_migrate_to_tz_aware.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.db import migrations
from django.utils import timezone


def make_datetimes_tz_aware(apps, schema_editor):
Host = apps.get_model('hosts', 'Host')
for host in Host.objects.all():
Expand Down
2 changes: 1 addition & 1 deletion hosts/migrations/0007_alter_host_tags.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.2.19 on 2025-02-28 19:53

from django.db import migrations
import taggit.managers
from django.db import migrations


class Migration(migrations.Migration):
Expand Down
3 changes: 2 additions & 1 deletion hosts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from version_utils.rpm import labelCompare
except ImportError:
from rpm import labelCompare

from taggit.managers import TaggableManager

from arch.models import MachineArchitecture
Expand All @@ -34,9 +35,9 @@
from operatingsystems.models import OSVariant
from packages.models import Package, PackageUpdate
from packages.utils import get_or_create_package_update
from util.logging import info_message
from repos.models import Repository
from repos.utils import find_best_repo
from util.logging import info_message


class Host(models.Model):
Expand Down
Loading