django-camomilla-cms 6.0.0b18__py2.py3-none-any.whl → 6.0.1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- camomilla/__init__.py +1 -1
- camomilla/models/page.py +1 -8
- camomilla/serializers/base/__init__.py +9 -5
- camomilla/settings.py +15 -2
- camomilla/templatetags/model_extras.py +8 -4
- camomilla/theme/__init__.py +1 -1
- camomilla/theme/admin/pages.py +20 -0
- camomilla/utils/templates.py +27 -7
- camomilla/views/base/__init__.py +4 -2
- camomilla/views/mixins/pagination.py +1 -1
- django_camomilla_cms-6.0.1.dist-info/METADATA +133 -0
- {django_camomilla_cms-6.0.0b18.dist-info → django_camomilla_cms-6.0.1.dist-info}/RECORD +26 -25
- {django_camomilla_cms-6.0.0b18.dist-info → django_camomilla_cms-6.0.1.dist-info}/WHEEL +1 -1
- tests/fixtures/__init__.py +3 -6
- tests/test_admin_page_form.py +63 -0
- tests/test_camomilla_filters.py +7 -3
- tests/test_media.py +54 -15
- tests/test_menu.py +33 -18
- tests/test_model_api.py +61 -16
- tests/test_model_api_permissions.py +7 -2
- tests/test_model_api_register.py +118 -156
- tests/test_pages.py +139 -131
- tests/test_templates_context.py +62 -24
- tests/test_utils.py +53 -83
- django_camomilla_cms-6.0.0b18.dist-info/METADATA +0 -79
- {django_camomilla_cms-6.0.0b18.dist-info → django_camomilla_cms-6.0.1.dist-info}/licenses/LICENSE +0 -0
- {django_camomilla_cms-6.0.0b18.dist-info → django_camomilla_cms-6.0.1.dist-info}/top_level.txt +0 -0
tests/test_model_api_register.py
CHANGED
@@ -9,8 +9,7 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
9
9
|
def setUp(self):
|
10
10
|
self.client = APIClient()
|
11
11
|
token = login_superuser()
|
12
|
-
self.client.credentials(HTTP_AUTHORIZATION=
|
13
|
-
|
12
|
+
self.client.credentials(HTTP_AUTHORIZATION="Token " + token)
|
14
13
|
|
15
14
|
@pytest.mark.django_db
|
16
15
|
def test_model_api_register_access(self):
|
@@ -18,16 +17,11 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
18
17
|
response = client.post("/api/models/test-model/")
|
19
18
|
assert response.status_code == 401
|
20
19
|
|
21
|
-
|
22
20
|
@pytest.mark.django_db
|
23
21
|
def test_model_api_register_crud(self):
|
24
22
|
# Create test model 1
|
25
23
|
response = self.client.post(
|
26
|
-
"/api/models/test-model/",
|
27
|
-
{
|
28
|
-
"title": "title_test_model_1"
|
29
|
-
},
|
30
|
-
format='json'
|
24
|
+
"/api/models/test-model/", {"title": "title_test_model_1"}, format="json"
|
31
25
|
)
|
32
26
|
assert response.status_code == 201
|
33
27
|
assert len(TestModel.objects.all()) == 1
|
@@ -37,11 +31,7 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
37
31
|
|
38
32
|
# Create test model 2
|
39
33
|
response = self.client.post(
|
40
|
-
"/api/models/test-model/",
|
41
|
-
{
|
42
|
-
"title": "title_test_model_2"
|
43
|
-
},
|
44
|
-
format='json'
|
34
|
+
"/api/models/test-model/", {"title": "title_test_model_2"}, format="json"
|
45
35
|
)
|
46
36
|
assert response.status_code == 201
|
47
37
|
assert len(TestModel.objects.all()) == 2
|
@@ -51,11 +41,11 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
51
41
|
|
52
42
|
# Update test model 2
|
53
43
|
response = self.client.patch(
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
44
|
+
"/api/models/test-model/2/",
|
45
|
+
{
|
46
|
+
"title": "title_test_model_2_updated",
|
47
|
+
},
|
48
|
+
format="json",
|
59
49
|
)
|
60
50
|
assert response.status_code == 200
|
61
51
|
assert len(TestModel.objects.all()) == 2
|
@@ -66,16 +56,16 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
66
56
|
# Read test model 2
|
67
57
|
response = self.client.get("/api/models/test-model/2/")
|
68
58
|
assert response.status_code == 200
|
69
|
-
assert response.json()[
|
70
|
-
assert response.json()[
|
59
|
+
assert response.json()["id"] == 2
|
60
|
+
assert response.json()["title"] == "title_test_model_2_updated"
|
71
61
|
|
72
62
|
# Read test models
|
73
63
|
response = self.client.get("/api/models/test-model/")
|
74
64
|
assert response.status_code == 200
|
75
|
-
assert response.json()[0][
|
76
|
-
assert response.json()[0][
|
77
|
-
assert response.json()[1][
|
78
|
-
assert response.json()[1][
|
65
|
+
assert response.json()[0]["id"] == 2
|
66
|
+
assert response.json()[0]["title"] == "title_test_model_2_updated"
|
67
|
+
assert response.json()[1]["id"] == 1
|
68
|
+
assert response.json()[1]["title"] == "title_test_model_1"
|
79
69
|
|
80
70
|
# Delete page
|
81
71
|
response = self.client.delete("/api/models/test-model/2/")
|
@@ -85,36 +75,23 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
85
75
|
assert test_model.id == 1
|
86
76
|
assert test_model.title == "title_test_model_1"
|
87
77
|
|
88
|
-
|
89
78
|
@pytest.mark.django_db
|
90
79
|
def test_model_api_register_listing(self):
|
91
80
|
# Create test model 1
|
92
81
|
response = self.client.post(
|
93
|
-
"/api/models/test-model/",
|
94
|
-
{
|
95
|
-
"title": "title_test_model_1"
|
96
|
-
},
|
97
|
-
format='json'
|
82
|
+
"/api/models/test-model/", {"title": "title_test_model_1"}, format="json"
|
98
83
|
)
|
99
84
|
assert response.status_code == 201
|
100
85
|
|
101
86
|
# Create test model 2
|
102
87
|
response = self.client.post(
|
103
|
-
"/api/models/test-model/",
|
104
|
-
{
|
105
|
-
"title": "title_test_model_2"
|
106
|
-
},
|
107
|
-
format='json'
|
88
|
+
"/api/models/test-model/", {"title": "title_test_model_2"}, format="json"
|
108
89
|
)
|
109
90
|
assert response.status_code == 201
|
110
91
|
|
111
92
|
# Create test model 3
|
112
93
|
response = self.client.post(
|
113
|
-
"/api/models/test-model/",
|
114
|
-
{
|
115
|
-
"title": "title_test_model_3"
|
116
|
-
},
|
117
|
-
format='json'
|
94
|
+
"/api/models/test-model/", {"title": "title_test_model_3"}, format="json"
|
118
95
|
)
|
119
96
|
assert response.status_code == 201
|
120
97
|
|
@@ -122,110 +99,112 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
122
99
|
response = self.client.get("/api/models/test-model/")
|
123
100
|
assert response.status_code == 200
|
124
101
|
assert len(response.json()) == 3
|
125
|
-
assert response.json()[0][
|
126
|
-
assert response.json()[1][
|
127
|
-
assert response.json()[2][
|
102
|
+
assert response.json()[0]["id"] == 3
|
103
|
+
assert response.json()[1]["id"] == 2
|
104
|
+
assert response.json()[2]["id"] == 1
|
128
105
|
|
129
106
|
# Pagination
|
130
107
|
response = self.client.get("/api/models/test-model/?items=2")
|
131
108
|
assert response.status_code == 200
|
132
|
-
assert len(response.json()[
|
133
|
-
assert response.json()[
|
134
|
-
assert response.json()[
|
135
|
-
assert response.json()[
|
136
|
-
assert response.json()[
|
137
|
-
assert response.json()[
|
138
|
-
assert response.json()[
|
139
|
-
assert response.json()[
|
140
|
-
assert response.json()[
|
109
|
+
assert len(response.json()["items"]) == 2
|
110
|
+
assert response.json()["items"][0]["id"] == 3
|
111
|
+
assert response.json()["items"][1]["id"] == 2
|
112
|
+
assert response.json()["paginator"]["count"] == 3
|
113
|
+
assert response.json()["paginator"]["page"] == 1
|
114
|
+
assert response.json()["paginator"]["has_next"] == True
|
115
|
+
assert response.json()["paginator"]["has_previous"] == False
|
116
|
+
assert response.json()["paginator"]["pages"] == 2
|
117
|
+
assert response.json()["paginator"]["page_size"] == 2
|
141
118
|
|
142
119
|
response = self.client.get("/api/models/test-model/?items=2&page=2")
|
143
120
|
assert response.status_code == 200
|
144
|
-
assert len(response.json()[
|
145
|
-
assert response.json()[
|
146
|
-
assert response.json()[
|
147
|
-
assert response.json()[
|
148
|
-
assert response.json()[
|
149
|
-
assert response.json()[
|
150
|
-
assert response.json()[
|
151
|
-
assert response.json()[
|
121
|
+
assert len(response.json()["items"]) == 1
|
122
|
+
assert response.json()["items"][0]["id"] == 1
|
123
|
+
assert response.json()["paginator"]["count"] == 3
|
124
|
+
assert response.json()["paginator"]["page"] == 2
|
125
|
+
assert response.json()["paginator"]["has_next"] == False
|
126
|
+
assert response.json()["paginator"]["has_previous"] == True
|
127
|
+
assert response.json()["paginator"]["pages"] == 2
|
128
|
+
assert response.json()["paginator"]["page_size"] == 2
|
152
129
|
|
153
130
|
# Filtering
|
154
|
-
response = self.client.get(
|
131
|
+
response = self.client.get(
|
132
|
+
"/api/models/test-model/?fltr=title=title_test_model_2"
|
133
|
+
)
|
155
134
|
assert response.status_code == 200
|
156
135
|
assert len(response.json()) == 1
|
157
|
-
assert response.json()[0][
|
158
|
-
assert response.json()[0][
|
136
|
+
assert response.json()[0]["id"] == 2
|
137
|
+
assert response.json()[0]["title"] == "title_test_model_2"
|
159
138
|
|
160
139
|
response = self.client.get("/api/models/test-model/?fltr=title=not_real_title")
|
161
140
|
assert response.status_code == 200
|
162
141
|
assert len(response.json()) == 0
|
163
142
|
|
164
|
-
response = self.client.get(
|
143
|
+
response = self.client.get(
|
144
|
+
"/api/models/test-model/?fltr=title=title_test_model_2&fltr=id=2"
|
145
|
+
)
|
165
146
|
assert response.status_code == 200
|
166
147
|
assert len(response.json()) == 1
|
167
|
-
assert response.json()[0][
|
168
|
-
assert response.json()[0][
|
148
|
+
assert response.json()[0]["id"] == 2
|
149
|
+
assert response.json()[0]["title"] == "title_test_model_2"
|
169
150
|
|
170
|
-
response = self.client.get(
|
151
|
+
response = self.client.get(
|
152
|
+
"/api/models/test-model/?fltr=title=title_test_model_2&fltr=id=3"
|
153
|
+
)
|
171
154
|
assert response.status_code == 200
|
172
155
|
assert len(response.json()) == 0
|
173
156
|
|
174
|
-
response = self.client.get(
|
157
|
+
response = self.client.get(
|
158
|
+
"/api/models/test-model/?fltr=title__in=[title_test_model_2,title_test_model_3]"
|
159
|
+
)
|
175
160
|
assert response.status_code == 200
|
176
161
|
assert len(response.json()) == 2
|
177
|
-
assert response.json()[0][
|
178
|
-
assert response.json()[0][
|
179
|
-
assert response.json()[1][
|
180
|
-
assert response.json()[1][
|
162
|
+
assert response.json()[0]["id"] == 3
|
163
|
+
assert response.json()[0]["title"] == "title_test_model_3"
|
164
|
+
assert response.json()[1]["id"] == 2
|
165
|
+
assert response.json()[1]["title"] == "title_test_model_2"
|
181
166
|
|
182
|
-
response = self.client.get(
|
167
|
+
response = self.client.get(
|
168
|
+
"/api/models/test-model/?fltr=title__in=[title_test_model_4,title_test_model_3]"
|
169
|
+
)
|
183
170
|
assert response.status_code == 200
|
184
171
|
assert len(response.json()) == 1
|
185
|
-
assert response.json()[0][
|
186
|
-
assert response.json()[0][
|
187
|
-
|
172
|
+
assert response.json()[0]["id"] == 3
|
173
|
+
assert response.json()[0]["title"] == "title_test_model_3"
|
188
174
|
|
189
175
|
@pytest.mark.django_db
|
190
176
|
def test_model_api_register_listing_filtered_model(self):
|
191
177
|
# Create filter argument register model 1
|
192
178
|
response = self.client.post(
|
193
179
|
"/api/models/filtered-register-model/",
|
194
|
-
{
|
195
|
-
|
196
|
-
},
|
197
|
-
format='json'
|
180
|
+
{"field_filtered": "test 1"},
|
181
|
+
format="json",
|
198
182
|
)
|
199
183
|
assert response.status_code == 201
|
200
184
|
|
201
185
|
# Create filter argument register model 2
|
202
186
|
response = self.client.post(
|
203
187
|
"/api/models/filtered-register-model/",
|
204
|
-
{
|
205
|
-
|
206
|
-
},
|
207
|
-
format='json'
|
188
|
+
{"field_filtered": "pippo 2"},
|
189
|
+
format="json",
|
208
190
|
)
|
209
191
|
assert response.status_code == 201
|
210
192
|
|
211
193
|
# Create filter argument register model 3
|
212
194
|
response = self.client.post(
|
213
195
|
"/api/models/filtered-register-model/",
|
214
|
-
{
|
215
|
-
|
216
|
-
},
|
217
|
-
format='json'
|
196
|
+
{"field_filtered": "3 test"},
|
197
|
+
format="json",
|
218
198
|
)
|
219
199
|
assert response.status_code == 201
|
220
200
|
|
221
201
|
response = self.client.get("/api/models/filtered-register-model/")
|
222
202
|
assert response.status_code == 200
|
223
203
|
assert len(response.json()) == 2
|
224
|
-
assert response.json()[0][
|
225
|
-
assert response.json()[0][
|
226
|
-
assert response.json()[1][
|
227
|
-
assert response.json()[1][
|
228
|
-
|
204
|
+
assert response.json()[0]["id"] == 3
|
205
|
+
assert response.json()[0]["field_filtered"] == "3 test"
|
206
|
+
assert response.json()[1]["id"] == 1
|
207
|
+
assert response.json()[1]["field_filtered"] == "test 1"
|
229
208
|
|
230
209
|
@pytest.mark.django_db
|
231
210
|
def test_model_api_register_base_view_search(self):
|
@@ -233,43 +212,40 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
233
212
|
# Create custom arguments register model 1
|
234
213
|
response = self.client.post(
|
235
214
|
"/api/models/custom-base-arguments-register-model/",
|
236
|
-
{
|
237
|
-
|
238
|
-
},
|
239
|
-
format='json'
|
215
|
+
{"description": "description_1"},
|
216
|
+
format="json",
|
240
217
|
)
|
241
218
|
assert response.status_code == 201
|
242
219
|
|
243
220
|
# Create custom arguments register model 2
|
244
221
|
response = self.client.post(
|
245
222
|
"/api/models/custom-base-arguments-register-model/",
|
246
|
-
{
|
247
|
-
|
248
|
-
},
|
249
|
-
format='json'
|
223
|
+
{"description": "description_2"},
|
224
|
+
format="json",
|
250
225
|
)
|
251
226
|
assert response.status_code == 201
|
252
227
|
|
253
228
|
# Create custom arguments register model 3
|
254
229
|
response = self.client.post(
|
255
230
|
"/api/models/custom-base-arguments-register-model/",
|
256
|
-
{
|
257
|
-
|
258
|
-
},
|
259
|
-
format='json'
|
231
|
+
{"description": "description_3"},
|
232
|
+
format="json",
|
260
233
|
)
|
261
234
|
assert response.status_code == 201
|
262
235
|
|
263
|
-
response = self.client.get(
|
236
|
+
response = self.client.get(
|
237
|
+
"/api/models/custom-base-arguments-register-model/?search=not_real_description"
|
238
|
+
)
|
264
239
|
assert response.status_code == 200
|
265
240
|
assert len(response.json()) == 0
|
266
241
|
|
267
|
-
response = self.client.get(
|
242
|
+
response = self.client.get(
|
243
|
+
"/api/models/custom-base-arguments-register-model/?search=description_1"
|
244
|
+
)
|
268
245
|
assert response.status_code == 200
|
269
246
|
assert len(response.json()) == 1
|
270
|
-
assert response.json()[0][
|
271
|
-
assert response.json()[0][
|
272
|
-
|
247
|
+
assert response.json()[0]["id"] == 1
|
248
|
+
assert response.json()[0]["description"] == "description_1"
|
273
249
|
|
274
250
|
@pytest.mark.django_db
|
275
251
|
def test_model_api_register_base_serializer_search(self):
|
@@ -277,20 +253,16 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
277
253
|
# Create custom arguments register model 1
|
278
254
|
response = self.client.post(
|
279
255
|
"/api/models/custom-base-arguments-register-model/",
|
280
|
-
{
|
281
|
-
|
282
|
-
},
|
283
|
-
format='json'
|
256
|
+
{"description": "12"},
|
257
|
+
format="json",
|
284
258
|
)
|
285
259
|
assert response.status_code == 400
|
286
260
|
|
287
261
|
# Create custom arguments register model 2
|
288
262
|
response = self.client.post(
|
289
263
|
"/api/models/custom-base-arguments-register-model/",
|
290
|
-
{
|
291
|
-
|
292
|
-
},
|
293
|
-
format='json'
|
264
|
+
{"description": "1234"},
|
265
|
+
format="json",
|
294
266
|
)
|
295
267
|
assert response.status_code == 201
|
296
268
|
|
@@ -300,56 +272,52 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
300
272
|
# Create custom arguments register model 1
|
301
273
|
response = self.client.post(
|
302
274
|
"/api/models/custom-arguments-register-model/",
|
303
|
-
{
|
304
|
-
|
305
|
-
},
|
306
|
-
format='json'
|
275
|
+
{"name": "name_1"},
|
276
|
+
format="json",
|
307
277
|
)
|
308
278
|
assert response.status_code == 201
|
309
279
|
|
310
280
|
# Create custom arguments register model 2
|
311
281
|
response = self.client.post(
|
312
282
|
"/api/models/custom-arguments-register-model/",
|
313
|
-
{
|
314
|
-
|
315
|
-
},
|
316
|
-
format='json'
|
283
|
+
{"name": "name_2"},
|
284
|
+
format="json",
|
317
285
|
)
|
318
286
|
assert response.status_code == 201
|
319
287
|
|
320
288
|
# Create custom arguments register model 3
|
321
289
|
response = self.client.post(
|
322
290
|
"/api/models/custom-arguments-register-model/",
|
323
|
-
{
|
324
|
-
|
325
|
-
},
|
326
|
-
format='json'
|
291
|
+
{"name": "name_3"},
|
292
|
+
format="json",
|
327
293
|
)
|
328
294
|
assert response.status_code == 201
|
329
295
|
|
330
|
-
response = self.client.get(
|
296
|
+
response = self.client.get(
|
297
|
+
"/api/models/custom-arguments-register-model/?search=not_real_name"
|
298
|
+
)
|
331
299
|
assert response.status_code == 200
|
332
300
|
assert len(response.json()) == 0
|
333
301
|
|
334
|
-
response = self.client.get(
|
302
|
+
response = self.client.get(
|
303
|
+
"/api/models/custom-arguments-register-model/?search=name_1"
|
304
|
+
)
|
335
305
|
assert response.status_code == 200
|
336
306
|
assert len(response.json()) == 1
|
337
|
-
assert response.json()[0][
|
307
|
+
assert response.json()[0]["name"] == "name_1"
|
338
308
|
|
339
309
|
@pytest.mark.django_db
|
340
310
|
def test_model_api_register_serializer_search(self):
|
341
311
|
# Verify {"fields": ["name"]}
|
342
|
-
# Create custom arguments register model
|
312
|
+
# Create custom arguments register model
|
343
313
|
response = self.client.post(
|
344
314
|
"/api/models/custom-arguments-register-model/",
|
345
|
-
{
|
346
|
-
|
347
|
-
},
|
348
|
-
format='json'
|
315
|
+
{"name": "1234"},
|
316
|
+
format="json",
|
349
317
|
)
|
350
318
|
assert response.status_code == 201
|
351
|
-
assert
|
352
|
-
assert response.json()[
|
319
|
+
assert "id" not in response.json()
|
320
|
+
assert response.json()["name"] == "1234"
|
353
321
|
|
354
322
|
@pytest.mark.django_db
|
355
323
|
def test_model_api_register_listing_filtered_model(self):
|
@@ -357,37 +325,31 @@ class ModelAPiRegisterTestCase(TestCase):
|
|
357
325
|
# Create filter argument register model 1
|
358
326
|
response = self.client.post(
|
359
327
|
"/api/models/filtered-register-model/",
|
360
|
-
{
|
361
|
-
|
362
|
-
},
|
363
|
-
format='json'
|
328
|
+
{"field_filtered": "test 1"},
|
329
|
+
format="json",
|
364
330
|
)
|
365
331
|
assert response.status_code == 201
|
366
332
|
|
367
333
|
# Create filter argument register model 2
|
368
334
|
response = self.client.post(
|
369
335
|
"/api/models/filtered-register-model/",
|
370
|
-
{
|
371
|
-
|
372
|
-
},
|
373
|
-
format='json'
|
336
|
+
{"field_filtered": "pippo 2"},
|
337
|
+
format="json",
|
374
338
|
)
|
375
339
|
assert response.status_code == 201
|
376
340
|
|
377
341
|
# Create filter argument register model 3
|
378
342
|
response = self.client.post(
|
379
343
|
"/api/models/filtered-register-model/",
|
380
|
-
{
|
381
|
-
|
382
|
-
},
|
383
|
-
format='json'
|
344
|
+
{"field_filtered": "3 test"},
|
345
|
+
format="json",
|
384
346
|
)
|
385
347
|
assert response.status_code == 201
|
386
348
|
|
387
349
|
response = self.client.get("/api/models/filtered-register-model/")
|
388
350
|
assert response.status_code == 200
|
389
351
|
assert len(response.json()) == 2
|
390
|
-
assert response.json()[0][
|
391
|
-
assert response.json()[0][
|
392
|
-
assert response.json()[1][
|
393
|
-
assert response.json()[1][
|
352
|
+
assert response.json()[0]["id"] == 3
|
353
|
+
assert response.json()[0]["field_filtered"] == "3 test"
|
354
|
+
assert response.json()[1]["id"] == 1
|
355
|
+
assert response.json()[1]["field_filtered"] == "test 1"
|