Skip to main content

An app that helps keep track of installed packages

Project description

Package Monitor

An app for keeping track of installed packages and outstanding updates with Alliance Auth.

release python django pipeline codecov license pre-commit Code style: black chat

Contents

Overview

Package Monitor is an app for Alliance Auth that helps you keep your installation up-to-date. It shows you all installed distributions packages and will automatically notify you, when there are updates available.

Features:

  • Shows list of installed distributions packages with related Django apps (if any)
  • Identifies new valid releases for installed packages on PyPI
  • Notifies user which installed packages are outdated and should be updated
  • Shows the number of outdated packages as badge in the sidebar
  • Takes into account the requirements of all installed packages and the current Python version when recommending updates
  • Option to add distribution pages to the monitor which are not related to Django apps
  • Option to show all known distribution packages (as opposed to only the ones that belong to installed Django apps)
  • Copy the respective command for a package update to your clipboard directly from the package list
  • Can automatically notify admins when there is an update available for a currently installed package
  • Supported languages: English :us:, German :de: and Russian :ru:

Hint: Update notifications are sent as AA notifications to all admins. We recommend using Discord Notify to automatically forward those notifications to Discord as DMs.

Screenshots

screenshot

Installation

Step 1 - Check Preconditions

Please make sure you meet all preconditions before proceeding:

  • Package Monitor is a plugin for Alliance Auth. If you don't have Alliance Auth running already, please install it first before proceeding. (see the official AA installation guide for details)

Step 2 - Install app

Make sure you are in the virtual environment (venv) of your Alliance Auth installation. Then install the newest release from PYPI:

pip install aa-package-monitor

Step 3 - Configure settings

Add 'package_monitor' to INSTALLED_APPS.

Add the following lines to your local.py to enable regular checking for updates:

CELERYBEAT_SCHEDULE['package_monitor_update_distributions'] = {
    'task': 'package_monitor.tasks.update_distributions',
    'schedule': crontab(minute='*/60'),
}

Finally, please also take a moment to consider how often you want to receive update notifications. The default is immediate, but you can also chose to receive notifications after a timeout, e.g. only once per 24 hours or once per week. If you choose a timeout you can also choose to get repeated notifications about the same updates, like a reminder. For more details please see the Settings.

Step 4 - Finalize installation

Run migrations & copy static files

python manage.py migrate
python manage.py collectstatic

Restart your supervisor services for Auth

Step 5 - Initial data load

Last, but not least perform an initial data load of all distribution packages by running the following command:

python manage.py package_monitor_refresh

Updating

pip install -U aa-package-monitor

python manage.py collectstatic

python manage.py migrate

Finally restart your AA supervisor services.

User Guide

This section explains how to use the app.

Terminology

To avoid any confusion here are our definitions of some important terms:

  • App: A Django application. An app is always part of a distribution package
  • Distribution package A Python package that can be installed via pip or setuptools. Distribution packages can contain several apps.
  • Requirement: A requirement is a condition that distribution packages can define to specify dependencies to environments or other distribution packages with specific versions. For example the distribution package django-eveuniverse can have the requirement "django-esi>=2.0", which means is requires the package django-esi in at leasts version 2.0

Operation modes

You can run Package Monitor in one of two modes:

  • Keep everything updated
  • Keep apps and selected distribution packages updated

Keep everything updated

In this mode Package Monitor will monitor all installed distribution packages. In this mode you will be informed you about updates to any of your distribution packages.

This is the default operation mode.

Keep apps and selected distribution packages updated

With this mode Package Monitor will monitor only those distribution packages that contain actually installed Django apps. In this mode you will be informed if there is an update to any of your apps. Note that in mode A other installed distributions packages will not be shown.

To activate this mode set PACKAGE_MONITOR_SHOW_ALL_PACKAGES to False in your local settings.

You can also add some additional distributions to be monitored. For example you might want to add celery.

See also Settings for an overview of all settings.

Latest version

Package Monitor will automatically determine a latest version for a distribution package from PyPI. Note that this can differ from the latest version shown on PyPI, because of additional considerations:

