PyInventory 0.20.0__tar.gz → 0.20.1__tar.gz

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.
Files changed (120) hide show
  1. {pyinventory-0.20.0 → pyinventory-0.20.1}/PKG-INFO +10 -6
  2. {pyinventory-0.20.0 → pyinventory-0.20.1}/PyInventory.egg-info/PKG-INFO +10 -6
  3. {pyinventory-0.20.0 → pyinventory-0.20.1}/PyInventory.egg-info/SOURCES.txt +1 -0
  4. {pyinventory-0.20.0 → pyinventory-0.20.1}/PyInventory.egg-info/requires.txt +1 -1
  5. {pyinventory-0.20.0 → pyinventory-0.20.1}/README.md +8 -4
  6. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/__init__.py +1 -1
  7. pyinventory-0.20.1/inventory/migrations/0014_alter_itemmodel_description_and_more.py +44 -0
  8. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/models/item.py +2 -4
  9. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/models/location.py +2 -4
  10. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/models/memo.py +2 -4
  11. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/settings/prod.py +28 -9
  12. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_item_normal_user_create_minimal_item_1.snapshot.html +1 -2
  13. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_item_normal_user_create_minimal_item_2.snapshot.html +3 -7
  14. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_memo_normal_user_create_minimal_item_1.snapshot.html +1 -2
  15. pyinventory-0.20.1/inventory_project/tests/test_models_item.py +23 -0
  16. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/urls.py +1 -0
  17. {pyinventory-0.20.0 → pyinventory-0.20.1}/pyproject.toml +1 -1
  18. {pyinventory-0.20.0 → pyinventory-0.20.1}/requirements.dev.txt +6 -13
  19. {pyinventory-0.20.0 → pyinventory-0.20.1}/requirements.txt +5 -28
  20. pyinventory-0.20.0/inventory_project/tests/test_models_item.py +0 -24
  21. {pyinventory-0.20.0 → pyinventory-0.20.1}/.editorconfig +0 -0
  22. {pyinventory-0.20.0 → pyinventory-0.20.1}/.flake8 +0 -0
  23. {pyinventory-0.20.0 → pyinventory-0.20.1}/.github/workflows/tests.yml +0 -0
  24. {pyinventory-0.20.0 → pyinventory-0.20.1}/.gitignore +0 -0
  25. {pyinventory-0.20.0 → pyinventory-0.20.1}/.pre-commit-config.yaml +0 -0
  26. {pyinventory-0.20.0 → pyinventory-0.20.1}/.pre-commit-hooks.yaml +0 -0
  27. {pyinventory-0.20.0 → pyinventory-0.20.1}/.travis.yml +0 -0
  28. {pyinventory-0.20.0 → pyinventory-0.20.1}/AUTHORS +0 -0
  29. {pyinventory-0.20.0 → pyinventory-0.20.1}/LICENSE +0 -0
  30. {pyinventory-0.20.0 → pyinventory-0.20.1}/PyInventory.egg-info/dependency_links.txt +0 -0
  31. {pyinventory-0.20.0 → pyinventory-0.20.1}/PyInventory.egg-info/entry_points.txt +0 -0
  32. {pyinventory-0.20.0 → pyinventory-0.20.1}/PyInventory.egg-info/top_level.txt +0 -0
  33. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/admin/__init__.py +0 -0
  34. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/admin/base.py +0 -0
  35. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/admin/item.py +0 -0
  36. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/admin/location.py +0 -0
  37. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/admin/memo.py +0 -0
  38. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/admin/tagulous_fix.py +0 -0
  39. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/apps.py +0 -0
  40. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/ckeditor_upload.py +0 -0
  41. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/constants.py +0 -0
  42. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/context_processors.py +0 -0
  43. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/forms.py +0 -0
  44. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/ca/LC_MESSAGES/django.mo +0 -0
  45. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/ca/LC_MESSAGES/django.po +0 -0
  46. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/de/LC_MESSAGES/django.mo +0 -0
  47. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/de/LC_MESSAGES/django.po +0 -0
  48. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/en/LC_MESSAGES/django.mo +0 -0
  49. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/en/LC_MESSAGES/django.po +0 -0
  50. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/es/LC_MESSAGES/django.mo +0 -0
  51. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/locale/es/LC_MESSAGES/django.po +0 -0
  52. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/management/__init__.py +0 -0
  53. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/management/commands/__init__.py +0 -0
  54. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/management/commands/seed_data.py +0 -0
  55. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/management/commands/tree.py +0 -0
  56. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/middlewares.py +0 -0
  57. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0001_initial.py +0 -0
  58. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0002_auto_20201017_2211.py +0 -0
  59. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0003_auto_20201024_1830.py +0 -0
  60. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0004_item_user_images.py +0 -0
  61. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0005_serve_uploads_by_django_tools.py +0 -0
  62. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0006_refactor_image_model.py +0 -0
  63. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0007_add_file_attachment.py +0 -0
  64. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0008_last_check_datetime.py +0 -0
  65. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0009_add_memo.py +0 -0
  66. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0010_version_protect_models.py +0 -0
  67. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0011_parent_tree1.py +0 -0
  68. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0012_parent_tree2.py +0 -0
  69. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/0013_alter_itemmodel_location.py +0 -0
  70. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/migrations/__init__.py +0 -0
  71. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/models/__init__.py +0 -0
  72. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/models/base.py +0 -0
  73. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/models/links.py +0 -0
  74. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/parent_tree.py +0 -0
  75. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/permissions.py +0 -0
  76. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/request_dict.py +0 -0
  77. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/signals.py +0 -0
  78. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/string_utils.py +0 -0
  79. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/templates/admin/item/related_items.html +0 -0
  80. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/templates/admin/location/items.html +0 -0
  81. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/__init__.py +0 -0
  82. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/fixtures/__init__.py +0 -0
  83. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/fixtures/users.py +0 -0
  84. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_admin_location.py +0 -0
  85. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_admin_location_empty_change_list_1.snapshot.html +0 -0
  86. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_item_images.py +0 -0
  87. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_link_model.py +0 -0
  88. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_management_command_seed_data.py +0 -0
  89. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_management_command_tree.py +0 -0
  90. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_parent_tree.py +0 -0
  91. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory/tests/test_parent_tree_model.py +0 -0
  92. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/__init__.py +0 -0
  93. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/__main__.py +0 -0
  94. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/manage.py +0 -0
  95. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/middlewares.py +0 -0
  96. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/publish.py +0 -0
  97. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/settings/__init__.py +0 -0
  98. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/settings/local.py +0 -0
  99. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/settings/tests.py +0 -0
  100. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/templates/admin/base_site.html +0 -0
  101. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/templates/admin/login.html +0 -0
  102. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/__init__.py +0 -0
  103. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/fixtures.py +0 -0
  104. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/mocks.py +0 -0
  105. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/playwright_utils.py +0 -0
  106. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin.py +0 -0
  107. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_item.py +0 -0
  108. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_item_auto_group_items_1.snapshot.html +0 -0
  109. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_item_login_1.snapshot.html +0 -0
  110. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_memo.py +0 -0
  111. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_admin_superuser_admin_index_1.snapshot.html +0 -0
  112. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_inventory_commands.py +0 -0
  113. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_inventory_commands_help_1.snapshot.txt +0 -0
  114. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_migrations.py +0 -0
  115. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_playwright_admin.py +0 -0
  116. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_project_setup.py +0 -0
  117. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/tests/test_readme_history.py +0 -0
  118. {pyinventory-0.20.0 → pyinventory-0.20.1}/inventory_project/wsgi.py +0 -0
  119. {pyinventory-0.20.0 → pyinventory-0.20.1}/manage.py +0 -0
  120. {pyinventory-0.20.0 → pyinventory-0.20.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyInventory
3
- Version: 0.20.0
3
+ Version: 0.20.1
4
4
  Summary: Web based management to catalog things including state and location etc. using Python/Django.
5
5
  Author-email: Jens Diemer <PyInventory@jensdiemer.de>
6
6
  License: GPL-3.0-or-later
@@ -18,7 +18,7 @@ Requires-Dist: django-import-export
18
18
  Requires-Dist: django-dbbackup
19
19
  Requires-Dist: django-tools
20
20
  Requires-Dist: django-reversion-compare
21
- Requires-Dist: django-prose-editor[sanitize]
21
+ Requires-Dist: django-tinymce
22
22
  Requires-Dist: django-tagulous
23
23
  Requires-Dist: django-admin-sortable2
24
24
  Requires-Dist: pillow
@@ -200,10 +200,12 @@ please use YunoHost ;)
200
200
  * Remove `poetry`, `pytest` and `devshell`
