django-unfold 0.21.0__py3-none-any.whl → 0.22.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- {django_unfold-0.21.0.dist-info → django_unfold-0.22.0.dist-info}/LICENSE.md +1 -1
- {django_unfold-0.21.0.dist-info → django_unfold-0.22.0.dist-info}/METADATA +20 -1
- {django_unfold-0.21.0.dist-info → django_unfold-0.22.0.dist-info}/RECORD +21 -21
- unfold/contrib/filters/apps.py +1 -0
- unfold/contrib/forms/apps.py +1 -0
- unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -1
- unfold/contrib/guardian/apps.py +1 -1
- unfold/contrib/import_export/apps.py +1 -1
- unfold/sites.py +1 -1
- unfold/static/unfold/css/styles.css +1 -1
- unfold/styles.css +4 -0
- unfold/templates/admin/app_list.html +0 -6
- unfold/templates/admin/base.html +1 -1
- unfold/templates/admin/change_list.html +1 -1
- unfold/templates/admin/change_list_results.html +2 -2
- unfold/templates/admin/login.html +9 -5
- unfold/templates/unfold/helpers/account_links.html +2 -2
- unfold/templates/unfold/helpers/app_list.html +5 -1
- unfold/templates/unfold/helpers/display_label.html +2 -0
- unfold/templatetags/unfold_list.py +57 -44
- {django_unfold-0.21.0.dist-info → django_unfold-0.22.0.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: django-unfold
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.22.0
|
4
4
|
Summary: Modern Django admin theme for seamless interface development
|
5
5
|
Home-page: https://unfoldadmin.com
|
6
6
|
License: MIT
|
@@ -59,6 +59,7 @@ Did you decide to start using Unfold but you don't have time to make the switch
|
|
59
59
|
- **Colors:** possibility to override default color scheme
|
60
60
|
- **Third party packages:** default support for multiple popular applications
|
61
61
|
- **Environment label**: distinguish between environments by displaying a label
|
62
|
+
- **VS Code**: project configuration and development container is included
|
62
63
|
|
63
64
|
## Table of contents <!-- omit from toc -->
|
64
65
|
|
@@ -94,6 +95,9 @@ Did you decide to start using Unfold but you don't have time to make the switch
|
|
94
95
|
- [Pre-commit](#pre-commit)
|
95
96
|
- [Poetry configuration](#poetry-configuration)
|
96
97
|
- [Compiling Tailwind](#compiling-tailwind)
|
98
|
+
- [Using VS Code with containers](#using-vs-code-with-containers)
|
99
|
+
- [Development server](#development-server)
|
100
|
+
- [Compiling Tailwind in devcontainer](#compiling-tailwind-in-devcontainer)
|
97
101
|
- [Credits](#credits)
|
98
102
|
|
99
103
|
## Installation
|
@@ -989,6 +993,7 @@ Before adding any source code, it is recommended to have pre-commit installed on
|
|
989
993
|
pip install pre-commit
|
990
994
|
pre-commit install
|
991
995
|
pre-commit install --hook-type commit-msg
|
996
|
+
pre-commit run --all-files # Check if everything is okay
|
992
997
|
```
|
993
998
|
|
994
999
|
### Poetry configuration
|
@@ -1016,6 +1021,20 @@ Some components like datepickers, calendars or selectors in admin was not possib
|
|
1016
1021
|
|
1017
1022
|
**Note:** most of the custom styles located in style.css are created via `@apply some-tailwind-class;` as is not possible to manually add CSS class to element which are for example created via jQuery.
|
1018
1023
|
|
1024
|
+
### Using VS Code with containers
|
1025
|
+
|
1026
|
+
Unfold already contains prepared support for VS Code development. After cloning the project locally, open the main folder in VS Code (in terminal `code .`). Immediately, you would see a message from VS Code **Folder contains a Dev Container configuration file. Reopen folder to develop in a container** which will inform you that the support for containers is prepared. Confirm the message by clicking on **Reopen in Container**. If the message is not there, you can still manually open the project in a container by running the command **Dev Containers: Reopen in Container**.
|
1027
|
+
|
1028
|
+
#### Development server
|
1029
|
+
|
1030
|
+
Now the VS Code will build an image and install Python dependencies. After successful installation is completed, VS Code will spin a container and from now it is possible to directly develop in the container. Unfold contains an example development application with the basic Unfold configuration available under `tests/server`. Run `python manage.py runserver` within a `tests/server` folder to start a development Django server. Note that you have to run the command from VS Code terminal which is already connected to the running container.
|
1031
|
+
|
1032
|
+
**Note:** this is not a production ready server. Use it just for running tests or developing features & fixes.
|
1033
|
+
|
1034
|
+
#### Compiling Tailwind in devcontainer
|
1035
|
+
|
1036
|
+
The container has already a node preinstalled so it is possible to compile a new CSS. Open the terminal and run `npm install` which will install all dependencies and will create `node_modules` folder. Now, you can run npm commands for Tailwind as described in the previous chapter.
|
1037
|
+
|
1019
1038
|
## Credits
|
1020
1039
|
|
1021
1040
|
- [TailwindCSS](https://tailwindcss.com/) - CSS framework
|
@@ -5,7 +5,7 @@ unfold/checks.py,sha256=_Y9VoDBIj_VdombQ-iyN-s9cRxkW_9vQTfHQ4yYuG-8,1672
|
|
5
5
|
unfold/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
unfold/contrib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
unfold/contrib/filters/admin.py,sha256=7FJl86b407ylTjgkRN2EwXGHnnVNwBiGvA1_822L5uc,16412
|
8
|
-
unfold/contrib/filters/apps.py,sha256=
|
8
|
+
unfold/contrib/filters/apps.py,sha256=wEySJy0gMLzFLb9XNKE-RexiO05X7NaQ5QmxZyziJ_k,136
|
9
9
|
unfold/contrib/filters/forms.py,sha256=-Tv1vWh-u8eLPAJqSX6c8R3IY0GmgOoFrzVQ8E8gO_s,4055
|
10
10
|
unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css,sha256=rddL_jOGGVEY6wR-aw0VYovAfz5fPeAIsulrlSNb1hc,4221
|
11
11
|
unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js,sha256=jgFNBDf6aHvUlyv0LEDHggXO-xA8pWOCWFWcVupdA30,19332
|
@@ -18,15 +18,15 @@ unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html,sha25
|
|
18
18
|
unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html,sha256=3njmCOx1HLNBz6VWDQtBWXwBUcclY2Y3D1vRVTwNn8c,576
|
19
19
|
unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html,sha256=LqN3D483HbeT33SI4Uoy8YxKLP0uWbKyt8_bi1EWz3w,1681
|
20
20
|
unfold/contrib/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
unfold/contrib/forms/apps.py,sha256
|
21
|
+
unfold/contrib/forms/apps.py,sha256=Di0TMzVuRpVxLG-8Bjdq5ALCSf5r7u2xVhD0jU6H5Sc,132
|
22
22
|
unfold/contrib/forms/static/unfold/forms/css/trix.css,sha256=TH9WdnaZrmwI8hAEydwjobdrBzSw_KYdRTSQDuD-8hE,20027
|
23
23
|
unfold/contrib/forms/static/unfold/forms/js/trix.config.js,sha256=spkNBlJVk_pqido_rM6yywQxkJ3Kqb7DMLiBgpKksdA,858
|
24
|
-
unfold/contrib/forms/static/unfold/forms/js/trix.js,sha256=
|
24
|
+
unfold/contrib/forms/static/unfold/forms/js/trix.js,sha256=Pao0XiVeDiRawfTkGDg_np6CxB-oXPrUDI9akWc87oc,174157
|
25
25
|
unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html,sha256=yS8Zy-UrzvZ5RUYwdprQzREffnYq0NlIbXBfZM2UB04,9700
|
26
26
|
unfold/contrib/forms/templates/unfold/forms/wysiwyg.html,sha256=4ZefV6XrjJlUczcuSw8BhvMJUFSZPSXo1IkgkBivh5g,351
|
27
27
|
unfold/contrib/forms/widgets.py,sha256=_81_fsvK-yEsFIqLU59BTIIs2KAJk61pLs7J9sNi1G0,962
|
28
28
|
unfold/contrib/guardian/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
-
unfold/contrib/guardian/apps.py,sha256=
|
29
|
+
unfold/contrib/guardian/apps.py,sha256=ObJqwh4vHxkD4XfduP5IQAiYiWZxsXUOUqF1_R1GsRI,136
|
30
30
|
unfold/contrib/guardian/templates/admin/guardian/model/change_form.html,sha256=FSJc4MYYWyzZAy8Ay0b7Ov-cUo-oELHOM5fQehM54Lg,403
|
31
31
|
unfold/contrib/guardian/templates/admin/guardian/model/field.html,sha256=V9ZgmYiIQAFy3GC464y0iBOHm3SDvEEymbuhT3S0qKU,296
|
32
32
|
unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html,sha256=p7GmZOyDqj1urDAh9pyZhatnSpe-G6gXtQ_DpRK-J8k,1426
|
@@ -36,7 +36,7 @@ unfold/contrib/guardian/templates/unfold/guardian/group_form.html,sha256=P8WMC5E
|
|
36
36
|
unfold/contrib/guardian/templates/unfold/guardian/user_form.html,sha256=ci7FRrhTEKbFKKxsJ-07_dWXBYz4mqXPoqu5HfqYLaM,4132
|
37
37
|
unfold/contrib/import_export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
38
|
unfold/contrib/import_export/admin.py,sha256=73Jz93HtENiZe7jzuKSPl4JvasXCpDSGZw_9LvJ2QCU,1156
|
39
|
-
unfold/contrib/import_export/apps.py,sha256=
|
39
|
+
unfold/contrib/import_export/apps.py,sha256=SdJu6Qh90VqGWY19FSDhhpUqhTbaIYsJKny3zX5baHI,149
|
40
40
|
unfold/contrib/import_export/forms.py,sha256=dLqLv7YP0i8_CrxupEfh3VncJ8CJHf7O1eQoWFOcydU,672
|
41
41
|
unfold/contrib/import_export/templates/admin/import_export/base.html,sha256=loL2qcV-f8aAzkHss_I4IkwfgemVW2CjOu_aiBxdwX0,357
|
42
42
|
unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html,sha256=pTDeqPKOlCPKH2dxMIfPnWuc2wVDzB7AzL73WbxSnRY,257
|
@@ -60,8 +60,8 @@ unfold/decorators.py,sha256=BVDlxhZxB4ND3f5-5oiENRTv_W_Q_Eu-gZlsrYKOxiU,3272
|
|
60
60
|
unfold/exceptions.py,sha256=gcCj1ox61E137bk_0Cqy4YC3SttdPgB-fiJUqpmyHSE,43
|
61
61
|
unfold/forms.py,sha256=PTXH_CaWwVKpHw0ODEYgL8zC77n8aPja2_6v6N5QnFI,3360
|
62
62
|
unfold/settings.py,sha256=--TdTSWdOA8TQGW4-vjJkjy_zEyd_kZwBr3BIuQ8hzI,1208
|
63
|
-
unfold/sites.py,sha256=
|
64
|
-
unfold/static/unfold/css/styles.css,sha256=
|
63
|
+
unfold/sites.py,sha256=tqQUiDVAhCghCSXT-0Vk3F1XG2e2K2h7EmMqLUn4UMU,12565
|
64
|
+
unfold/static/unfold/css/styles.css,sha256=YUkTpu6wt0c4gsmJyNa9BE9igcD9FqJ2CggYlAr8d-A,90603
|
65
65
|
unfold/static/unfold/fonts/inter/Inter-Bold.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
|
66
66
|
unfold/static/unfold/fonts/inter/Inter-Medium.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
|
67
67
|
unfold/static/unfold/fonts/inter/Inter-Regular.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
|
@@ -74,19 +74,19 @@ unfold/static/unfold/js/alpine.persist.js,sha256=84PZYnPi25AFm7wIWRe1gzA74c5Rv2V
|
|
74
74
|
unfold/static/unfold/js/app.js,sha256=CIitJoFqpeZYPw8icGVXYX9tVRUgqFxcPZ2WjWS8Ylk,5288
|
75
75
|
unfold/static/unfold/js/chart.js,sha256=22W6cFERR-CElMOKRgMMicueMVP0Vf7FBEBYH8Z8tCk,200633
|
76
76
|
unfold/static/unfold/js/htmx.js,sha256=XOLqvnZiyEx46EW9vaJTBUaaWg8CGVVfXJkVsUmJbpI,42820
|
77
|
-
unfold/styles.css,sha256=
|
77
|
+
unfold/styles.css,sha256=RV8leykkFHm6nF-dM2k_XVGWepIL2UuRX2H4kx4K36s,17403
|
78
78
|
unfold/templates/admin/actions.html,sha256=Z5I2X6YkbAW8tVP6rANEaA3_8gYSt4lHIdGe9IWXWsg,2528
|
79
79
|
unfold/templates/admin/app_index.html,sha256=lVjMIFsspHQ09LGHKfdfg7TlqlL39AX5LbwoeoZjFhk,1335
|
80
|
-
unfold/templates/admin/app_list.html,sha256=
|
80
|
+
unfold/templates/admin/app_list.html,sha256=BrWZaAu-EmtMtSVAvdBkkFFW5jckU7RaVu_D6yp3IZ8,3178
|
81
81
|
unfold/templates/admin/auth/user/add_form.html,sha256=iLig-vd2YExXsj0xGBwYhZ4kGUihwYtLtNVhzObgSzg,478
|
82
82
|
unfold/templates/admin/auth/user/change_password.html,sha256=-Wa9ml3yss-kDz0YQxCiwoxs91KQD8eetCt5l6xekWM,2892
|
83
|
-
unfold/templates/admin/base.html,sha256=
|
83
|
+
unfold/templates/admin/base.html,sha256=e2hq4G-E35f_ZvlS7kZk_pwvE62pxJ-ZlaS5UpZVgOo,2304
|
84
84
|
unfold/templates/admin/base_site.html,sha256=3ckWrcAdd7Pw1hk6Zwyknab_Qb-rteV9-mXhMnfo6VI,361
|
85
85
|
unfold/templates/admin/change_form.html,sha256=Pmi8NbCj98EufSYSzSGdk_bIkRib1hxjAjd_9jeIhT8,5327
|
86
86
|
unfold/templates/admin/change_form_object_tools.html,sha256=eyeH-i2HgEM0Yi-OJA2D1VnKJyC19A_my1IDGxxoP8Y,593
|
87
|
-
unfold/templates/admin/change_list.html,sha256=
|
87
|
+
unfold/templates/admin/change_list.html,sha256=vxEHcObpjMYlJbnnrtSpUfSCJOh1TJL28vSTY5Za0p8,5102
|
88
88
|
unfold/templates/admin/change_list_object_tools.html,sha256=cmMiT2nT20Ph5yfpj9aHPr76Z-JP4aSXp0o-Rnad28s,147
|
89
|
-
unfold/templates/admin/change_list_results.html,sha256=
|
89
|
+
unfold/templates/admin/change_list_results.html,sha256=oGokE28awo8YOkPqIojpsI_vwvaIy1oZHmVpCDvfGU0,4255
|
90
90
|
unfold/templates/admin/date_hierarchy.html,sha256=BfUPbsLpHZVa40BHBahz1H9RSVuz36Jc3yrlobOiIpw,1306
|
91
91
|
unfold/templates/admin/delete_confirmation.html,sha256=hpa2E14oZEXBBs6W1qdNQuF650TIO2Rhr52Q6UfwVeQ,5166
|
92
92
|
unfold/templates/admin/delete_selected_confirmation.html,sha256=Foka2yvwAMEZre-Kh1KNadRzrCotdKM2U4e6AJQYZu8,4941
|
@@ -96,7 +96,7 @@ unfold/templates/admin/filter.html,sha256=JAp95Mg6W2Pfdrr-gxEZld9EvgMGLj8etMdSl8
|
|
96
96
|
unfold/templates/admin/includes/fieldset.html,sha256=r4XjcZAOkWxHQExHZBWoCGtO3LYL0Iwkw1C55oR5V6M,2898
|
97
97
|
unfold/templates/admin/includes/object_delete_summary.html,sha256=Nv69SCzyJHFX14iJFfodxKM0IIpQegKZH0fvKB15QJI,468
|
98
98
|
unfold/templates/admin/index.html,sha256=pkGdKWdD3zzOvkRdELvdb15sleSpfl4eHPA14PAh7z0,684
|
99
|
-
unfold/templates/admin/login.html,sha256=
|
99
|
+
unfold/templates/admin/login.html,sha256=WdOfFLofwBWj9VKCq1U22uLY19J2YQY6vRaE4OOSKfQ,3681
|
100
100
|
unfold/templates/admin/nav_sidebar.html,sha256=63lUhsHfrjZowplnOEq4BkGD9jlX0bVQw5VrAMJqf5M,1178
|
101
101
|
unfold/templates/admin/object_history.html,sha256=PsbhXFd_3SCB9YkSJeHESp2VqjNlHtUW26mRtaZ-MD0,5069
|
102
102
|
unfold/templates/admin/pagination.html,sha256=KWTPV7_hVSZ1374a-pqHXhnOueNQKu1UnSUYirrWtCk,1173
|
@@ -122,15 +122,15 @@ unfold/templates/unfold/components/progress.html,sha256=pfdSjZD17IK4L5kGO8tRYikp
|
|
122
122
|
unfold/templates/unfold/components/separator.html,sha256=G0IlKIFEXJmLZc0KP2YcsLzkaskeb0PrLvOdoKFTgmc,90
|
123
123
|
unfold/templates/unfold/components/text.html,sha256=-GjxvdiaBQIaNfPSzT6SSIwnc3R27FkSDQMoF3FDPso,102
|
124
124
|
unfold/templates/unfold/components/title.html,sha256=PSiNK-s8jUJfu6f9zCcGOOyLiKxS-dsAFu3aR-yjNdU,131
|
125
|
-
unfold/templates/unfold/helpers/account_links.html,sha256=
|
125
|
+
unfold/templates/unfold/helpers/account_links.html,sha256=Kc1FobAVN3B34x9vcMoEXyuQ45d5SjfjaJSo3UErL3Q,1934
|
126
126
|
unfold/templates/unfold/helpers/actions_row.html,sha256=1xd39zx38NOoKuDuxAG7PHeu5x2OTIraQGFkm15Erqg,1681
|
127
127
|
unfold/templates/unfold/helpers/add_link.html,sha256=mIgpKrwqBO1oJ4cwPQWSX1oUHBwHJmy5-2TxUHf-1bo,808
|
128
|
-
unfold/templates/unfold/helpers/app_list.html,sha256=
|
128
|
+
unfold/templates/unfold/helpers/app_list.html,sha256=FvL-cEOVxwckP5TqzLEYL34EMlYiCd6gRy0oguBaRMw,4691
|
129
129
|
unfold/templates/unfold/helpers/app_list_default.html,sha256=vZkw1F7oHOKReNkdHRYjhuNdA1nNdvSD4wbDmf0bnsM,4102
|
130
130
|
unfold/templates/unfold/helpers/boolean.html,sha256=p_WOlytoXvDwta76WgcV4JSWKpBgKf4amhqmHF798F8,564
|
131
131
|
unfold/templates/unfold/helpers/breadcrumb_item.html,sha256=k_1j57UV0WtzFFlMKaewj4NLbR_DhXI6RzCHThblZLw,234
|
132
132
|
unfold/templates/unfold/helpers/display_header.html,sha256=E-yG9ydyb6rRIR5TT4FxekD3qokilfoOwaEaB7np8WI,433
|
133
|
-
unfold/templates/unfold/helpers/display_label.html,sha256=
|
133
|
+
unfold/templates/unfold/helpers/display_label.html,sha256=LS9DWzYjHkYLV27sZDwyXlg2sLJ0AlId9FbjnXpsbfg,317
|
134
134
|
unfold/templates/unfold/helpers/field.html,sha256=oEhGUrLZi2hiuLaC96R2zdwD8DNZqX2_sJIxTpPTJDM,340
|
135
135
|
unfold/templates/unfold/helpers/field_readonly.html,sha256=v7-2oSSDgOsuYpP70y8DqdBqbRybubAfSDzstveoBuw,382
|
136
136
|
unfold/templates/unfold/helpers/fieldsets_tabs.html,sha256=-l8ni5jeJQPNxucAn4ujbts08Bp2WuGlQGnHpBMk5Os,1316
|
@@ -168,12 +168,12 @@ unfold/templates/unfold/widgets/textarea.html,sha256=4xIGWb20DuwiwumndByrAyh7xF-
|
|
168
168
|
unfold/templates/unfold/widgets/time.html,sha256=Dq9s-Kyfkw7p4TfchR-XFVOX6pOS7GkXPOWuP9CLRVw,106
|
169
169
|
unfold/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
170
|
unfold/templatetags/unfold.py,sha256=HFe0GrTD4va0lLzsZhxqjEOONmehqOWdf5vulkxgfGU,6302
|
171
|
-
unfold/templatetags/unfold_list.py,sha256=
|
171
|
+
unfold/templatetags/unfold_list.py,sha256=FhSEGWs2KuqfsqQpAcH3N1SihxIOq_QwVRhmSP1bAEU,13835
|
172
172
|
unfold/typing.py,sha256=1P8PWM2oeaceUJtA5j071RbKEBpHYaux441u7Hd6wv4,643
|
173
173
|
unfold/utils.py,sha256=5OIgDcwvIJQbwbnnqHx61cHh-2T1h184mTAuNq5WXLI,4088
|
174
174
|
unfold/views.py,sha256=Ml3XlEoHLcbEWof59Dw8ihKBMcmp-gBAibThtBFj55A,708
|
175
175
|
unfold/widgets.py,sha256=FThowQCfPVmsFT260j0ufGwPBNxF6JCIEp6QvJ-L0yI,13720
|
176
|
-
django_unfold-0.
|
177
|
-
django_unfold-0.
|
178
|
-
django_unfold-0.
|
179
|
-
django_unfold-0.
|
176
|
+
django_unfold-0.22.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
|
177
|
+
django_unfold-0.22.0.dist-info/METADATA,sha256=QeUai0GE0Wxa0x8UOWPAVat69hy2vLOwSb5xbQxpLA8,42659
|
178
|
+
django_unfold-0.22.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
179
|
+
django_unfold-0.22.0.dist-info/RECORD,,
|
unfold/contrib/filters/apps.py
CHANGED
unfold/contrib/forms/apps.py
CHANGED