patchman 4.0.10__tar.gz → 4.0.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {patchman-4.0.10 → patchman-4.0.12}/PKG-INFO +1 -1
- patchman-4.0.12/VERSION.txt +1 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/models.py +0 -1
- {patchman-4.0.10 → patchman-4.0.12}/errata/tests/test_models.py +19 -0
- {patchman-4.0.10 → patchman-4.0.12}/etc/patchman/apache.conf.example +1 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tests/test_models.py +63 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/utils.py +6 -1
- {patchman-4.0.10 → patchman-4.0.12}/patchman.egg-info/PKG-INFO +1 -1
- {patchman-4.0.10 → patchman-4.0.12}/patchman.egg-info/SOURCES.txt +1 -1
- {patchman-4.0.10 → patchman-4.0.12}/reports/utils.py +2 -1
- patchman-4.0.10/VERSION.txt +0 -1
- {patchman-4.0.10 → patchman-4.0.12}/AUTHORS +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/COPYING +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/INSTALL.md +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/MANIFEST.in +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/README.md +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/migrations/0002_alter_machinearchitecture_options_and_more.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/arch/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/migrations/0002_alter_domain_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/domains/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0002_alter_erratumreference_unique_together.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0003_delete_erratumreference_alter_erratum_references.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0004_rename_packages_erratum_fixed_packages.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0005_erratum_affected_packages_and_more.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0006_alter_erratum_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0007_alter_erratum_fixed_packages.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0008_add_cached_count_fields.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0009_backfill_cached_counts.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/signals.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/alma.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/arch.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/centos.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/debian.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/rocky.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/distros/ubuntu.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/repos/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/sources/repos/yum.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/templates/errata/erratum_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/templates/errata/erratum_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/tests/test_integration.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/errata/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/etc/patchman/celery.conf +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/etc/patchman/local_settings.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/etc/systemd/system/patchman-celery-beat.service +0 -0
- /patchman-4.0.10/etc/systemd/system/patchman-celery-worker.service → /patchman-4.0.12/etc/systemd/system/patchman-celery-worker@.service +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/forms.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0002_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0003_host_modules.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0004_remove_host_tags_host_tags.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0005_rename_os_host_osvariant.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0006_migrate_to_tz_aware.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0007_alter_host_tags.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0008_alter_host_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0009_host_errata.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0010_alter_hostrepo_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0011_host_bug_updates_count_host_errata_count_and_more.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/0012_backfill_cached_counts.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/signals.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/templates/hosts/host_delete.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/templates/hosts/host_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/templates/hosts/host_edit.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/templates/hosts/host_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/templatetags/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/templatetags/report_alert.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tests/test_find_updates.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/tests/test_managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/hosts/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/migrations/0002_auto_20240204_2214.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/migrations/0003_alter_module_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/migrations/0004_alter_module_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/migrations/0005_alter_module_unique_together.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/templates/modules/module_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/templates/modules/module_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/modules/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/fixtures/os.json +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/fixtures/osgroup.json +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/forms.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0002_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0003_os_arch.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0003_osgroup_codename.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0004_alter_osgroup_unique_together.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0005_rename_osgroup_osrelease_rename_os_osvariant_and_more.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0006_osrelease_cpe_name_osvariant_codename.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0007_alter_osrelease_unique_together.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0008_alter_osrelease_options_alter_osvariant_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0009_osvariant_hosts_count.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0010_backfill_osvariant_counts.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/signals.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/os_landing.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osrelease_delete.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osrelease_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osrelease_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osvariant_delete.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osvariant_delete_multiple.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osvariant_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osvariant_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/operatingsystems/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0002_auto_20250207_1319.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0002_delete_erratum_delete_erratumreference.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0003_auto_20250207_1746.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0004_alter_package_options_alter_packagecategory_options_and_more.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0005_alter_package_packagetype.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/0006_alter_packageupdate_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/templates/packages/package_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/templates/packages/package_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/templates/packages/package_name_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/templates/packages/package_name_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/tests/test_version_compare.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/packages/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/celery.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/receivers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/settings.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/signals.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/sqlite3/base.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/static/css/base.css +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/static/js/expandable-text.js +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/static/js/sidebar.js +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman/wsgi.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman.egg-info/dependency_links.txt +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman.egg-info/requires.txt +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/patchman.egg-info/top_level.txt +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/migrations/0002_report_modules.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/migrations/0003_remove_report_accessed.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/migrations/0004_migrate_to_tz_aware.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/migrations/0005_alter_report_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/templates/reports/report.txt +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/templates/reports/report_delete.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/templates/reports/report_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/templates/reports/report_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_edge_cases.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_integration.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_parsing.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/tests/test_utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/reports/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/forms.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0002_alter_repository_repotype.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0003_migrate_to_tz_aware.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0004_rename_file_checksum_mirror_package_checksum.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0005_rename_package_checksum_mirror_packages_checksum.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0006_mirror_errata_checksum_mirror_modules_checksum.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0007_alter_mirror_options_alter_mirrorpackage_options_and_more.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0008_mirror_packages_count.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/0009_backfill_mirror_counts.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/arch.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/deb.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/gentoo.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/rpm.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/yast.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/repo_types/yum.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/signals.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/mirror_delete.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/mirror_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/mirror_edit.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/mirror_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/mirror_with_repo_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/repo_delete.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/repo_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/repo_edit.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templates/repos/repo_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/templatetags/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tests/test_managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tests/test_mirror_sync.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/repos/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/requirements.txt +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/sbin/patchman +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/sbin/patchman-manage +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/sbin/patchman-set-secret-key +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/scripts/clear-django-logs.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/scripts/create_graph.sh +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/scripts/rpm-install.sh +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/scripts/rpm-post-install.sh +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/admin.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/managers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0001_initial.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0002_alter_cve_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0003_alter_cve_description_alter_cwe_description.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0004_alter_cve_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0005_reference_cve_references.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0006_alter_cve_options_alter_cvss_unique_together.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0007_remove_cve_title.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/0008_alter_cwe_options_alter_reference_options.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/migrations/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/serializers.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/templates/security/cve_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/templates/security/cve_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/templates/security/cwe_detail.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/templates/security/cwe_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/templates/security/reference_list.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/templates/security/security_landing.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/tests/test_api.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/tests/test_models.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/security/views.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/setup.cfg +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/setup.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/apps.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/context_processors.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/filterspecs.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/logging.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/management/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/management/commands/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/management/commands/create_api_key.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/management/commands/list_api_keys.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/management/commands/revoke_api_key.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/tables.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/tasks.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/404.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/500.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/base.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/bulk_actions.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/dashboard.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/navbar.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/objectlist.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/registration/login.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/searchbar.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templates/table.html +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templatetags/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/templatetags/common.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/tests/__init__.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/tests/test_commands.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/tests/test_utils.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/urls.py +0 -0
- {patchman-4.0.10 → patchman-4.0.12}/util/views.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.0.12
|
|
@@ -239,3 +239,22 @@ class ErratumCachedCountTests(TestCase):
|
|
|
239
239
|
self.erratum.refresh_from_db()
|
|
240
240
|
self.assertEqual(self.erratum.cves_count, self.erratum.cves.count())
|
|
241
241
|
self.assertEqual(self.erratum.osreleases_count, self.erratum.osreleases.count())
|
|
242
|
+
|
|
243
|
+
def test_add_fixed_packages_no_stale_save(self):
|
|
244
|
+
"""Test that add_fixed_packages does not overwrite cached counts.
|
|
245
|
+
|
|
246
|
+
Regression test: add_fixed_packages previously called self.save()
|
|
247
|
+
after the M2M .add() loop, which overwrote the signal-updated
|
|
248
|
+
fixed_packages_count with the stale in-memory value.
|
|
249
|
+
"""
|
|
250
|
+
from arch.models import PackageArchitecture
|
|
251
|
+
from packages.models import Package, PackageName
|
|
252
|
+
pkg_arch = PackageArchitecture.objects.create(name='amd64')
|
|
253
|
+
pkg_name = PackageName.objects.create(name='libssl3')
|
|
254
|
+
pkg = Package.objects.create(
|
|
255
|
+
name=pkg_name, arch=pkg_arch, epoch='',
|
|
256
|
+
version='3.0.1', release='1', packagetype='D'
|
|
257
|
+
)
|
|
258
|
+
self.erratum.add_fixed_packages({pkg})
|
|
259
|
+
self.erratum.refresh_from_db()
|
|
260
|
+
self.assertEqual(self.erratum.fixed_packages_count, 1)
|
|
@@ -128,3 +128,66 @@ class HostMethodTests(TestCase):
|
|
|
128
128
|
self.assertEqual(self.host.get_num_security_updates(), 1)
|
|
129
129
|
self.assertEqual(self.host.get_num_bugfix_updates(), 1)
|
|
130
130
|
self.assertEqual(self.host.get_num_updates(), 2)
|
|
131
|
+
|
|
132
|
+
def test_cached_counts_survive_full_save(self):
|
|
133
|
+
"""Test that cached update counts are not overwritten by a full save.
|
|
134
|
+
|
|
135
|
+
Regression test: M2M signals update cached count fields via
|
|
136
|
+
save(update_fields=[...]), but a subsequent full save() on the
|
|
137
|
+
same in-memory instance would overwrite them with stale values.
|
|
138
|
+
"""
|
|
139
|
+
pkg_arch = PackageArchitecture.objects.create(name='amd64')
|
|
140
|
+
pkg_name = PackageName.objects.create(name='curl')
|
|
141
|
+
old_pkg = Package.objects.create(
|
|
142
|
+
name=pkg_name, arch=pkg_arch, epoch='',
|
|
143
|
+
version='7.0.0', release='1', packagetype='D'
|
|
144
|
+
)
|
|
145
|
+
new_pkg = Package.objects.create(
|
|
146
|
+
name=pkg_name, arch=pkg_arch, epoch='',
|
|
147
|
+
version='7.0.1', release='1', packagetype='D'
|
|
148
|
+
)
|
|
149
|
+
sec_update = PackageUpdate.objects.create(
|
|
150
|
+
oldpackage=old_pkg, newpackage=new_pkg, security=True
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
# simulate the find_host_updates_homogenous pattern:
|
|
154
|
+
# M2M add fires signal, then full save follows
|
|
155
|
+
self.host.updates.add(sec_update)
|
|
156
|
+
self.host.refresh_from_db(fields=['sec_updates_count', 'bug_updates_count'])
|
|
157
|
+
self.host.updated_at = timezone.now()
|
|
158
|
+
self.host.save()
|
|
159
|
+
|
|
160
|
+
# re-read from DB to verify counts persisted
|
|
161
|
+
self.host.refresh_from_db()
|
|
162
|
+
self.assertEqual(self.host.sec_updates_count, 1)
|
|
163
|
+
self.assertEqual(self.host.bug_updates_count, 0)
|
|
164
|
+
|
|
165
|
+
def test_in_memory_counts_stale_after_m2m_signal(self):
|
|
166
|
+
"""Test that in-memory instance has updated counts after M2M signal.
|
|
167
|
+
|
|
168
|
+
The M2M signal updates the DB directly via save(update_fields=[...]).
|
|
169
|
+
Django also updates the in-memory instance, but on MySQL with
|
|
170
|
+
REPEATABLE READ isolation and full save(), the stale snapshot can
|
|
171
|
+
overwrite the DB values. The refresh_from_db pattern in
|
|
172
|
+
find_host_updates_homogenous prevents this.
|
|
173
|
+
"""
|
|
174
|
+
pkg_arch = PackageArchitecture.objects.create(name='amd64')
|
|
175
|
+
pkg_name = PackageName.objects.create(name='wget')
|
|
176
|
+
old_pkg = Package.objects.create(
|
|
177
|
+
name=pkg_name, arch=pkg_arch, epoch='',
|
|
178
|
+
version='1.0.0', release='1', packagetype='D'
|
|
179
|
+
)
|
|
180
|
+
new_pkg = Package.objects.create(
|
|
181
|
+
name=pkg_name, arch=pkg_arch, epoch='',
|
|
182
|
+
version='1.0.1', release='1', packagetype='D'
|
|
183
|
+
)
|
|
184
|
+
bug_update = PackageUpdate.objects.create(
|
|
185
|
+
oldpackage=old_pkg, newpackage=new_pkg, security=False
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
# M2M add fires signal — DB has correct count
|
|
189
|
+
self.host.updates.add(bug_update)
|
|
190
|
+
|
|
191
|
+
# verify DB has the correct value
|
|
192
|
+
db_host = Host.objects.get(pk=self.host.pk)
|
|
193
|
+
self.assertEqual(db_host.bug_updates_count, 1)
|
|
@@ -69,7 +69,10 @@ def get_or_create_host(report, arch, osvariant, domain):
|
|
|
69
69
|
host.reboot_required = True
|
|
70
70
|
else:
|
|
71
71
|
host.reboot_required = False
|
|
72
|
-
host.save(
|
|
72
|
+
host.save(update_fields=[
|
|
73
|
+
'ipaddress', 'kernel', 'arch', 'osvariant',
|
|
74
|
+
'domain', 'lastreport', 'reboot_required',
|
|
75
|
+
])
|
|
73
76
|
except IntegrityError as e:
|
|
74
77
|
error_message(text=e)
|
|
75
78
|
if host:
|
|
@@ -94,6 +97,7 @@ def find_host_updates_homogenous(hosts, verbose=False):
|
|
|
94
97
|
host.find_updates()
|
|
95
98
|
if verbose:
|
|
96
99
|
info_message(text='')
|
|
100
|
+
host.refresh_from_db(fields=['sec_updates_count', 'bug_updates_count', 'errata_count'])
|
|
97
101
|
host.updated_at = ts
|
|
98
102
|
host.save()
|
|
99
103
|
|
|
@@ -114,6 +118,7 @@ def find_host_updates_homogenous(hosts, verbose=False):
|
|
|
114
118
|
continue
|
|
115
119
|
|
|
116
120
|
fhost.updates.set(updates)
|
|
121
|
+
fhost.refresh_from_db(fields=['sec_updates_count', 'bug_updates_count'])
|
|
117
122
|
fhost.updated_at = ts
|
|
118
123
|
fhost.save()
|
|
119
124
|
updated_host_ids.add(fhost.id)
|
|
@@ -74,7 +74,7 @@ etc/patchman/apache.conf.example
|
|
|
74
74
|
etc/patchman/celery.conf
|
|
75
75
|
etc/patchman/local_settings.py
|
|
76
76
|
etc/systemd/system/patchman-celery-beat.service
|
|
77
|
-
etc/systemd/system/patchman-celery-worker
|
|
77
|
+
etc/systemd/system/patchman-celery-worker@.service
|
|
78
78
|
hosts/__init__.py
|
|
79
79
|
hosts/admin.py
|
|
80
80
|
hosts/apps.py
|
|
@@ -611,7 +611,8 @@ def get_os(os, arch):
|
|
|
611
611
|
lts = ''
|
|
612
612
|
if 'LTS' in os:
|
|
613
613
|
lts = ' LTS'
|
|
614
|
-
|
|
614
|
+
os_ver = os.split(' ')[1].split('.')
|
|
615
|
+
major, minor = os_ver[0], os_ver[1]
|
|
615
616
|
ubuntu_version = f'{major}_{minor}'
|
|
616
617
|
osrelease_name = f'Ubuntu {major}.{minor}{lts}'
|
|
617
618
|
cpe_name = f"cpe:2.3:o:canonical:ubuntu_linux:{ubuntu_version}:*:*:*:{'lts' if lts else '*'}:*:*:*"
|
patchman-4.0.10/VERSION.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.0.10
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0002_alter_erratumreference_unique_together.py
RENAMED
|
File without changes
|
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0004_rename_packages_erratum_fixed_packages.py
RENAMED
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/errata/migrations/0005_erratum_affected_packages_and_more.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0009_osvariant_hosts_count.py
RENAMED
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/operatingsystems/migrations/0010_backfill_osvariant_counts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/os_landing.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osrelease_list.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{patchman-4.0.10 → patchman-4.0.12}/operatingsystems/templates/operatingsystems/osvariant_list.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|