201
201
  * Use `pip-tools`, `unittests` and [manage_django_project](https://github.com/jedie/manage_django_project)
202
202
 
203
- ### v0.20.0
203
+ ### v0.20
204
204
 
205
205
  Because of security reasons, the `ckeditor` package was replaced by `prose-editor`.
206
206
 
207
+ In 0.20.1 we switched to https://github.com/jazzband/django-tinymce/ because `prose-editor` has no table support.
208
+
207
209
  ## Make new release
208
210
 
209
211
  We use [cli-base-utilities](https://github.com/jedie/cli-base-utilities#generate-project-history-base-on-git-commitstags) to generate the history in this README.
@@ -221,6 +223,8 @@ To make a new release, do this:
221
223
 
222
224
  [comment]: <> (✂✂✂ auto generated history start ✂✂✂)
223
225
 
226
+ * [v0.20.1](https://github.com/jedie/PyInventory/compare/v0.20.0...v0.20.1)
227
+ * 2024-09-05 - switched to https://github.com/jazzband/django-tinymce/
224
228
  * [v0.20.0](https://github.com/jedie/PyInventory/compare/v0.19.3...v0.20.0)
225
229
  * 2024-09-05 - Replace django-ckeditor with django-prose-editor and fix tests
226
230
  * 2024-09-05 - Project updates
@@ -237,12 +241,12 @@ To make a new release, do this:
237
241
  * [v0.19.2](https://github.com/jedie/PyInventory/compare/v0.19.1...v0.19.2)
238
242
  * 2023-08-17 - Bugfix packaging by adding "requests" as normal dependencies
239
243
  * 2023-08-17 - Bugfix packageing by adding "requests" as normal dependencies
240
- * [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
241
- * 2023-08-17 - Update requirements
242
- * 2023-08-17 - Update from project template
243
244
 
244
245
  <details><summary>Expand older history entries ...</summary>
245
246
 
247
+ * [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
248
+ * 2023-08-17 - Update requirements
249
+ * 2023-08-17 - Update from project template
246
250
  * [v0.19.0](https://github.com/jedie/PyInventory/compare/v0.18.1...v0.19.0)
247
251
  * 2023-07-21 - Update README.md
248
252
  * 2023-07-21 - Migrate from "poetry-python" to "managed-django-project"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyInventory
3
- Version: 0.20.0
3
+ Version: 0.20.1
4
4
  Summary: Web based management to catalog things including state and location etc. using Python/Django.
5
5
  Author-email: Jens Diemer <PyInventory@jensdiemer.de>
6
6
  License: GPL-3.0-or-later
@@ -18,7 +18,7 @@ Requires-Dist: django-import-export
18
18
  Requires-Dist: django-dbbackup
19
19
  Requires-Dist: django-tools
20
20
  Requires-Dist: django-reversion-compare
21
- Requires-Dist: django-prose-editor[sanitize]
21
+ Requires-Dist: django-tinymce
22
22
  Requires-Dist: django-tagulous
23
23
  Requires-Dist: django-admin-sortable2
24
24
  Requires-Dist: pillow
@@ -200,10 +200,12 @@ please use YunoHost ;)
200
200
  * Remove `poetry`, `pytest` and `devshell`
201
201
  * Use `pip-tools`, `unittests` and [manage_django_project](https://github.com/jedie/manage_django_project)
202
202
 
203
- ### v0.20.0
203
+ ### v0.20
204
204
 
205
205
  Because of security reasons, the `ckeditor` package was replaced by `prose-editor`.
206
206
 
207
+ In 0.20.1 we switched to https://github.com/jazzband/django-tinymce/ because `prose-editor` has no table support.
208
+
207
209
  ## Make new release
208
210
 
209
211
  We use [cli-base-utilities](https://github.com/jedie/cli-base-utilities#generate-project-history-base-on-git-commitstags) to generate the history in this README.
@@ -221,6 +223,8 @@ To make a new release, do this:
221
223
 
222
224
  [comment]: <> (✂✂✂ auto generated history start ✂✂✂)
223
225
 
226
+ * [v0.20.1](https://github.com/jedie/PyInventory/compare/v0.20.0...v0.20.1)
227
+ * 2024-09-05 - switched to https://github.com/jazzband/django-tinymce/
224
228
  * [v0.20.0](https://github.com/jedie/PyInventory/compare/v0.19.3...v0.20.0)
225
229
  * 2024-09-05 - Replace django-ckeditor with django-prose-editor and fix tests
226
230
  * 2024-09-05 - Project updates
@@ -237,12 +241,12 @@ To make a new release, do this:
237
241
  * [v0.19.2](https://github.com/jedie/PyInventory/compare/v0.19.1...v0.19.2)
238
242
  * 2023-08-17 - Bugfix packaging by adding "requests" as normal dependencies
239
243
  * 2023-08-17 - Bugfix packageing by adding "requests" as normal dependencies
240
- * [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
241
- * 2023-08-17 - Update requirements
242
- * 2023-08-17 - Update from project template
243
244
 
244
245
  <details><summary>Expand older history entries ...</summary>
245
246
 
247
+ * [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
248
+ * 2023-08-17 - Update requirements
249
+ * 2023-08-17 - Update from project template
246
250
  * [v0.19.0](https://github.com/jedie/PyInventory/compare/v0.18.1...v0.19.0)
247
251
  * 2023-07-21 - Update README.md
248
252
  * 2023-07-21 - Migrate from "poetry-python" to "managed-django-project"
@@ -61,6 +61,7 @@ inventory/migrations/0010_version_protect_models.py
61
61
  inventory/migrations/0011_parent_tree1.py
62
62
  inventory/migrations/0012_parent_tree2.py
63
63
  inventory/migrations/0013_alter_itemmodel_location.py
64
+ inventory/migrations/0014_alter_itemmodel_description_and_more.py
64
65
  inventory/migrations/__init__.py
65
66
  inventory/models/__init__.py
66
67
  inventory/models/base.py
@@ -5,7 +5,7 @@ django-import-export
5
5
  django-dbbackup
6
6
  django-tools
7
7
  django-reversion-compare
8
- django-prose-editor[sanitize]
8
+ django-tinymce
9
9
  django-tagulous
10
10
  django-admin-sortable2
11
11
  pillow
@@ -143,10 +143,12 @@ please use YunoHost ;)
143
143
  * Remove `poetry`, `pytest` and `devshell`
144
144
  * Use `pip-tools`, `unittests` and [manage_django_project](https://github.com/jedie/manage_django_project)
145
145
 
146
- ### v0.20.0
146
+ ### v0.20
147
147
 
148
148
  Because of security reasons, the `ckeditor` package was replaced by `prose-editor`.
149
149
 
150
+ In 0.20.1 we switched to https://github.com/jazzband/django-tinymce/ because `prose-editor` has no table support.
151
+
150
152
  ## Make new release
151
153
 
152
154
  We use [cli-base-utilities](https://github.com/jedie/cli-base-utilities#generate-project-history-base-on-git-commitstags) to generate the history in this README.
@@ -164,6 +166,8 @@ To make a new release, do this:
164
166
 
165
167
  [comment]: <> (✂✂✂ auto generated history start ✂✂✂)
166
168
 
169
+ * [v0.20.1](https://github.com/jedie/PyInventory/compare/v0.20.0...v0.20.1)
170
+ * 2024-09-05 - switched to https://github.com/jazzband/django-tinymce/
167
171
  * [v0.20.0](https://github.com/jedie/PyInventory/compare/v0.19.3...v0.20.0)
168
172
  * 2024-09-05 - Replace django-ckeditor with django-prose-editor and fix tests
169
173
  * 2024-09-05 - Project updates
@@ -180,12 +184,12 @@ To make a new release, do this:
180
184
  * [v0.19.2](https://github.com/jedie/PyInventory/compare/v0.19.1...v0.19.2)
181
185
  * 2023-08-17 - Bugfix packaging by adding "requests" as normal dependencies
182
186
  * 2023-08-17 - Bugfix packageing by adding "requests" as normal dependencies
183
- * [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
184
- * 2023-08-17 - Update requirements
185
- * 2023-08-17 - Update from project template
186
187
 
187
188
  <details><summary>Expand older history entries ...</summary>
188
189
 
190
+ * [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
191
+ * 2023-08-17 - Update requirements
192
+ * 2023-08-17 - Update from project template
189
193
  * [v0.19.0](https://github.com/jedie/PyInventory/compare/v0.18.1...v0.19.0)
190
194
  * 2023-07-21 - Update README.md
191
195
  * 2023-07-21 - Migrate from "poetry-python" to "managed-django-project"
@@ -7,5 +7,5 @@
7
7
  :license: GNU GPL v3 or above, see LICENSE for more details.
8
8
  """
9
9
 
10
- __version__ = '0.20.0'
10
+ __version__ = '0.20.1'
11
11
  __author__ = 'Jens Diemer <PyInventory@jensdiemer.de>'
@@ -0,0 +1,44 @@
1
+ # Generated by Django 5.1.1 on 2024-09-05 17:46
2
+
3
+ import tinymce.models
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ('inventory', '0013_alter_itemmodel_location'),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name='itemmodel',
16
+ name='description',
17
+ field=tinymce.models.HTMLField(
18
+ blank=True,
19
+ help_text='ItemModel.description.help_text',
20
+ null=True,
21
+ verbose_name='ItemModel.description.verbose_name',
22
+ ),
23
+ ),
24
+ migrations.AlterField(
25
+ model_name='locationmodel',
26
+ name='description',
27
+ field=tinymce.models.HTMLField(
28
+ blank=True,
29
+ help_text='LocationModel.description.help_text',
30
+ null=True,
31
+ verbose_name='LocationModel.description.verbose_name',
32
+ ),
33
+ ),
34
+ migrations.AlterField(
35
+ model_name='memomodel',
36
+ name='memo',
37
+ field=tinymce.models.HTMLField(
38
+ blank=True,
39
+ help_text='MemoModel.description.help_text',
40
+ null=True,
41
+ verbose_name='MemoModel.description.verbose_name',
42
+ ),
43
+ ),
44
+ ]
@@ -3,13 +3,12 @@ from pathlib import Path
3
3
 
4
4
  import tagulous.models
5
5
  from bx_django_utils.filename import clean_filename
6
- from django.conf import settings
7
6
  from django.db import models
8
7
  from django.urls import reverse
9
8
  from django.utils.translation import gettext_lazy as _
10
- from django_prose_editor.sanitized import SanitizedProseEditorField
11
9
  from django_tools.model_version_protect.models import VersionProtectBaseModel
12
10
  from django_tools.serve_media_app.models import user_directory_path
11
+ from tinymce.models import HTMLField
13
12
 
14
13
  from inventory.models.base import BaseItemAttachmentModel, BaseParentTreeModel
15
14
  from inventory.models.links import BaseLink
@@ -47,10 +46,9 @@ class ItemModel(BaseParentTreeModel, VersionProtectBaseModel):
47
46
  verbose_name=_('ItemModel.producer.verbose_name'),
48
47
  help_text=_('ItemModel.producer.help_text'),
49
48
  )
50
- description = SanitizedProseEditorField(
49
+ description = HTMLField(
51
50
  blank=True,
52
51
  null=True,
53
- config=settings.PROSE_EDITOR_DEFAULT_CONFIG,
54
52
  verbose_name=_('ItemModel.description.verbose_name'),
55
53
  help_text=_('ItemModel.description.help_text'),
56
54
  )
@@ -1,7 +1,6 @@
1
- from django.conf import settings
2
1
  from django.utils.translation import gettext_lazy as _
3
- from django_prose_editor.sanitized import SanitizedProseEditorField
4
2
  from django_tools.model_version_protect.models import VersionProtectBaseModel
3
+ from tinymce.models import HTMLField
5
4
 
6
5
  from inventory.models.base import BaseParentTreeModel
7
6
 
@@ -11,10 +10,9 @@ class LocationModel(BaseParentTreeModel, VersionProtectBaseModel):
11
10
  A Storage for items.
12
11
  """
13
12
 
14
- description = SanitizedProseEditorField(
13
+ description = HTMLField(
15
14
  blank=True,
16
15
  null=True,
17
- config=settings.PROSE_EDITOR_DEFAULT_CONFIG,
18
16
  verbose_name=_('LocationModel.description.verbose_name'),
19
17
  help_text=_('LocationModel.description.help_text'),
20
18
  )
@@ -2,13 +2,12 @@ import logging
2
2
  from pathlib import Path
3
3
 
4
4
  from bx_django_utils.filename import clean_filename
5
- from django.conf import settings
6
5
  from django.db import models
7
6
  from django.urls import reverse
8
7
  from django.utils.translation import gettext_lazy as _
9
- from django_prose_editor.sanitized import SanitizedProseEditorField
10
8
  from django_tools.model_version_protect.models import VersionProtectBaseModel
11
9
  from django_tools.serve_media_app.models import user_directory_path
10
+ from tinymce.models import HTMLField
12
11
 
13
12
  from inventory.models.base import BaseMemoAttachmentModel, BaseModel
14
13
  from inventory.models.links import BaseLink
@@ -22,10 +21,9 @@ class MemoModel(BaseModel, VersionProtectBaseModel):
22
21
  A Memo to hold some information independent of items/location
23
22
  """
24
23
 
25
- memo = SanitizedProseEditorField(
24
+ memo = HTMLField(
26
25
  blank=True,
27
26
  null=True,
28
- config=settings.PROSE_EDITOR_DEFAULT_CONFIG,
29
27
  verbose_name=_('MemoModel.description.verbose_name'),
30
28
  help_text=_('MemoModel.description.help_text'),
31
29
  )
@@ -56,7 +56,7 @@ INSTALLED_APPS = [
56
56
  'bx_django_utils', # https://github.com/boxine/bx_django_utils
57
57
  'import_export', # https://github.com/django-import-export/django-import-export
58
58
  'dbbackup', # https://github.com/django-dbbackup/django-dbbackup
59
- 'django_prose_editor', # https://github.com/matthiask/django-prose-editor/
59
+ 'tinymce', # https://github.com/jazzband/django-tinymce/
60
60
  'reversion', # https://github.com/etianen/django-reversion
61
61
  'reversion_compare', # https://github.com/jedie/django-reversion-compare
62
62
  'tagulous', # https://github.com/radiac/django-tagulous
@@ -177,16 +177,35 @@ DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage'
177
177
  DBBACKUP_STORAGE_OPTIONS = {'location': str(__Path(BASE_PATH, 'backups'))}
178
178
 
179
179
  # _____________________________________________________________________________
180
- # django-prose-editor
181
-
182
- PROSE_EDITOR_DEFAULT_CONFIG = {
183
- "types": None, # Allow all nodes and marks
184
- "history": True, # Enable undo and redo
185
- "html": True, # Add a button which allows editing the raw HTML
186
- "typographic": True, # Highlight typographic characters
187
- "headingLevels": [1, 2, 3, 4, 5], # Available heading levels
180
+ # django-tinymce
181
+
182
+ TINYMCE_DEFAULT_CONFIG = {
183
+ # https://www.tiny.cloud/docs/tinymce/latest/editor-size-options/
184
+ 'height': 500,
185
+ 'width': '90%',
186
+ 'resize': 'both',
187
+ #
188
+ # https://www.tiny.cloud/docs/tinymce/latest/menus-configuration-options/
189
+ 'menubar': 'edit view insert format tools table help',
190
+ 'browser_spellcheck': True,
191
+ #
192
+ # https://www.tiny.cloud/docs/tinymce/latest/plugins/
193
+ 'plugins': (
194
+ 'advlist,autolink,lists,link,image,charmap,preview,anchor,'
195
+ 'searchreplace,visualblocks,code,fullscreen,insertdatetime,media,table,'
196
+ 'help,wordcount'
197
+ ),
198
+ #
199
+ # https://www.tiny.cloud/docs/tinymce/latest/available-toolbar-buttons/
200
+ 'toolbar': (
201
+ 'undo redo | blocks | '
202
+ 'bold italic backcolor | alignleft aligncenter '
203
+ 'alignright alignjustify | bullist numlist outdent indent | '
204
+ 'removeformat'
205
+ ),
188
206
  }
189
207
 
208
+
190
209
  # _____________________________________________________________________________
191
210
  # http://radiac.net/projects/django-tagulous/documentation/installation/#settings
192
211
 
@@ -165,8 +165,7 @@
165
165
  <label for="id_description">
166
166
  Description:
167
167
  </label>
168
- <textarea aria-describedby="id_description_helptext" cols="40" data-django-prose-editor='{"types":null,"history":true,"html":true,"typographic":true,"headingLevels":[1,2,3,4,5]}' id="id_description" name="description" rows="10">
169
- </textarea>
168
+ <textarea aria-describedby="id_description_helptext" class="vLargeTextField tinymce" cols="40" data-mce-conf='{"height": 500, "width": "90%", "resize": "both", "menubar": "edit view insert format tools table help", "browser_spellcheck": true, "plugins": "advlist,autolink,lists,link,image,charmap,preview,anchor,searchreplace,visualblocks,code,fullscreen,insertdatetime,media,table,help,wordcount", "toolbar": "undo redo | blocks | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat", "language": "en", "directionality": "ltr", "strict_loading_mode": 1, "selector": "#id_description"}' id="id_description" name="description" rows="10"></textarea>
170
169
  </div>
171
170
  <div class="help" id="id_description_helptext">
172
171
  <div>
@@ -19,17 +19,14 @@
19
19
  </script>
20
20
  <link href="/static/adminsortable2/css/sortable.css" media="all" rel="stylesheet"/>
21
21
  <link href="/static/admin/css/vendor/select2/select2.min.css" media="screen" rel="stylesheet"/>
22
- <link href="/static/django_prose_editor/material-icons.css" media="screen" rel="stylesheet"/>
23
- <link href="/static/django_prose_editor/overrides.css" media="screen" rel="stylesheet"/>
24
22
  <link href="/static/admin/css/autocomplete.css" media="screen" rel="stylesheet"/>
25
- <link href="/static/django_prose_editor/editor.css" media="screen" rel="stylesheet"/>
26
23
  <script src="/static/admin/js/vendor/jquery/jquery.min.js">
27
24
  </script>
28
25
  <script src="/static/adminsortable2/js/adminsortable2.min.js">
29
26
  </script>
30
27
  <script src="/static/tagulous/tagulous.js">
31
28
  </script>
32
- <script src="/static/django_prose_editor/editor.js">
29
+ <script src="/static/tinymce/tinymce.min.js">
33
30
  </script>
34
31
  <script src="/static/admin/js/calendar.js">
35
32
  </script>
@@ -37,7 +34,7 @@
37
34
  </script>
38
35
  <script src="/static/tagulous/adaptor/select2-4.js">
39
36
  </script>
40
- <script data-messages='{"url": "URL", "title": "Title", "update": "Update", "cancel": "Cancel"}' src="/static/django_prose_editor/init.js">
37
+ <script src="/static/django_tinymce/init_tinymce.js">
41
38
  </script>
42
39
  <script src="/static/admin/js/admin/DateTimeShortcuts.js">
43
40
  </script>
@@ -398,8 +395,7 @@
398
395
  <label for="id_description">
399
396
  Description:
400
397
  </label>
401
- <textarea aria-describedby="id_description_helptext" cols="40" data-django-prose-editor='{"types":null,"history":true,"html":true,"typographic":true,"headingLevels":[1,2,3,4,5]}' id="id_description" name="description" rows="10">
402
- </textarea>
398
+ <textarea aria-describedby="id_description_helptext" class="vLargeTextField tinymce" cols="40" data-mce-conf='{"height": 500, "width": "90%", "resize": "both", "menubar": "edit view insert format tools table help", "browser_spellcheck": true, "plugins": "advlist,autolink,lists,link,image,charmap,preview,anchor,searchreplace,visualblocks,code,fullscreen,insertdatetime,media,table,help,wordcount", "toolbar": "undo redo | blocks | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat", "language": "en", "directionality": "ltr", "strict_loading_mode": 1, "selector": "#id_description"}' id="id_description" name="description" rows="10"></textarea>
403
399
  </div>
404
400
  <div class="help" id="id_description_helptext">
405
401
  <div>
@@ -133,8 +133,7 @@
133
133
  <label for="id_memo">
134
134
  Description:
135
135
  </label>
136
- <textarea aria-describedby="id_memo_helptext" cols="40" data-django-prose-editor='{"types":null,"history":true,"html":true,"typographic":true,"headingLevels":[1,2,3,4,5]}' id="id_memo" name="memo" rows="10">
137
- </textarea>
136
+ <textarea aria-describedby="id_memo_helptext" class="vLargeTextField tinymce" cols="40" data-mce-conf='{"height": 500, "width": "90%", "resize": "both", "menubar": "edit view insert format tools table help", "browser_spellcheck": true, "plugins": "advlist,autolink,lists,link,image,charmap,preview,anchor,searchreplace,visualblocks,code,fullscreen,insertdatetime,media,table,help,wordcount", "toolbar": "undo redo | blocks | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat", "language": "en", "directionality": "ltr", "strict_loading_mode": 1, "selector": "#id_memo"}' id="id_memo" name="memo" rows="10"></textarea>
138
137
  </div>
139
138
  <div class="help" id="id_memo_helptext">
140
139
  <div>
@@ -0,0 +1,23 @@
1
+ from django.forms import CharField, modelform_factory
2
+ from django.test import TestCase
3
+ from tinymce.models import HTMLField
4
+ from tinymce.widgets import TinyMCE
5
+
6
+ from inventory.models import ItemModel
7
+
8
+
9
+ class ItemModelTestCase(TestCase):
10
+ def test_item_description_model_field(self):
11
+ item = ItemModel()
12
+ opts = item._meta
13
+ model_description_field = opts.get_field('description')
14
+ self.assertIsInstance(model_description_field, HTMLField)
15
+
16
+ def test_item_description_form_fieldr(self):
17
+ ItemForm = modelform_factory(ItemModel, fields=('description',))
18
+ form = ItemForm()
19
+ form_field = form.fields['description']
20
+ self.assertIsInstance(form_field, CharField)
21
+ widget = form_field.widget
22
+
23
+ self.assertIsInstance(widget, TinyMCE)
@@ -10,6 +10,7 @@ admin.autodiscover()
10
10
  urlpatterns = [ # Don't use i18n_patterns() here
11
11
  path('admin/', admin.site.urls),
12
12
  re_path(r'^$', RedirectView.as_view(pattern_name='admin:index')),
13
+ path('tinymce/', include('tinymce.urls')), # TODO: check permissions?
13
14
  path(settings.MEDIA_URL.lstrip('/'), include('django_tools.serve_media_app.urls')),
14
15
  ]
15
16
 
@@ -20,7 +20,7 @@ dependencies = [
20
20
  "django-dbbackup", # https://github.com/django-dbbackup/django-dbbackup
21
21
  "django-tools", # https://github.com/jedie/django-tools/
22
22
  "django-reversion-compare", # https://github.com/jedie/django-reversion-compare/
23
- "django-prose-editor[sanitize]", # https://github.com/matthiask/django-prose-editor/
23
+ "django-tinymce", # https://github.com/jazzband/django-tinymce/
24
24
  "django-tagulous", # https://github.com/radiac/django-tagulous
25
25
  "django-admin-sortable2", # https://github.com/jrief/django-admin-sortable2
26
26
  "pillow", # https://github.com/jrief/django-admin-sortable2
@@ -473,12 +473,11 @@ django==5.1.1 \
473
473
  # django-dbbackup
474
474
  # django-debug-toolbar
475
475
  # django-import-export
476
- # django-js-asset
477
- # django-prose-editor
478
476
  # django-reversion
479
477
  # django-reversion-compare
480
478
  # django-rich
481
479
  # django-tagulous
480
+ # django-tinymce
482
481
  # django-tools
483
482
  # manage-django-project
484
483
  # model-bakery
@@ -498,18 +497,10 @@ django-import-export==4.1.1 \
498
497
  --hash=sha256:16ecc5a9f0df46bde6eb278a3e65ebda0ee1db55656f36440e9fb83f40ab85a3 \
499
498
  --hash=sha256:730ae2443a02b1ba27d8dba078a27ae9123adfcabb78161b4f130843607b3df9
500
499
  # via PyInventory (pyproject.toml)
501
- django-js-asset==2.2.0 \
502
- --hash=sha256:0c57a82cae2317e83951d956110ce847f58ff0cdc24e314dbc18b35033917e94 \
503
- --hash=sha256:7ef3e858e13d06f10799b56eea62b1e76706f42cf4e709be4e13356bc0ae30d8
504
- # via django-prose-editor
505
500
  django-override-storage==0.3.2 \
506
501
  --hash=sha256:1f1a13274d66cc481b19d63c8bd43c94066824008bcdd26ec65d125b1ce8ec39 \
507
502
  --hash=sha256:995e1a42f056c9f9bc114077c11d67520ec7d8a752a59be62729e641562b133e
508
503
  # via PyInventory (pyproject.toml)
509
- django-prose-editor==0.8.0 \
510
- --hash=sha256:b3924d489c7ae37f3ce856150afdbaf034ef11cee149af236c5204462577665c \
511
- --hash=sha256:e0313a26be6bd9db313d5106c6c0dac78bb75736d7a987302215363c6eec596e
512
- # via PyInventory (pyproject.toml)
513
504
  django-reversion==5.1.0 \
514
505
  --hash=sha256:084d4f117d9e2b4e8dfdfaad83ebb34410a03eed6071c96089e6811fdea82ad3 \
515
506
  --hash=sha256:3309821e5b6fceedcce6b6975f1a9c7fab6ae7c7d0e1276a90e345946fa0dcb8
@@ -526,6 +517,10 @@ django-tagulous==2.1.0 \
526
517
  --hash=sha256:5ebba5a51f049f6df5f9d2a30eef431c0bf7cd35758aa0a42fc3351be4d239cd \
527
518
  --hash=sha256:f629b54ad720052092785b0dce056dc6a68c7b63f8126075af9c25848b250bfd
528
519
  # via PyInventory (pyproject.toml)
520
+ django-tinymce==4.1.0 \
521
+ --hash=sha256:02e3b70e940fd299f0fbef4315aee5c185664e1eb8cd396b176963954e4357c9 \
522
+ --hash=sha256:9804836e6d2b08de3b03a27c100f8c2e9633549913eff8b323678a10cd48b94e
523
+ # via PyInventory (pyproject.toml)
529
524
  django-tools==0.56.2 \
530
525
  --hash=sha256:29c25be814d74cd9f554d7d45bc205f5570e5feaa4232cbd09cc913c46b20c07 \
531
526
  --hash=sha256:88a192f2873f0411b99ee1aba04f2779133284cd18a5c78976e8e4605ba5d7f7
@@ -1034,9 +1029,7 @@ nh3==0.2.18 \
1034
1029
  --hash=sha256:c8b3a1cebcba9b3669ed1a84cc65bf005728d2f0bc1ed2a6594a992e817f3a50 \
1035
1030
  --hash=sha256:de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307 \
1036
1031
  --hash=sha256:f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe
1037
- # via
1038
- # django-prose-editor
1039
- # readme-renderer
1032
+ # via readme-renderer
1040
1033
  nodeenv==1.9.1 \
1041
1034
  --hash=sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f \
1042
1035
  --hash=sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9
@@ -143,11 +143,10 @@ django==5.1.1 \
143
143
  # django-dbbackup
144
144
  # django-debug-toolbar
145
145
  # django-import-export
146
- # django-js-asset
147
- # django-prose-editor
148
146
  # django-reversion
149
147
  # django-reversion-compare
150
148
  # django-tagulous
149
+ # django-tinymce
151
150
  # django-tools
152
151
  django-admin-sortable2==2.2.2 \
153
152
  --hash=sha256:efb28eed633e3a008c6938a887096a9887a213628a39458dc748d654f8f12d5c \
@@ -165,14 +164,6 @@ django-import-export==4.1.1 \
165
164
  --hash=sha256:16ecc5a9f0df46bde6eb278a3e65ebda0ee1db55656f36440e9fb83f40ab85a3 \
166
165
  --hash=sha256:730ae2443a02b1ba27d8dba078a27ae9123adfcabb78161b4f130843607b3df9
167
166
  # via PyInventory (pyproject.toml)
168
- django-js-asset==2.2.0 \
169
- --hash=sha256:0c57a82cae2317e83951d956110ce847f58ff0cdc24e314dbc18b35033917e94 \
170
- --hash=sha256:7ef3e858e13d06f10799b56eea62b1e76706f42cf4e709be4e13356bc0ae30d8
171
- # via django-prose-editor
172
- django-prose-editor==0.8.0 \
173
- --hash=sha256:b3924d489c7ae37f3ce856150afdbaf034ef11cee149af236c5204462577665c \
174
- --hash=sha256:e0313a26be6bd9db313d5106c6c0dac78bb75736d7a987302215363c6eec596e
175
- # via PyInventory (pyproject.toml)
176
167
  django-reversion==5.1.0 \
177
168
  --hash=sha256:084d4f117d9e2b4e8dfdfaad83ebb34410a03eed6071c96089e6811fdea82ad3 \
178
169
  --hash=sha256:3309821e5b6fceedcce6b6975f1a9c7fab6ae7c7d0e1276a90e345946fa0dcb8
@@ -185,6 +176,10 @@ django-tagulous==2.1.0 \
185
176
  --hash=sha256:5ebba5a51f049f6df5f9d2a30eef431c0bf7cd35758aa0a42fc3351be4d239cd \
186
177
  --hash=sha256:f629b54ad720052092785b0dce056dc6a68c7b63f8126075af9c25848b250bfd
187
178
  # via PyInventory (pyproject.toml)
179
+ django-tinymce==4.1.0 \
180
+ --hash=sha256:02e3b70e940fd299f0fbef4315aee5c185664e1eb8cd396b176963954e4357c9 \
181
+ --hash=sha256:9804836e6d2b08de3b03a27c100f8c2e9633549913eff8b323678a10cd48b94e
182
+ # via PyInventory (pyproject.toml)
188
183
  django-tools==0.56.2 \
189
184
  --hash=sha256:29c25be814d74cd9f554d7d45bc205f5570e5feaa4232cbd09cc913c46b20c07 \
190
185
  --hash=sha256:88a192f2873f0411b99ee1aba04f2779133284cd18a5c78976e8e4605ba5d7f7
@@ -211,24 +206,6 @@ mdurl==0.1.2 \
211
206
  --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
212
207
  --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
213
208
  # via markdown-it-py
214
- nh3==0.2.18 \
215
- --hash=sha256:0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164 \
216
- --hash=sha256:14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86 \
217
- --hash=sha256:19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b \
218
- --hash=sha256:34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad \
219
- --hash=sha256:36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204 \
220
- --hash=sha256:3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a \
221
- --hash=sha256:42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200 \
222
- --hash=sha256:5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189 \
223
- --hash=sha256:6955369e4d9f48f41e3f238a9e60f9410645db7e07435e62c6a9ea6135a4907f \
224
- --hash=sha256:7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811 \
225
- --hash=sha256:8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844 \
226
- --hash=sha256:94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4 \
227
- --hash=sha256:a7f1b5b2c15866f2db413a3649a8fe4fd7b428ae58be2c0f6bca5eefd53ca2be \
228
- --hash=sha256:c8b3a1cebcba9b3669ed1a84cc65bf005728d2f0bc1ed2a6594a992e817f3a50 \
229
- --hash=sha256:de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307 \
230
- --hash=sha256:f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe
231
- # via django-prose-editor
232
209
  packaging==24.1 \
233
210
  --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
234
211
  --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
@@ -1,24 +0,0 @@
1
- from django.forms import modelform_factory
2
- from django.test import TestCase
3
- from django_prose_editor.fields import ProseEditorFormField
4
- from django_prose_editor.sanitized import SanitizedProseEditorField
5
- from django_prose_editor.widgets import ProseEditorWidget
6
-
7
- from inventory.models import ItemModel
8
-
9
-
10
- class ItemModelTestCase(TestCase):
11
- def test_item_description_prose_editor(self):
12
- item = ItemModel()
13
- opts = item._meta
14
- model_description_field = opts.get_field('description')
15
- self.assertIsInstance(model_description_field, SanitizedProseEditorField)
16
-
17
- def test_item_description_form_prose_editor(self):
18
- ItemForm = modelform_factory(ItemModel, fields=('description',))
19
- form = ItemForm()
20
- form_field = form.fields['description']
21
- self.assertIsInstance(form_field, ProseEditorFormField)
22
- widget = form_field.widget
23
-
24
- self.assertIsInstance(widget, ProseEditorWidget)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes