django-spire 0.16.9__py3-none-any.whl → 0.16.11__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.
- django_spire/ai/chat/templates/django_spire/ai/chat/dropdown/ellipsis_dropdown.html +2 -2
- django_spire/ai/chat/templates/django_spire/ai/chat/widget/search_chat_widget.html +1 -1
- django_spire/auth/group/templates/django_spire/auth/group/element/group_perm_element.html +50 -32
- django_spire/auth/group/templates/django_spire/auth/group/element/group_special_role_element.html +51 -34
- django_spire/auth/templates/django_spire/auth/page/login_page.html +8 -9
- django_spire/auth/templates/django_spire/auth/page/logout_page.html +1 -1
- django_spire/auth/templates/django_spire/auth/page/password_set_form_page.html +1 -1
- django_spire/comment/templates/django_spire/comment/element/comment_button_element.html +4 -4
- django_spire/comment/templates/django_spire/comment/element/comment_textarea_element.html +1 -1
- django_spire/comment/templates/django_spire/comment/widget/tagging_widget.html +1 -1
- django_spire/consts.py +1 -1
- django_spire/contrib/form/templates/django_spire/contrib/form/button/form_submit_button.html +1 -1
- django_spire/contrib/help/templates/django_spire/contrib/help/help_modal.html +2 -2
- django_spire/core/context_processors.py +0 -3
- django_spire/core/management/commands/spire_startapp_pkg/maps.py +18 -11
- django_spire/core/management/commands/spire_startapp_pkg/template/templates/card/spirechildapp_detail_card.html +6 -6
- django_spire/core/management/commands/spire_startapp_pkg/template/templates/card/spirechildapp_form_card.html +2 -2
- django_spire/core/management/commands/spire_startapp_pkg/template/templates/card/spirechildapp_list_card.html +5 -5
- django_spire/core/management/commands/spire_startapp_pkg/template/templates/item/spirechildapp_item.html +9 -9
- django_spire/core/management/commands/spire_startapp_pkg/template/templates/page/spirechildapp_detail_page.html +2 -2
- django_spire/core/static/django_spire/css/app-default.css +1 -0
- django_spire/core/static/django_spire/css/bootstrap-extension.css +15 -0
- django_spire/core/templates/django_spire/badge/accent_badge.html +1 -1
- django_spire/core/templates/django_spire/badge/primary_badge.html +1 -1
- django_spire/core/templates/django_spire/badge/secondary_badge.html +1 -1
- django_spire/core/templates/django_spire/badge/warning_badge.html +1 -1
- django_spire/core/templates/django_spire/card/delete_confirmation_form_card.html +1 -1
- django_spire/core/templates/django_spire/card/infinite_scroll_card.html +1 -1
- django_spire/core/templates/django_spire/card/title_card.html +1 -2
- django_spire/core/templates/django_spire/dropdown/dropdown.html +1 -1
- django_spire/core/templates/django_spire/dropdown/element/dropdown_link_element.html +16 -16
- django_spire/core/templates/django_spire/dropdown/element/ellipsis_dropdown_modal_link_element.html +11 -8
- django_spire/core/templates/django_spire/filtering/form/base_session_filter_form.html +2 -2
- django_spire/core/templates/django_spire/modal/content/dispatch_modal_delete_confirmation_content.html +1 -1
- django_spire/core/templates/django_spire/modal/content/modal_title_content.html +1 -1
- django_spire/core/templates/django_spire/modal/modal.html +1 -1
- django_spire/core/templates/django_spire/navigation/accordion/nav_accordion.html +0 -1
- django_spire/core/templates/django_spire/navigation/top_navigation.html +13 -0
- django_spire/core/templates/django_spire/page/center_card_page.html +1 -1
- django_spire/core/templates/django_spire/wizard/wizard.html +4 -4
- django_spire/help_desk/apps.py +8 -0
- django_spire/help_desk/auth/__init__.py +0 -0
- django_spire/help_desk/auth/controller.py +15 -0
- django_spire/help_desk/templates/django_spire/help_desk/card/ticket_detail_card.html +3 -9
- django_spire/help_desk/templates/django_spire/help_desk/card/ticket_list_card.html +9 -10
- django_spire/help_desk/templates/django_spire/help_desk/element/icon.html +3 -0
- django_spire/help_desk/templates/django_spire/help_desk/form/ticket_form.html +1 -1
- django_spire/help_desk/templates/django_spire/help_desk/item/ticket_item.html +33 -32
- django_spire/help_desk/views/form_views.py +3 -3
- django_spire/help_desk/views/page_views.py +4 -5
- django_spire/knowledge/entry/views/json_views.py +1 -1
- django_spire/knowledge/templates/django_spire/knowledge/collection/card/context_menu_card.html +5 -5
- django_spire/knowledge/templates/django_spire/knowledge/entry/card/context_menu_card.html +5 -5
- django_spire/knowledge/templates/django_spire/knowledge/entry/version/block/dropdown/add_dropdown.html +1 -0
- django_spire/notification/app/templates/django_spire/notification/app/dropdown/notification_dropdown.html +1 -1
- django_spire/notification/app/templates/django_spire/notification/app/dropdown/notification_dropdown_content.html +6 -3
- django_spire/settings.py +1 -0
- django_spire/theme/templates/django_spire/theme/card/colors_preview_card.html +9 -9
- django_spire/theme/templates/django_spire/theme/card/example_preview_card.html +2 -2
- django_spire/theme/templates/django_spire/theme/card/preview_card.html +6 -6
- django_spire/theme/templates/django_spire/theme/example/item/example_item.html +2 -2
- django_spire/theme/templates/django_spire/theme/section/badge_section.html +4 -4
- django_spire/theme/templates/django_spire/theme/section/color_section.html +32 -32
- {django_spire-0.16.9.dist-info → django_spire-0.16.11.dist-info}/METADATA +1 -1
- {django_spire-0.16.9.dist-info → django_spire-0.16.11.dist-info}/RECORD +68 -65
- {django_spire-0.16.9.dist-info → django_spire-0.16.11.dist-info}/WHEEL +0 -0
- {django_spire-0.16.9.dist-info → django_spire-0.16.11.dist-info}/licenses/LICENSE.md +0 -0
- {django_spire-0.16.9.dist-info → django_spire-0.16.11.dist-info}/top_level.txt +0 -0
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
{% endblock %}
|
|
12
12
|
|
|
13
13
|
{% block dropdown_content %}
|
|
14
|
-
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_click="enable_rename_chat()" link_text='Rename' %}
|
|
14
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_click="enable_rename_chat()" link_text='Rename' link_css='text-start' %}
|
|
15
15
|
|
|
16
16
|
{% url 'django_spire:ai:chat:template:confirm_delete' pk=recent_chat.id as delete_url %}
|
|
17
|
-
{% include 'django_spire/dropdown/element/ellipsis_dropdown_modal_link_element.html' with view_url=delete_url link_text='Delete' link_css='text-app-danger' %}
|
|
17
|
+
{% include 'django_spire/dropdown/element/ellipsis_dropdown_modal_link_element.html' with view_url=delete_url link_text='Delete' link_css='text-app-danger text-start' %}
|
|
18
18
|
{% endblock %}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
@keydown.up="$focus.wrap().previous()"
|
|
31
31
|
x-show="expanded && search_query.trim() !== ''"
|
|
32
32
|
|
|
33
|
-
class="position-absolute overflow-auto top-100 start-0 w-100
|
|
33
|
+
class="position-absolute overflow-auto top-100 start-0 w-100 border border-bottom-2 rounded-bottom-1 shadow p-0 m-0"
|
|
34
34
|
style="z-index: 1100;"
|
|
35
35
|
x-ref="search_results">
|
|
36
36
|
|
|
@@ -1,40 +1,58 @@
|
|
|
1
|
-
<div
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
<div
|
|
2
|
+
x-data="{
|
|
3
|
+
current_permission: '{{ perm_data.level_verbose }}',
|
|
4
|
+
permission_choices: ['None', 'View', 'Add', 'Change', 'Delete'],
|
|
5
|
+
loading: false,
|
|
6
|
+
error_message: '',
|
|
7
|
+
show_dropdown: false,
|
|
8
|
+
|
|
9
|
+
async update(perm) {
|
|
10
|
+
this.show_dropdown = false
|
|
11
|
+
this.error_message = null
|
|
12
|
+
|
|
13
|
+
if(this.current_permission !== perm) {
|
|
14
|
+
this.loading = true
|
|
15
|
+
let response = await ajax_request(
|
|
16
|
+
'POST',
|
|
17
|
+
'{% url "django_spire:auth:group:json:group_permission_ajax" app_name=perm_data.app_name pk=group.pk %}',
|
|
18
|
+
{'perm_level': perm}
|
|
19
|
+
)
|
|
20
|
+
this.loading = false
|
|
21
|
+
let status = response.data.status
|
|
22
|
+
if (status === 200){
|
|
23
|
+
this.current_permission = perm
|
|
24
|
+
} else {
|
|
25
|
+
this.error_message = response.data.message
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}"
|
|
30
|
+
>
|
|
27
31
|
<div class="position-relative">
|
|
28
32
|
<div @click="show_dropdown = true" class="btn btn-sm border dropdown-toggle">
|
|
29
33
|
<span x-text="current_permission"></span>
|
|
30
34
|
</div>
|
|
31
|
-
<div
|
|
32
|
-
|
|
35
|
+
<div
|
|
36
|
+
style="width: 80px; z-index: 2"
|
|
37
|
+
class="card position-absolute bg-app-layer-one mt-1 border"
|
|
38
|
+
x-show="show_dropdown"
|
|
39
|
+
@click.outside="show_dropdown = false"
|
|
40
|
+
>
|
|
33
41
|
<template x-for="perm in permission_choices">
|
|
34
|
-
<div
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
<div
|
|
43
|
+
class="py-1 ps-2 cursor-pointer bg-app-layer-three-hover"
|
|
44
|
+
:class="{ 'border-bottom': perm !== 'Delete' }"
|
|
45
|
+
:style="
|
|
46
|
+
perm === 'None' ? 'border-top-left-radius: 0.30rem !important; border-top-right-radius: 0.30rem !important;' :
|
|
47
|
+
perm === 'Delete' ? 'border-bottom-left-radius: 0.30rem !important; border-bottom-right-radius: 0.30rem !important;' : ''
|
|
48
|
+
"
|
|
49
|
+
@click="update(perm)"
|
|
50
|
+
>
|
|
51
|
+
<span
|
|
52
|
+
class="fs--1"
|
|
53
|
+
:class="{ 'text-app-secondary': perm === current_permission }"
|
|
54
|
+
x-text="perm"
|
|
55
|
+
></span>
|
|
38
56
|
</div>
|
|
39
57
|
</template>
|
|
40
58
|
</div>
|
django_spire/auth/group/templates/django_spire/auth/group/element/group_special_role_element.html
CHANGED
|
@@ -1,43 +1,60 @@
|
|
|
1
|
-
<div
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.loading = false
|
|
22
|
-
let status = response.data.status
|
|
23
|
-
if (status === 200){
|
|
24
|
-
this.has_access = perm === 'Yes'
|
|
25
|
-
} else {
|
|
26
|
-
this.error_message = response.data.message
|
|
27
|
-
}
|
|
1
|
+
<div
|
|
2
|
+
x-data="{
|
|
3
|
+
has_access: '{{ special_role.has_access }}' === 'True',
|
|
4
|
+
get has_access_verbose() { return this.has_access ? 'Yes' : 'No' },
|
|
5
|
+
codename: '{{ special_role.codename }}',
|
|
6
|
+
permission_choices: ['No', 'Yes'],
|
|
7
|
+
loading: false,
|
|
8
|
+
error_message: '',
|
|
9
|
+
show_dropdown: false,
|
|
10
|
+
|
|
11
|
+
async update(perm) {
|
|
12
|
+
this.show_dropdown = false
|
|
13
|
+
this.error_message = null
|
|
14
|
+
this.loading = true
|
|
15
|
+
let response = await ajax_request(
|
|
16
|
+
'POST',
|
|
17
|
+
'{% url "django_spire:auth:group:json:group_special_role_ajax" app_name=perm_data.app_name pk=group.pk %}',
|
|
18
|
+
{
|
|
19
|
+
'codename': this.codename,
|
|
20
|
+
'grant_special_role_access': perm === 'Yes'
|
|
28
21
|
}
|
|
29
|
-
|
|
22
|
+
)
|
|
23
|
+
this.loading = false
|
|
24
|
+
let status = response.data.status
|
|
25
|
+
if (status === 200){
|
|
26
|
+
this.has_access = perm === 'Yes'
|
|
27
|
+
} else {
|
|
28
|
+
this.error_message = response.data.message
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}"
|
|
32
|
+
>
|
|
30
33
|
<div class="position-relative">
|
|
31
34
|
<div @click="show_dropdown = true" class="btn btn-sm btn-app-primary-outlined dropdown-toggle">
|
|
32
35
|
<span x-text="has_access_verbose"></span>
|
|
33
36
|
</div>
|
|
34
|
-
<div
|
|
35
|
-
|
|
37
|
+
<div
|
|
38
|
+
style="width: 80px; z-index: 2"
|
|
39
|
+
class="card position-absolute bg-app-layer-one mt-1 border"
|
|
40
|
+
x-show="show_dropdown"
|
|
41
|
+
@click.outside="show_dropdown = false"
|
|
42
|
+
>
|
|
36
43
|
<template x-for="perm in permission_choices">
|
|
37
|
-
<div
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
<div
|
|
45
|
+
class="py-1 ps-2 cursor-pointer bg-app-layer-three-hover"
|
|
46
|
+
:class="{ 'border-bottom': perm !== 'Yes' }"
|
|
47
|
+
:style="
|
|
48
|
+
perm === 'No' ? 'border-top-left-radius: 0.30rem !important; border-top-right-radius: 0.30rem !important;' :
|
|
49
|
+
perm === 'Yes' ? 'border-bottom-left-radius: 0.30rem !important; border-bottom-right-radius: 0.30rem !important;' : ''
|
|
50
|
+
"
|
|
51
|
+
@click="update(perm)"
|
|
52
|
+
>
|
|
53
|
+
<span
|
|
54
|
+
class="fs--1"
|
|
55
|
+
:class="{ 'text-app-secondary': has_access_verbose === perm }"
|
|
56
|
+
x-text="perm"
|
|
57
|
+
></span>
|
|
41
58
|
</div>
|
|
42
59
|
</template>
|
|
43
60
|
</div>
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{% extends 'django_spire/auth/page/auth_page.html' %}
|
|
2
2
|
|
|
3
3
|
{% block authentication_page_content %}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
<form
|
|
5
|
+
class="text-app-secondary"
|
|
6
|
+
method="post"
|
|
7
|
+
x-data="{
|
|
8
|
+
username: new GlueCharField('username', {required: true, label: {% block username_label %}'Email Address'{% endblock %}}),
|
|
9
|
+
password: new GlueCharField('password', {required: true})
|
|
10
|
+
}"
|
|
11
|
+
>
|
|
9
12
|
{% csrf_token %}
|
|
10
13
|
<div class="row">
|
|
11
14
|
<div class="col">
|
|
@@ -30,8 +33,4 @@
|
|
|
30
33
|
Forgot my password
|
|
31
34
|
</a>
|
|
32
35
|
</div>
|
|
33
|
-
|
|
34
36
|
{% endblock %}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<div class="col px-4">
|
|
16
16
|
<form method="post" action="{% url 'django_spire:auth:redirect:logout' %}" class="text-app-secondary">
|
|
17
17
|
{% csrf_token %}
|
|
18
|
-
<button type="submit" class="d-block mx-auto
|
|
18
|
+
<button type="submit" class="d-block mx-auto shadow-sm btn my-4 w-100">Logout</button>
|
|
19
19
|
</form>
|
|
20
20
|
</div>
|
|
21
21
|
</div>
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
|
|
123
123
|
{% elif button_text %}
|
|
124
124
|
<button @click="toggle_show_comment_dropdown()"
|
|
125
|
-
class="btn
|
|
125
|
+
class="btn text-business-base-blue rounded border-1 border-business-base-blue btn-sm px-2"
|
|
126
126
|
type="button" data-display="static"
|
|
127
127
|
aria-haspopup="true" aria-expanded="false">
|
|
128
128
|
{{ button_text }}
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
|
|
144
144
|
<div style="max-height: 100px; overflow-x: hidden; overflow-y: auto"
|
|
145
145
|
x-show="show_user_list_dropdown" @click.outside="show_user_list_dropdown = false"
|
|
146
|
-
class="text-business-base-blue
|
|
146
|
+
class="text-business-base-blue fs-0 w-75 ms-3 border rounded position-absolute top-25 start-0">
|
|
147
147
|
<template x-for="(user, index) in filtered_users" :key="user.username">
|
|
148
148
|
<a class="text-decoration-none text-business-base-blue" href="#">
|
|
149
149
|
<li @click="add_user_to_comment(user)"
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
</template>
|
|
154
154
|
</div>
|
|
155
155
|
|
|
156
|
-
<button @click="$store.page_state.toggle_page_loading_state()" class="btn btn-primary btn-sm w-100 mt-1"
|
|
156
|
+
<button @click="$store.page_state.toggle_page_loading_state()" class="btn btn-app-primary btn-sm w-100 mt-1"
|
|
157
157
|
type="submit">Submit
|
|
158
158
|
</button>
|
|
159
159
|
</form>
|
|
@@ -162,4 +162,4 @@
|
|
|
162
162
|
</div>
|
|
163
163
|
</div>
|
|
164
164
|
</div>
|
|
165
|
-
{% endif %}
|
|
165
|
+
{% endif %}
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
</form>
|
|
102
102
|
|
|
103
103
|
<div style="max-height: 125px; z-index: 2; overflow-x: hidden; overflow-y: auto" x-show="show_user_list" @click.outside="show_user_list=false" x-transition
|
|
104
|
-
class="
|
|
104
|
+
class="text-900 w-100 shadow border rounded position-absolute top-50 start-0">
|
|
105
105
|
<template x-if="filtered_users.length > 0">
|
|
106
106
|
<template x-for="user in filtered_users" :key="user.id">
|
|
107
107
|
<div @click="add_user_to_comment(user)"
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
@keydown.up.prevent.stop="$focus.wrap().prev()"
|
|
109
109
|
@keydown.tab.prevent.stop="$focus.wrap().next()"
|
|
110
110
|
@keydown.esc.prevent.stop="document.getElementById(id).focus()"
|
|
111
|
-
class="
|
|
111
|
+
class="w-100 shadow border border-1 rounded position-absolute top-100 start-0 mt-1">
|
|
112
112
|
<template x-if="filtered_users.length > 0">
|
|
113
113
|
<template x-for="user in filtered_users" :key="user.id">
|
|
114
114
|
<button
|
django_spire/consts.py
CHANGED
|
@@ -3,19 +3,26 @@ from __future__ import annotations
|
|
|
3
3
|
|
|
4
4
|
def generate_replacement_map(components: list[str]) -> dict[str, str]:
|
|
5
5
|
app_name = components[-1]
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
model_name = ''.join(word.title() for word in app_name.split('_'))
|
|
7
|
+
if len(components)> 1:
|
|
8
|
+
parents = components[0:-1]
|
|
9
|
+
parent = components[-2]
|
|
10
|
+
else:
|
|
11
|
+
parents = [app_name,]
|
|
12
|
+
parent = app_name
|
|
8
13
|
module = '.'.join(components)
|
|
9
14
|
|
|
15
|
+
# The sequence is important. Plurals must be replaced first;
|
|
16
|
+
# otherwise, it will generate _plural variables and names.
|
|
10
17
|
return {
|
|
11
18
|
'module': module,
|
|
12
|
-
'
|
|
13
|
-
'
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
19
|
+
'spire_model_name_plural': model_name + 's',
|
|
20
|
+
'spire_model_name': model_name,
|
|
21
|
+
'spire_app_name_plural': app_name.lower() + 's',
|
|
22
|
+
'spire_app_name': app_name.lower(),
|
|
23
|
+
'spire_parent_app': parent.lower(),
|
|
24
|
+
'spire_reverse_parent_path': ':'.join(parents[1:]).lower(),
|
|
25
|
+
'spire_reverse_path': ':'.join(parents[1:]).lower() + ':' + app_name.lower(),
|
|
26
|
+
'spire_label_path': '_'.join(parents[1:]).lower() + '_' + app_name.lower(),
|
|
27
|
+
'spire_template_path': '/'.join(parents[1:]).lower() + '/' + app_name.lower(),
|
|
21
28
|
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{% extends 'django_spire/card/title_card.html' %}
|
|
2
2
|
|
|
3
3
|
{% block card_title %}
|
|
4
|
-
|
|
4
|
+
spire_model_name
|
|
5
5
|
{% endblock %}
|
|
6
6
|
|
|
7
7
|
{% block card_button %}
|
|
8
|
-
{% if perms.
|
|
9
|
-
{% url '
|
|
10
|
-
{% include 'django_spire/button/primary_dark_button.html' with button_text='Edit' button_icon='bi bi-pencil' button_href=
|
|
8
|
+
{% if perms.spire_label_path.change_spire_app_name %}
|
|
9
|
+
{% url 'spire_parent_app:spire_app_name:page:form' pk=spire_app_name.pk as spire_app_name_edit_url %}
|
|
10
|
+
{% include 'django_spire/button/primary_dark_button.html' with button_text='Edit' button_icon='bi bi-pencil' button_href=spire_app_name_edit_url %}
|
|
11
11
|
{% endif %}
|
|
12
12
|
{% endblock %}
|
|
13
13
|
|
|
14
14
|
{% block card_title_content %}
|
|
15
15
|
<div class="row g-3">
|
|
16
16
|
<div class="col-12">
|
|
17
|
-
{% include 'django_spire/element/attribute_element.html' with attribute_title='Name' attribute_value=
|
|
17
|
+
{% include 'django_spire/element/attribute_element.html' with attribute_title='Name' attribute_value=spire_app_name.name %}
|
|
18
18
|
</div>
|
|
19
19
|
|
|
20
20
|
<div class="col-12">
|
|
21
|
-
{% include 'django_spire/element/attribute_element.html' with attribute_title='Description' attribute_value=
|
|
21
|
+
{% include 'django_spire/element/attribute_element.html' with attribute_title='Description' attribute_value=spire_app_name.description|linebreaksbr %}
|
|
22
22
|
</div>
|
|
23
23
|
</div>
|
|
24
24
|
{% endblock %}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{% extends 'django_spire/card/title_card.html' %}
|
|
2
2
|
|
|
3
3
|
{% block card_title %}
|
|
4
|
-
|
|
4
|
+
spire_model_name
|
|
5
5
|
{% endblock %}
|
|
6
6
|
|
|
7
7
|
{% block card_title_content %}
|
|
8
|
-
{% include '
|
|
8
|
+
{% include 'spire_parent_app/spire_app_name/form/spire_app_name_form.html' %}
|
|
9
9
|
{% endblock %}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{% extends 'django_spire/card/title_card.html' %}
|
|
2
2
|
|
|
3
3
|
{% block card_title %}
|
|
4
|
-
|
|
4
|
+
spire_model_name_plural
|
|
5
5
|
{% endblock %}
|
|
6
6
|
|
|
7
7
|
{% block card_button %}
|
|
8
|
-
{% url '
|
|
9
|
-
{% include 'django_spire/button/primary_dark_button.html' with button_text='Add' button_icon='bi bi-plus' button_href=
|
|
8
|
+
{% url 'spire_parent_app:spire_app_name:page:form' pk=0 as new_spire_app_name_url %}
|
|
9
|
+
{% include 'django_spire/button/primary_dark_button.html' with button_text='Add' button_icon='bi bi-plus' button_href=new_spire_app_name_url %}
|
|
10
10
|
{% endblock %}
|
|
11
11
|
|
|
12
12
|
{% block card_title_content %}
|
|
13
|
-
{% for
|
|
14
|
-
{% include '
|
|
13
|
+
{% for spire_app_name in spire_app_name_plural %}
|
|
14
|
+
{% include 'spire_parent_app/spire_app_name/item/spire_app_name_item.html' %}
|
|
15
15
|
{% empty %}
|
|
16
16
|
{% include 'django_spire/item/no_data_item.html' %}
|
|
17
17
|
{% endfor %}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{% extends 'django_spire/item/item.html' %}
|
|
2
2
|
|
|
3
3
|
{% block item_title %}
|
|
4
|
-
{% url '
|
|
5
|
-
{% include 'django_spire/element/attribute_element.html' with attribute_title='
|
|
4
|
+
{% url 'spire_parent_app:spire_app_name:page:detail' pk=spire_app_name.pk as spire_app_name_view_url %}
|
|
5
|
+
{% include 'django_spire/element/attribute_element.html' with attribute_title='spire_model_name' attribute_value=spire_app_name.name attribute_href=spire_app_name_view_url %}
|
|
6
6
|
{% endblock %}
|
|
7
7
|
|
|
8
8
|
{% block item_row_content %}
|
|
9
|
-
{% include 'django_spire/element/attribute_element.html' with attribute_title='Description' attribute_value=
|
|
9
|
+
{% include 'django_spire/element/attribute_element.html' with attribute_title='Description' attribute_value=spire_app_name.description %}
|
|
10
10
|
{% endblock %}
|
|
11
11
|
|
|
12
12
|
{% block item_button %}
|
|
13
|
-
{% url '
|
|
13
|
+
{% url 'spire_parent_app:spire_app_name:page:detail' pk=spire_app_name.pk as spire_app_name_view_url %}
|
|
14
14
|
|
|
15
|
-
{% if perms.
|
|
16
|
-
{% url '
|
|
15
|
+
{% if perms.spire_label_path.change_spire_app_name %}
|
|
16
|
+
{% url 'spire_parent_app:spire_app_name:page:form' pk=spire_app_name.pk as spire_app_name_edit_url %}
|
|
17
17
|
{% endif %}
|
|
18
18
|
|
|
19
|
-
{% if perms.
|
|
20
|
-
{% url '
|
|
19
|
+
{% if perms.spire_label_path.delete_spire_app_name %}
|
|
20
|
+
{% url 'spire_parent_app:spire_app_name:page:delete' pk=spire_app_name.pk as spire_app_name_delete_url %}
|
|
21
21
|
{% endif %}
|
|
22
22
|
|
|
23
|
-
{% include 'django_spire/dropdown/ellipsis_dropdown.html' with view_url=
|
|
23
|
+
{% include 'django_spire/dropdown/ellipsis_dropdown.html' with view_url=spire_app_name_view_url edit_url=spire_app_name_edit_url delete_url=spire_app_name_delete_url %}
|
|
24
24
|
{% endblock %}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
{% block page_content %}
|
|
4
4
|
<div class="row g-3">
|
|
5
5
|
<div class="col-12">
|
|
6
|
-
{% include '
|
|
6
|
+
{% include 'spire_parent_app/spire_app_name/card/spire_app_name_detail_card.html' %}
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
9
|
<div class="col-4">
|
|
10
|
-
{% include 'history/card/activity_list_card.html' with activity_log=
|
|
10
|
+
{% include 'history/card/activity_list_card.html' with activity_log=spire_app_name.activity_log.prefetch_user %}
|
|
11
11
|
</div>
|
|
12
12
|
</div>
|
|
13
13
|
{% endblock %}
|
|
@@ -26,6 +26,21 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
26
26
|
box-shadow: rgba(0, 0, 0, 0.1) 0 0.25rem 0.375rem -0.0625rem, rgba(0, 0, 0, 0.06) 0 0.125rem 0.25rem -0.0625rem !important;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
.dropdown-item {
|
|
30
|
+
border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.dropdown-item:first-child {
|
|
34
|
+
border-top-left-radius: 0.30rem !important;
|
|
35
|
+
border-top-right-radius: 0.30rem !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.dropdown-item:last-child {
|
|
39
|
+
border-bottom: 0;
|
|
40
|
+
border-bottom-left-radius: 0.30rem !important;
|
|
41
|
+
border-bottom-right-radius: 0.30rem !important;
|
|
42
|
+
}
|
|
43
|
+
|
|
29
44
|
.cursor-pointer {
|
|
30
45
|
cursor: pointer !important;
|
|
31
46
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<input hidden id="delete_confirmation_should_delete" value="false" name="should_delete" type="text">
|
|
19
19
|
|
|
20
20
|
<div class="col-auto me-3">
|
|
21
|
-
{% include 'django_spire/button/
|
|
21
|
+
{% include 'django_spire/button/danger_button.html' with x_button_click='submit_value(true)' button_text='Delete' %}
|
|
22
22
|
</div>
|
|
23
23
|
<div class="col-auto">
|
|
24
24
|
{% include 'django_spire/button/secondary_button.html' with x_button_click='submit_value(false)' button_text='Cancel' %}
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
|
|
115
115
|
<div class="row justify-content-between align-items-center {% block card_title_class %}mb-2 pb-2 border-bottom-secondary{% endblock %}">
|
|
116
116
|
<div class="col">
|
|
117
|
-
<div class="card-title text-uppercase
|
|
117
|
+
<div class="card-title text-uppercase mb-0">{% block card_title %}{% endblock %}</div>
|
|
118
118
|
</div>
|
|
119
119
|
<div class="col-auto d-flex align-items-center" style="min-height: 2.0rem;">
|
|
120
120
|
{% block card_button %}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
{% endblock %}
|
|
6
6
|
<div
|
|
7
7
|
style="{% block dropdown_style %}{% endblock %} z-index: 4;"
|
|
8
|
-
class="position-absolute shadow-lg card border-
|
|
8
|
+
class="position-absolute shadow-lg card border border-bott mt-1 {% block dropdown_position %}top-100{% endblock %}"
|
|
9
9
|
x-bind="dialogue"
|
|
10
10
|
x-cloak
|
|
11
11
|
>
|