@@ -14,7 +14,7 @@ Encryption in your Django project.
1414.. admonition :: MongoDB requirements
1515
1616 Queryable Encryption can be used with MongoDB replica sets or sharded
17- clusters running version 7 .0 or later. Standalone instances are not
17+ clusters running version 8 .0 or later. Standalone instances are not
1818 supported. The following table summarizes which MongoDB server products
1919 support each Queryable Encryption mechanism.
2020
@@ -51,21 +51,36 @@ encryption keys.
5151
5252 import os
5353
54- from django_mongodb_backend import parse_uri
5554 from pymongo.encryption_options import AutoEncryptionOpts
5655
5756 DATABASES = {
58- # ...
59- " encrypted" : parse_uri(
60- DATABASE_URL ,
61- options = {
57+ " default" : {
58+ " ENGINE" : " django_mongodb_backend" ,
59+ " HOST" : " mongodb+srv://cluster0.example.mongodb.net" ,
60+ " NAME" : " my_database" ,
61+ " USER" : " my_user" ,
62+ " PASSWORD" : " my_password" ,
63+ " PORT" : 27017 ,
64+ " OPTIONS" : {
65+ " retryWrites" : " true" ,
66+ " w" : " majority" ,
67+ " tls" : " false" ,
68+ },
69+ },
70+ " encrypted" : {
71+ " ENGINE" : " django_mongodb_backend" ,
72+ " HOST" : " mongodb+srv://cluster0.example.mongodb.net" ,
73+ " NAME" : " encrypted" ,
74+ " USER" : " my_user" ,
75+ " PASSWORD" : " my_password" ,
76+ " PORT" : 27017 ,
77+ " OPTIONS" : {
6278 " auto_encryption_opts" : AutoEncryptionOpts(
63- key_vault_namespace = " keyvault .keyvault" ,
79+ key_vault_namespace = " encrypted .keyvault" ,
6480 kms_providers = {" local" : {" key" : os.urandom(96 )}},
6581 )
6682 },
67- db_name = " encrypted" ,
68- ),
83+ },
6984 }
7085
7186 Configuring the ``DATABASE_ROUTERS `` setting
@@ -88,10 +103,15 @@ configure a custom router for Queryable Encryption:
88103 Encryption.
89104 """
90105
106+ def db_for_read (self , model , ** hints ):
107+ if model._meta.app_label == " myapp" :
108+ return " encrypted"
109+ return None
110+
111+ db_for_write = db_for_read
112+
91113 def allow_migrate (self , db , app_label , model_name = None , ** hints ):
92- # The patientdata app's models are only created in the encrypted
93- # database.
94- if app_label == " patientdata" :
114+ if app_label == " myapp" :
95115 return db == " encrypted"
96116 # Don't create other app's models in the encrypted database.
97117 if db == " encrypted" :
0 commit comments