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.
Installation
PyPI: django-wm
pip install django-wm
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_wm-1.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82355f5d9d8d885c183406cdc2568f62c1ebaa6097d294880f464f0b0078773f |
|
MD5 | 4560dbea3498efff38ca123194dc850e |
|
BLAKE2b-256 | d2d582c2b04ecaa389398db0994d9167eac12a492a95b3f66debea1b303f96a9 |