Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
.. |Build status| image:: https://circleci.com/gh/django-wiki/django-nyt.svg?style=shield :target: https://app.circleci.com/pipelines/github/django-wiki/django-nyt .. image:: https://readthedocs.org/projects/django-nyt/badge/?version=latest :target: https://django-nyt.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. image:: https://badge.fury.io/py/django-nyt.svg :target: https://pypi.org/project/django-nyt/ .. image:: https://codecov.io/github/django-wiki/django-nyt/coverage.svg?branch=main :target: https://app.codecov.io/github/django-wiki/django-nyt?branch=main
django-nyt is a notification framework for Django. It does this:
.. code:: python
from django_nyt.utils import notify
EVENT_KEY = "my_key"
notify(_("OMG! Something happened"), EVENT_KEY)
All users subscribing to "my_key"
will have a notification created when notify()
is called.
How the notification is handled depends on the user's settings.
If you have emails enabled, subscribers receive a summary of notifications immediately or at an interval of their choice.
Data can be accessed easily from Django models or from the included JSON views.
By using generic object relations, custom URLs, and custom email templates, you can expand your notification logic to create email messages that both marks the notification as read when clicking a link and at the same time redirects users to a final destination:
.. code:: python
from django_nyt.utils import notify
product = product
EVENT_KEY = "product_is_in_stock"
notify(
_(f"{product.name} is in stock"),
EVENT_KEY,
url=f"/products/{product.id}/",
target_object=product
)
This project makes sense if people start using it and maturing it to their use-cases.
Here are some aspects that aren't covered but are most welcome:
https://django-nyt.readthedocs.io/en/latest/
Users need a cleverly sifted stream of events that's highly customizable as well. By using django-nyt, your users can subscribe to global events or specific events pertaining specific objects.
Instead of inventing your own notification system, use this and you won't have to design your own models, and you will have a nice guide that goes through the various steps of implementing notifications for your project.
Let's try to summarize the reasons you want to be using django-nyt:
notify()
where-ever you want.This project exists with django.contrib.messages
in mind, to serve a simple,
best-practice, scalable solution for notifications. There are loads of other
notification apps for Django, some focus on integration of specific communication
protocols
django-nyt does everything it can to meet as many needs as possible and have sane defaults.
But you need to do a lot! Firstly, you need to write some JavaScript that will fetch the latest notifications and display them in some area of the screen. Upon clicking that icon, the latest notifications are displayed, and clicking an individual notification will redirect the user through a page that marks the notification as read.
Something like this:
.. image:: https://raw.githubusercontent.com/django-wiki/django-nyt/master/docs/misc/screenshot_dropdown.png :alt: Javascript drop-down
JavaScript drop-down: Some examples are provided in the docs, but there is no real easy way to place this nifty little thing at the top of your site, you're going to have to work it out on your own.
Other items for your TODO list:
Provide your users with options to customize their subscriptions and
notification preferences. Create your own Form
inheriting from
django_nyt.forms.SettingsForm
.
Customize contents of notification emails by overwriting templates in
django_nyt/emails/notification_email_message.txt
and
django_nyt/emails/notification_email_subject.txt
.
You can also have separate email templates per notification key. This includes using glob patterns. For instance, you can add this in your settings:
.. code-block:: python
NYT_EMAIL_TEMPLATE_NAMES = OrderedDict({ "ADMIN_": "myapp/notifications/email/admins.txt" "": "myapp/notifications/email/default.txt" }) NYT_EMAIL_TEMPLATE_SUBJECT_NAMES = OrderedDict({ "ADMIN_": "myapp/notifications/email/admins_subject.txt" "": "myapp/notifications/email/default_subject.txt" })
Make the mail notification daemon script run either constantly
python manage.py notifymail --daemon
or with some interval by invoking
python manage.py notifymail --cron
as a cronjob. You can also call it
from a Celery task or similar with call_command('notifymail', cron=True)
.
In your Git fork, run pip install -r requirements.txt
to install the
requirements.
Install pre-commit hooks to verify your commits::
pip install pre-commit
pre-commit install
The folder test-project/ contains a pre-configured django project and an SQlite database. Login for django admin is admin:admin::
cd test-project
python manage.py runserver
After this, navigate to http://localhost:8000 <http://localhost:8000>
_
As many django-wiki users are also familiar with Django, please visit the channel #django-wiki on Libera. Click here for a web client https://web.libera.chat/?channel=#django-wiki`__).
Otherwise, use the Discussions <https://github.com/django-wiki/django-nyt/discussions>
__ tab on GitHub.
FAQs
A pluggable notification system written for the Django framework.
We found that django-nyt demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.