A Django app that connects to a replica of the MusicBrainz database.
Project description
Django MusicBrainz Connector
The Django MusicBrainz Connector is a Django app that connects to a replica of the MusicBrainz PostgreSQL database.
Installation
-
Using the Django MusicBrainz Connector requires that you have a replica of the MusicBrainz database. You can create one by following the installation steps in the MusicBrainz Server.
-
Install this module from PyPI, for example:
python3 -m pip install django-musicbrainz-connector
Alternatively, install from code:
git clone git@github.com:marios-zindilis/django-musicbrainz-connector.git cd django-musicbrainz-connector python setup.py sdist python -m pip install dist/django-musicbrainz-connector-0.0.1.tar.gz
-
Append the app to your Django project's
settings.py
list ofINSTALLED_APPS
, for example:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_musicbrainz_connector', # <-- like this ]
-
Create a read-only user in the MusicBrainz Postgresql replica database. This step is not required, but it is highly recommended. Example commands:
\c musicbrainz_db CREATE USER django_musicbrainz_connector WITH PASSWORD 'sUp3rSecr3t'; GRANT CONNECT ON DATABASE musicbrainz_db TO django_musicbrainz_connector; GRANT USAGE ON SCHEMA musicbrainz TO django_musicbrainz_connector; GRANT SELECT ON ALL TABLES IN SCHEMA musicbrainz TO django_musicbrainz_connector; ALTER USER django_musicbrainz_connector SET SEARCH_PATH TO musicbrainz;
You can confirm this with something like:
SELECT grantee, privilege_type FROM information_schema.role_table_grants WHERE table_name='area_type';
The output should include the user you just created:
grantee | privilege_type ------------------------------+---------------- musicbrainz | INSERT musicbrainz | SELECT musicbrainz | UPDATE musicbrainz | DELETE musicbrainz | TRUNCATE musicbrainz | REFERENCES musicbrainz | TRIGGER django_musicbrainz_connector | SELECT
You can also connect to the database with
psql
:psql -d musicbrainz_db -U django_musicbrainz_connector SELECT * FROM musicbrainz.area_type;
-
Add the MusicBrainz database to your Django project's
settings.py
list ofDATABASES
. You shouldn't use the MusicBrainz database as the Django default database, because this app is only meant to have read access. For example:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', }, 'musicbrainz_db': { 'NAME': "musicbrainz_db", "ENGINE": "django.db.backends.postgresql", "USER": "django_musicbrainz_connector", "PASSWORD": "sUp3rSecr3t", }, }
-
Add the database router to your Django project's
settings.py
list ofDATABASE_ROUTERS
, for example:DATABASE_ROUTERS = [ "django_musicbrainz_connector.routers.DjangoMusicBrainzConnectorDatabaseRouter", ]
-
Apply the migrations. This doesn't make any changes to the MusicBrainz database:
python manage.py migrate
-
Include the URLs in your Django project's
urls.py
, for example:urlpatterns = [ path("admin/", admin.site.urls), path("mb/", include("django_musicbrainz_connector.urls")), # <-- like this # other stuff here ]
Notes on Read-Only Access
This app provides read-only connectivity to the database, because it assumes that you maintain a replica of the MusicBrainz Postgresql database, and therefore it makes no sense to be able to write to it. This is done in several ways:
-
It is recommended that you create a read-only user in Postgresql, and use that user for this app. The installation documentation includes step-by-step instructions for this.
-
All models have
Meta.managed
set toFalse
. -
For models registered in the Django Admin, methods
has_add_permission
,has_change_permission
andhas_delete_permission
are always set toFalse
. -
All classes that inherit from Django REST Framework's
ViewSet
havehttp_method_names
set to["get"]
only.
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
File details
Details for the file django-musicbrainz-connector-0.0.2.tar.gz
.
File metadata
- Download URL: django-musicbrainz-connector-0.0.2.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 157cbb1f78f0db359d9e1a5c4c2d52fc32102848eb553fb244b64be925f4bb6f |
|
MD5 | e16d526f6cf5be9bddcf5d58f1ab4f14 |
|
BLAKE2b-256 | 440ca690ba5a91cbdb0c8c3975cb358e6569e5190733de7dc794756a8475fa38 |
File details
Details for the file django_musicbrainz_connector-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: django_musicbrainz_connector-0.0.2-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ca839f74f9df9c14e7cc9e8a72e043dbd566dba8aac83e00a2a8ef698722659 |
|
MD5 | bcb808b491e4cb7103da3e1da418dfcc |
|
BLAKE2b-256 | 497c74d21e51e13c631d31f8ad752f27e35c088f3b0930c0240685a169f7ec97 |