2626from django_mongodb_backend .models import EmbeddedModel
2727
2828
29- class Billing (EmbeddedModel ):
30- cc_type = models .CharField (max_length = 50 )
31- cc_number = models .CharField (max_length = 20 )
32-
33-
34- class PatientRecord (EmbeddedModel ):
35- ssn = EncryptedCharField (max_length = 11 , queries = {"queryType" : "equality" })
36- billing = EncryptedEmbeddedModelField (Billing )
37-
38-
3929class Patient (models .Model ):
4030 patient_name = models .CharField (max_length = 255 )
4131 patient_id = models .BigIntegerField ()
42- patient_record = EmbeddedModelField (PatientRecord )
32+ patient_record = EmbeddedModelField (" PatientRecord" )
4333
4434 def __str__ (self ):
4535 return f"{ self .patient_name } ({ self .patient_id } )"
4636
4737
48- class EncryptedModel (models .Model ):
38+ class PatientRecord (EmbeddedModel ):
39+ ssn = EncryptedCharField (max_length = 11 , queries = {"queryType" : "equality" })
40+ billing = EncryptedEmbeddedModelField ("Billing" )
41+ bill_amount = models .DecimalField (max_digits = 10 , decimal_places = 2 )
42+
43+
44+ class Billing (EmbeddedModel ):
45+ cc_type = models .CharField (max_length = 50 )
46+ cc_number = models .CharField (max_length = 20 )
47+
48+
49+ class EncryptedModelBase (models .Model ):
4950 """
5051 Abstract base model for all Encrypted models
5152 that require the 'supports_queryable_encryption' DB feature.
@@ -57,78 +58,78 @@ class Meta:
5758
5859
5960# Equality-queryable fields
60- class EncryptedBinaryTest (EncryptedModel ):
61+ class EncryptedBinaryTest (EncryptedModelBase ):
6162 value = EncryptedBinaryField (queries = {"queryType" : "equality" })
6263
6364
64- class EncryptedBooleanTest (EncryptedModel ):
65+ class EncryptedBooleanTest (EncryptedModelBase ):
6566 value = EncryptedBooleanField (queries = {"queryType" : "equality" })
6667
6768
68- class EncryptedCharTest (EncryptedModel ):
69+ class EncryptedCharTest (EncryptedModelBase ):
6970 value = EncryptedCharField (max_length = 255 , queries = {"queryType" : "equality" })
7071
7172
72- class EncryptedEmailTest (EncryptedModel ):
73+ class EncryptedEmailTest (EncryptedModelBase ):
7374 value = EncryptedEmailField (max_length = 255 , queries = {"queryType" : "equality" })
7475
7576
76- class EncryptedGenericIPAddressTest (EncryptedModel ):
77+ class EncryptedGenericIPAddressTest (EncryptedModelBase ):
7778 value = EncryptedGenericIPAddressField (queries = {"queryType" : "equality" })
7879
7980
80- class EncryptedTextTest (EncryptedModel ):
81+ class EncryptedTextTest (EncryptedModelBase ):
8182 value = EncryptedTextField (queries = {"queryType" : "equality" })
8283
8384
84- class EncryptedURLTest (EncryptedModel ):
85+ class EncryptedURLTest (EncryptedModelBase ):
8586 value = EncryptedURLField (max_length = 500 , queries = {"queryType" : "equality" })
8687
8788
8889# Range-queryable fields (also support equality)
89- class EncryptedBigIntegerTest (EncryptedModel ):
90+ class EncryptedBigIntegerTest (EncryptedModelBase ):
9091 value = EncryptedBigIntegerField (queries = {"queryType" : "range" })
9192
9293
93- class EncryptedDateTest (EncryptedModel ):
94+ class EncryptedDateTest (EncryptedModelBase ):
9495 value = EncryptedDateField (queries = {"queryType" : "range" })
9596
9697
97- class EncryptedDateTimeTest (EncryptedModel ):
98+ class EncryptedDateTimeTest (EncryptedModelBase ):
9899 value = EncryptedDateTimeField (queries = {"queryType" : "range" })
99100
100101
101- class EncryptedDecimalTest (EncryptedModel ):
102+ class EncryptedDecimalTest (EncryptedModelBase ):
102103 value = EncryptedDecimalField (max_digits = 10 , decimal_places = 2 , queries = {"queryType" : "range" })
103104
104105
105- class EncryptedDurationTest (EncryptedModel ):
106+ class EncryptedDurationTest (EncryptedModelBase ):
106107 value = EncryptedDurationField (queries = {"queryType" : "range" })
107108
108109
109- class EncryptedFloatTest (EncryptedModel ):
110+ class EncryptedFloatTest (EncryptedModelBase ):
110111 value = EncryptedFloatField (queries = {"queryType" : "range" })
111112
112113
113- class EncryptedIntegerTest (EncryptedModel ):
114+ class EncryptedIntegerTest (EncryptedModelBase ):
114115 value = EncryptedIntegerField (queries = {"queryType" : "range" })
115116
116117
117- class EncryptedPositiveBigIntegerTest (EncryptedModel ):
118+ class EncryptedPositiveBigIntegerTest (EncryptedModelBase ):
118119 value = EncryptedPositiveBigIntegerField (queries = {"queryType" : "range" })
119120
120121
121- class EncryptedPositiveIntegerTest (EncryptedModel ):
122+ class EncryptedPositiveIntegerTest (EncryptedModelBase ):
122123 value = EncryptedPositiveIntegerField (queries = {"queryType" : "range" })
123124
124125
125- class EncryptedPositiveSmallIntegerTest (EncryptedModel ):
126+ class EncryptedPositiveSmallIntegerTest (EncryptedModelBase ):
126127 value = EncryptedPositiveSmallIntegerField (queries = {"queryType" : "range" })
127128
128129
129- class EncryptedSmallIntegerTest (EncryptedModel ):
130+ class EncryptedSmallIntegerTest (EncryptedModelBase ):
130131 value = EncryptedSmallIntegerField (queries = {"queryType" : "range" })
131132
132133
133- class EncryptedTimeTest (EncryptedModel ):
134+ class EncryptedTimeTest (EncryptedModelBase ):
134135 value = EncryptedTimeField (queries = {"queryType" : "range" })
0 commit comments