Webmention support for any Django model.
Project description
Mentions
Mentions lets you add Webmention functionality to any Django model with minimal setup. There is an implementation running at https://django-wm.dev/ with source code available here.
Setup
Celery
Mentions uses Celery and RabbitMQ for running tasks asynchronously. If you do not use them already you will need to set them up first.
System:
sudo apt install rabbitmq-server # Create user for celery service and make sure it can access your database # e.g: sudo useradd -N -M --system -s /bin/bash celery sudo usermod -a -G www-data celery # Run celery sudo -u celery env/bin/celery -A projectname worker &
Project:
Add celery.py
to your root project. For an example implementation
see celery.py from the example project.
Project code
Root project
settings.py
:Set
DOMAIN_NAME
:DOMAIN_NAME = 'your.url.here' # e.g. 'django-wm.dev'
Add “mentions” to
INSTALLED_APPS
:INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.flatpages', 'django.contrib.sites', ... 'mentions', ]
Add :code:’mentions.middleware.WebmentionHeadMiddleware’ to
MIDDLEWARE
:MIDDLEWARE = [ ... 'mentions.middleware.WebmentionHeadMiddleware', ]
Root project
urls.py
urlpatterns = [ ... path('webmentions/', include('mentions.urls')), ]
Include
MentionableMixin
in the model(s) you want to support webmention functionality.IMPORTANT: Any models that include the mixin must also implement
all_text
andget_absolute_url
methods:from mentions.models.mixins.mentionable import MentionableMixin ... class MyModel(MentionableMixin, models.Model): ... def all_text(self) -> str: return f'{self.introduction} {self.content}' def get_absolute_url() -> str: return reverse('app.views.name', kwargs={'slug': self.slug})
Update database tables:
python manage.py makemigrations python manage.py migrate
Optional Settings
Add these keys to your project settings.py
to alter default behaviour.
WEBMENTIONS_AUTO_APPROVE
=bool
(default:False
)
True
: Received webmentions are automatically approved and may be publicly visible.False
: Received webmentions require manual approval before they can be made public.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django_wm-1.2.1-py3-none-any.whl (44.0 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size django-wm-1.2.1.tar.gz (33.2 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for django_wm-1.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4aeedd288ab3aafaf300867f14e5c5c82f25c65f9650dccfba2544c27d47c5a |
|
MD5 | 4c7e5c6ab97cb92d022273ecc60fd2e4 |
|
BLAKE2-256 | 936f2c3c1f5982057fdc54f52597a067f6f4d79e756aa9227fc0a666ded74235 |