%global _empty_manifest_terminate_build 0 Name: python-django-statusboard Version: 0.13.0 Release: 1 Summary: Django app to show system status License: GPLv2+ URL: http://github.com/edigiacomo/django-statusboard Source0: https://mirrors.aliyun.com/pypi/web/packages/5c/01/8a66a5415ccaed88b58591abc049cf01ace35c6887ff3c200ded82f3ca12/django-statusboard-0.13.0.tar.gz BuildArch: noarch Requires: python3-django Requires: python3-djangorestframework Requires: python3-django-model-utils Requires: python3-pytz %description # statusboard [![Build Status](https://github.com/edigiacomo/django-statusboard/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/edigiacomo/django-statusboard/actions/workflows/build.yml) [![Pypi](https://img.shields.io/pypi/v/django-statusboard.svg)](https://pypi.python.org/pypi/django-statusboard/) [![codecov](https://codecov.io/gh/edigiacomo/django-statusboard/branch/main/graph/badge.svg)](https://codecov.io/gh/edigiacomo/django-statusboard) [![Documentation Status](https://readthedocs.org/projects/django-statusboard/badge/?version=stable)](https://django-statusboard.readthedocs.io/en/stable/?badge=stable) Status page application with browser and REST API interface. ## Installation Install the package ```sh pip install django-statusboard ``` Add the following applications to your Django projects ```python INSTALLED_APPS += [ 'django.contrib.humanize', 'django.contrib.staticfiles', 'rest_framework', 'statusboard', ] ``` Update your urlconf: ```python # myproject/urls.py urlpatterns += [ url(r'^statusboard/$', include('statusboard.urls')), ] ``` Update your database ```sh ./manage migrate ``` ## Configuration You can configure the app using the dict `STATUSBOARD` in `settings.py`: ```python from django.templatetags.static import static STATUSBOARD = { "INCIDENT_DAYS_IN_INDEX": 7, "OPEN_INCIDENT_IN_INDEX": True, "AUTO_REFRESH_INDEX_SECONDS": 0, "FAVICON_DEFAULT": static('statusboard/images/statusboard-icon-default.png'), "FAVICON_INDEX_DICT": { 0: static('statusboard/images/statusboard-icon-operational.png'), 1: static('statusboard/images/statusboard-icon-performance.png'), 2: static('statusboard/images/statusboard-icon-partial.png'), 3: static('statusboard/images/statusboard-icon-major.png'), }, } ``` * `INCIDENT_DAYS_IN_INDEX`: number of days to show in index (1 = today). * `OPEN_INCIDENT_IN_INDEX`: show not fixed incidents in index, whether or not the incident is older than `INCIDENT_DAYS_IN_INDEX`. * `AUTO_REFRESH_INDEX_SECONDS`: auto refresh home page every N seconds (0 = disabled). * `FAVICON_DEFAULT`: default favicon. * `FAVICON_INDEX_DICT`: favicon for index, based on the worst status (default: `FAVICON_DEFAULT`). The keys `(0, 1, 2, 3)` are the status values (see `SERVICE_STATUSES` in `statusboard/models.py`). ## Customize pages The following blocks are customizable in `statusboard/base.html`: * `title`: title of the page * `branding`: branding in fixed navbar * `bootstrap_theme`: bootstrap theme * `header`: header of the page * `userlinks`: links in the header * `footer`: footer div * `style`: `CSS` files * `script`: JavaScript files To customize the default style, create the file `statusboard/base.html` that extends the original base template and customize some blocks, e.g.: ``` {% extends "statusboard/base.html" %} {% load static %} {% block title %} A.C.M.E. statuspage {% endblock %} {% block branding %} {% endblock %} {% block bootstrap_theme %} {% endblock %} ``` ### Example: change branding and title Create a `statusboard/base.html` in one of your templates dir: ``` {% extends `statusboard/base.html %} {% block title %} ACME, Inc. {% endblock %} {% block branding %} ACME status {% endblock %} ``` ## Notifications `django-statusboard` doesn't provide an out-of-the-box notification system, but it's easy to implement using [django signals](https://docs.djangoproject.com/en/dev/topics/signals/) or you can use [django-statusboard-notify](https://github.com/edigiacomo/django-statusboard-notify) that provides some builtin notifications (e.g. email, Telegram). Moreover, `django-statusboard` tracks the previous status of a service (`Service._status`). ```python from django.dispatch import receiver from django.db.models.signals import post_save from django.core.mail import mail_admins from statusboard import Service @receiver(post_save, sender=Service) def notify_service_update(sender, instance, **kwargs): # Send an email to admins if the service is getting worse, otherwise do nothing. if instance.status > instance._status: mail_admins("Alert", "Service {} is {}".format(instance.name, instance.get_status_display())) ``` ## REST API `django-statusboard` comes with a set of REST API to manage its models, based on [Django REST Framework](https://www.django-rest-framework.org/) `ModelViewSet`: * `/api/v0.1/servicegroup/` * `/api/v0.1/service/` * `/api/v0.1/incident/` * `/api/v0.1/incidentupdate/` * `/api/v0.1/maintenance/` ## Development ### Running tests ``` $ DJANGO_SETTINGS_MODULE=tests.test_settings python manage.py test ``` ### Update i18n ``` $ cd statusboard && django-admin makemessages -l LOCALE ``` ## Contact and copyright information Copyright (C) 2019-2023 Emanuele Di Giacomo django-statusboard is licensed under GPLv2+. %package -n python3-django-statusboard Summary: Django app to show system status Provides: python-django-statusboard BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-statusboard # statusboard [![Build Status](https://github.com/edigiacomo/django-statusboard/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/edigiacomo/django-statusboard/actions/workflows/build.yml) [![Pypi](https://img.shields.io/pypi/v/django-statusboard.svg)](https://pypi.python.org/pypi/django-statusboard/) [![codecov](https://codecov.io/gh/edigiacomo/django-statusboard/branch/main/graph/badge.svg)](https://codecov.io/gh/edigiacomo/django-statusboard) [![Documentation Status](https://readthedocs.org/projects/django-statusboard/badge/?version=stable)](https://django-statusboard.readthedocs.io/en/stable/?badge=stable) Status page application with browser and REST API interface. ## Installation Install the package ```sh pip install django-statusboard ``` Add the following applications to your Django projects ```python INSTALLED_APPS += [ 'django.contrib.humanize', 'django.contrib.staticfiles', 'rest_framework', 'statusboard', ] ``` Update your urlconf: ```python # myproject/urls.py urlpatterns += [ url(r'^statusboard/$', include('statusboard.urls')), ] ``` Update your database ```sh ./manage migrate ``` ## Configuration You can configure the app using the dict `STATUSBOARD` in `settings.py`: ```python from django.templatetags.static import static STATUSBOARD = { "INCIDENT_DAYS_IN_INDEX": 7, "OPEN_INCIDENT_IN_INDEX": True, "AUTO_REFRESH_INDEX_SECONDS": 0, "FAVICON_DEFAULT": static('statusboard/images/statusboard-icon-default.png'), "FAVICON_INDEX_DICT": { 0: static('statusboard/images/statusboard-icon-operational.png'), 1: static('statusboard/images/statusboard-icon-performance.png'), 2: static('statusboard/images/statusboard-icon-partial.png'), 3: static('statusboard/images/statusboard-icon-major.png'), }, } ``` * `INCIDENT_DAYS_IN_INDEX`: number of days to show in index (1 = today). * `OPEN_INCIDENT_IN_INDEX`: show not fixed incidents in index, whether or not the incident is older than `INCIDENT_DAYS_IN_INDEX`. * `AUTO_REFRESH_INDEX_SECONDS`: auto refresh home page every N seconds (0 = disabled). * `FAVICON_DEFAULT`: default favicon. * `FAVICON_INDEX_DICT`: favicon for index, based on the worst status (default: `FAVICON_DEFAULT`). The keys `(0, 1, 2, 3)` are the status values (see `SERVICE_STATUSES` in `statusboard/models.py`). ## Customize pages The following blocks are customizable in `statusboard/base.html`: * `title`: title of the page * `branding`: branding in fixed navbar * `bootstrap_theme`: bootstrap theme * `header`: header of the page * `userlinks`: links in the header * `footer`: footer div * `style`: `CSS` files * `script`: JavaScript files To customize the default style, create the file `statusboard/base.html` that extends the original base template and customize some blocks, e.g.: ``` {% extends "statusboard/base.html" %} {% load static %} {% block title %} A.C.M.E. statuspage {% endblock %} {% block branding %} {% endblock %} {% block bootstrap_theme %} {% endblock %} ``` ### Example: change branding and title Create a `statusboard/base.html` in one of your templates dir: ``` {% extends `statusboard/base.html %} {% block title %} ACME, Inc. {% endblock %} {% block branding %} ACME status {% endblock %} ``` ## Notifications `django-statusboard` doesn't provide an out-of-the-box notification system, but it's easy to implement using [django signals](https://docs.djangoproject.com/en/dev/topics/signals/) or you can use [django-statusboard-notify](https://github.com/edigiacomo/django-statusboard-notify) that provides some builtin notifications (e.g. email, Telegram). Moreover, `django-statusboard` tracks the previous status of a service (`Service._status`). ```python from django.dispatch import receiver from django.db.models.signals import post_save from django.core.mail import mail_admins from statusboard import Service @receiver(post_save, sender=Service) def notify_service_update(sender, instance, **kwargs): # Send an email to admins if the service is getting worse, otherwise do nothing. if instance.status > instance._status: mail_admins("Alert", "Service {} is {}".format(instance.name, instance.get_status_display())) ``` ## REST API `django-statusboard` comes with a set of REST API to manage its models, based on [Django REST Framework](https://www.django-rest-framework.org/) `ModelViewSet`: * `/api/v0.1/servicegroup/` * `/api/v0.1/service/` * `/api/v0.1/incident/` * `/api/v0.1/incidentupdate/` * `/api/v0.1/maintenance/` ## Development ### Running tests ``` $ DJANGO_SETTINGS_MODULE=tests.test_settings python manage.py test ``` ### Update i18n ``` $ cd statusboard && django-admin makemessages -l LOCALE ``` ## Contact and copyright information Copyright (C) 2019-2023 Emanuele Di Giacomo django-statusboard is licensed under GPLv2+. %package help Summary: Development documents and examples for django-statusboard Provides: python3-django-statusboard-doc %description help # statusboard [![Build Status](https://github.com/edigiacomo/django-statusboard/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/edigiacomo/django-statusboard/actions/workflows/build.yml) [![Pypi](https://img.shields.io/pypi/v/django-statusboard.svg)](https://pypi.python.org/pypi/django-statusboard/) [![codecov](https://codecov.io/gh/edigiacomo/django-statusboard/branch/main/graph/badge.svg)](https://codecov.io/gh/edigiacomo/django-statusboard) [![Documentation Status](https://readthedocs.org/projects/django-statusboard/badge/?version=stable)](https://django-statusboard.readthedocs.io/en/stable/?badge=stable) Status page application with browser and REST API interface. ## Installation Install the package ```sh pip install django-statusboard ``` Add the following applications to your Django projects ```python INSTALLED_APPS += [ 'django.contrib.humanize', 'django.contrib.staticfiles', 'rest_framework', 'statusboard', ] ``` Update your urlconf: ```python # myproject/urls.py urlpatterns += [ url(r'^statusboard/$', include('statusboard.urls')), ] ``` Update your database ```sh ./manage migrate ``` ## Configuration You can configure the app using the dict `STATUSBOARD` in `settings.py`: ```python from django.templatetags.static import static STATUSBOARD = { "INCIDENT_DAYS_IN_INDEX": 7, "OPEN_INCIDENT_IN_INDEX": True, "AUTO_REFRESH_INDEX_SECONDS": 0, "FAVICON_DEFAULT": static('statusboard/images/statusboard-icon-default.png'), "FAVICON_INDEX_DICT": { 0: static('statusboard/images/statusboard-icon-operational.png'), 1: static('statusboard/images/statusboard-icon-performance.png'), 2: static('statusboard/images/statusboard-icon-partial.png'), 3: static('statusboard/images/statusboard-icon-major.png'), }, } ``` * `INCIDENT_DAYS_IN_INDEX`: number of days to show in index (1 = today). * `OPEN_INCIDENT_IN_INDEX`: show not fixed incidents in index, whether or not the incident is older than `INCIDENT_DAYS_IN_INDEX`. * `AUTO_REFRESH_INDEX_SECONDS`: auto refresh home page every N seconds (0 = disabled). * `FAVICON_DEFAULT`: default favicon. * `FAVICON_INDEX_DICT`: favicon for index, based on the worst status (default: `FAVICON_DEFAULT`). The keys `(0, 1, 2, 3)` are the status values (see `SERVICE_STATUSES` in `statusboard/models.py`). ## Customize pages The following blocks are customizable in `statusboard/base.html`: * `title`: title of the page * `branding`: branding in fixed navbar * `bootstrap_theme`: bootstrap theme * `header`: header of the page * `userlinks`: links in the header * `footer`: footer div * `style`: `CSS` files * `script`: JavaScript files To customize the default style, create the file `statusboard/base.html` that extends the original base template and customize some blocks, e.g.: ``` {% extends "statusboard/base.html" %} {% load static %} {% block title %} A.C.M.E. statuspage {% endblock %} {% block branding %} {% endblock %} {% block bootstrap_theme %} {% endblock %} ``` ### Example: change branding and title Create a `statusboard/base.html` in one of your templates dir: ``` {% extends `statusboard/base.html %} {% block title %} ACME, Inc. {% endblock %} {% block branding %} ACME status {% endblock %} ``` ## Notifications `django-statusboard` doesn't provide an out-of-the-box notification system, but it's easy to implement using [django signals](https://docs.djangoproject.com/en/dev/topics/signals/) or you can use [django-statusboard-notify](https://github.com/edigiacomo/django-statusboard-notify) that provides some builtin notifications (e.g. email, Telegram). Moreover, `django-statusboard` tracks the previous status of a service (`Service._status`). ```python from django.dispatch import receiver from django.db.models.signals import post_save from django.core.mail import mail_admins from statusboard import Service @receiver(post_save, sender=Service) def notify_service_update(sender, instance, **kwargs): # Send an email to admins if the service is getting worse, otherwise do nothing. if instance.status > instance._status: mail_admins("Alert", "Service {} is {}".format(instance.name, instance.get_status_display())) ``` ## REST API `django-statusboard` comes with a set of REST API to manage its models, based on [Django REST Framework](https://www.django-rest-framework.org/) `ModelViewSet`: * `/api/v0.1/servicegroup/` * `/api/v0.1/service/` * `/api/v0.1/incident/` * `/api/v0.1/incidentupdate/` * `/api/v0.1/maintenance/` ## Development ### Running tests ``` $ DJANGO_SETTINGS_MODULE=tests.test_settings python manage.py test ``` ### Update i18n ``` $ cd statusboard && django-admin makemessages -l LOCALE ``` ## Contact and copyright information Copyright (C) 2019-2023 Emanuele Di Giacomo django-statusboard is licensed under GPLv2+. %prep %autosetup -n django-statusboard-0.13.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-django-statusboard -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.13.0-1 - Package Spec generated