First, Package Monitor will take into account all requirements of all installed distribution packages. For example if the Alliance Auth has the requirement "Django<3", then it will only show Django 2.x as latest, since Django 3.x would not fullfil the requirement set by Alliance Auth.

Second, Package Monitor will in general ignore pre-releases and consider stable releases for updates only. The only exception is if the current package also is a pre release. For example you may have Black installed as beta release, therefore the app will also suggest newer beta releases.

Settings

Here is a list of available settings for this app. They can be configured by adding them to your AA settings file (local.py).

Note that all settings are optional and the app will use the documented default settings if they are not used.

Name Description Default
Name Description Default
-- -- --
PACKAGE_MONITOR_CUSTOM_REQUIREMENTS List of custom requirements that all potential updates are checked against. Example: ["gunicorn<20"] []
PACKAGE_MONITOR_EXCLUDE_PACKAGES Names of distribution packages to be excluded. []
PACKAGE_MONITOR_INCLUDE_PACKAGES Names of additional distribution packages to be monitored. []
PACKAGE_MONITOR_NOTIFICATIONS_ENABLED Whether to notify when an update is available for a currently installed distribution package. False
PACKAGE_MONITOR_NOTIFICATIONS_MAX_DELAY Maximum delay in seconds between the scheduled event for firing a notification and the time the notification is issued. This value should be synchronized with the timing of the recurring task. 5400
PACKAGE_MONITOR_NOTIFICATIONS_REPEAT Whether to repeat notifying about the same updates. False
PACKAGE_MONITOR_NOTIFICATIONS_SCHEDULE When to send notifications about updates. If not set, update notifications can be send every time the regular task runs. The schedule can be defined in natural language. Examples: "every day at 10:00", "every saturday at 18:00", "every first saturday every month at 15:00". For more information about the syntax please see: recurrent package ``
PACKAGE_MONITOR_PROTECTED_PACKAGES Names of protected packages. Updates can include requirements for updating other packages, which can potentially break the current AA installation. For example: You have Django 4.2 installed and an update to a package requires Django 5 or higher. Then installing that package may break your installation. When enabled Package Monitor will not show updates, which would cause an indirect update of a protected package. And empty list disables this feature. ['allianceauth', 'django']
PACKAGE_MONITOR_SHOW_ALL_PACKAGES Whether to show all distribution packages, as opposed to only showing packages that contain Django apps. True
PACKAGE_MONITOR_SHOW_EDITABLE_PACKAGES Whether to show distribution packages installed as editable. Since version information about editable packages is often outdated, this type of packages are not shown by default. False

Permissions

This is an overview of all permissions used by this app. Note that all permissions are in the "general" section.

Name Purpose Code
Can access this app and view User can access the app and also request updates to the list of distribution packages general.basic_access

Management Commands

This app also provides a CLI tool. This tool gives you access to additional features, which are meant to support admins support with analyzing potential issues.

Please run the following command to see all available features:

python manage.py packagemonitorcli -h

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aa_package_monitor-2.0.0.tar.gz (88.7 kB view details)

Uploaded Source

Built Distribution

aa_package_monitor-2.0.0-py3-none-any.whl (114.2 kB view details)

Uploaded Python 3

File details

Details for the file aa_package_monitor-2.0.0.tar.gz.

File metadata

  • Download URL: aa_package_monitor-2.0.0.tar.gz
  • Upload date:
  • Size: 88.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for aa_package_monitor-2.0.0.tar.gz
Algorithm Hash digest
SHA256 f16a2621422b153062f3044c1f88ae0f479fe1f9b01de75e8725d59baf7a0e07
MD5 06b089af36fac1d71111a6945c017673
BLAKE2b-256 c241255fb73ee68e6a200917132c611492e1db798cd260330151445bd867d150

See more details on using hashes here.

File details

Details for the file aa_package_monitor-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aa_package_monitor-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1cfaf33e6e946284fdf800e765fd00c6259076f6c6afe117a4a3ae278ffca27b
MD5 bac9ca5161cceef93382708b2f154574
BLAKE2b-256 6347249c2c17c87cb7b6f033ad3295c492a5236b0c499523b7877515ba6269af

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page