django-spire 0.16.6__py3-none-any.whl → 0.16.8__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/consts.py +1 -1
- django_spire/core/static/django_spire/css/bootstrap-override.css +38 -10
- django_spire/core/static/django_spire/css/themes/input.css +21 -0
- django_spire/core/static/django_spire/js/theme.js +51 -0
- django_spire/knowledge/collection/querysets.py +24 -1
- django_spire/knowledge/collection/services/transformation_service.py +2 -10
- django_spire/knowledge/collection/views/form_views.py +7 -1
- django_spire/knowledge/entry/views/json_views.py +1 -1
- django_spire/knowledge/static/django_spire/knowledge/css/navigation_items.css +1 -2
- django_spire/knowledge/templates/django_spire/knowledge/page/full_page.html +3 -3
- {django_spire-0.16.6.dist-info → django_spire-0.16.8.dist-info}/METADATA +2 -2
- {django_spire-0.16.6.dist-info → django_spire-0.16.8.dist-info}/RECORD +15 -14
- {django_spire-0.16.6.dist-info → django_spire-0.16.8.dist-info}/WHEEL +0 -0
- {django_spire-0.16.6.dist-info → django_spire-0.16.8.dist-info}/licenses/LICENSE.md +0 -0
- {django_spire-0.16.6.dist-info → django_spire-0.16.8.dist-info}/top_level.txt +0 -0
django_spire/consts.py
CHANGED
|
@@ -74,16 +74,17 @@
|
|
|
74
74
|
--bs-popover-header-color: var(--app-default-text-color);
|
|
75
75
|
|
|
76
76
|
--bs-form-control-color: var(--app-default-text-color);
|
|
77
|
-
--bs-form-control-bg: var(--app-layer-
|
|
78
|
-
--bs-form-control-border-color: var(--
|
|
77
|
+
--bs-form-control-bg: var(--app-layer-two);
|
|
78
|
+
--bs-form-control-border-color: var(--bs-border-color);
|
|
79
79
|
--bs-form-control-focus-border-color: var(--app-primary);
|
|
80
|
-
--bs-form-control-focus-box-shadow: 0 0 0 0.25rem rgba(
|
|
80
|
+
--bs-form-control-focus-box-shadow: 0 0 0 0.25rem rgba(0, 0, 0, 0.25);
|
|
81
|
+
--bs-form-control-disabled-bg: var(--app-layer-three);
|
|
81
82
|
|
|
82
83
|
--bs-form-select-color: var(--app-default-text-color);
|
|
83
|
-
--bs-form-select-bg: var(--app-layer-
|
|
84
|
-
--bs-form-select-border-color: var(--
|
|
84
|
+
--bs-form-select-bg: var(--app-layer-two);
|
|
85
|
+
--bs-form-select-border-color: var(--bs-border-color);
|
|
85
86
|
--bs-form-select-focus-border-color: var(--app-primary);
|
|
86
|
-
--bs-form-select-focus-box-shadow: 0 0 0 0.25rem rgba(
|
|
87
|
+
--bs-form-select-focus-box-shadow: 0 0 0 0.25rem rgba(0, 0, 0, 0.25);
|
|
87
88
|
|
|
88
89
|
--bs-btn-color: var(--app-default-button-text-color);
|
|
89
90
|
--bs-btn-bg: var(--app-primary);
|
|
@@ -141,8 +142,8 @@
|
|
|
141
142
|
|
|
142
143
|
--bs-border-color-translucent: rgba(64, 61, 82, 0.175);
|
|
143
144
|
|
|
144
|
-
--bs-form-control-focus-box-shadow: 0 0 0 0.25rem
|
|
145
|
-
--bs-form-select-focus-box-shadow: 0 0 0 0.25rem
|
|
145
|
+
--bs-form-control-focus-box-shadow: 0 0 0 0.25rem var(--app-focus-ring-primary);
|
|
146
|
+
--bs-form-select-focus-box-shadow: 0 0 0 0.25rem var(--app-focus-ring-primary);
|
|
146
147
|
|
|
147
148
|
--bs-tooltip-bg: var(--app-layer-two);
|
|
148
149
|
--bs-tooltip-color: var(--app-default-text-color);
|
|
@@ -160,6 +161,33 @@
|
|
|
160
161
|
|
|
161
162
|
--bs-border-color-translucent: rgba(206, 202, 205, 0.175);
|
|
162
163
|
|
|
163
|
-
--bs-form-control-focus-box-shadow: 0 0 0 0.25rem
|
|
164
|
-
--bs-form-select-focus-box-shadow: 0 0 0 0.25rem
|
|
164
|
+
--bs-form-control-focus-box-shadow: 0 0 0 0.25rem var(--app-focus-ring-primary);
|
|
165
|
+
--bs-form-select-focus-box-shadow: 0 0 0 0.25rem var(--app-focus-ring-primary);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.form-control {
|
|
169
|
+
background-color: var(--app-layer-two) !important;
|
|
170
|
+
color: var(--app-default-text-color) !important;
|
|
171
|
+
border-color: var(--bs-border-color) !important;
|
|
172
|
+
caret-color: var(--app-default-text-color) !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.form-control:focus {
|
|
176
|
+
box-shadow: none !important;
|
|
177
|
+
outline: none !important;
|
|
178
|
+
border-color: var(--app-primary) !important;
|
|
179
|
+
border-width: 2px !important;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.form-control:disabled,
|
|
183
|
+
.form-control[readonly] {
|
|
184
|
+
background-color: var(--app-layer-three) !important;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.form-control:-webkit-autofill,
|
|
188
|
+
.form-control:-webkit-autofill:hover,
|
|
189
|
+
.form-control:-webkit-autofill:focus,
|
|
190
|
+
.form-control:-webkit-autofill:active {
|
|
191
|
+
-webkit-box-shadow: 0 0 0 30px var(--app-layer-two) inset !important;
|
|
192
|
+
-webkit-text-fill-color: var(--app-default-text-color) !important;
|
|
165
193
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
input[type="datetime-local"]::-webkit-calendar-picker-indicator,
|
|
2
|
+
input[type="date"]::-webkit-calendar-picker-indicator,
|
|
3
|
+
input[type="time"]::-webkit-calendar-picker-indicator,
|
|
4
|
+
input[type="week"]::-webkit-calendar-picker-indicator,
|
|
5
|
+
input[type="month"]::-webkit-calendar-picker-indicator {
|
|
6
|
+
cursor: pointer;
|
|
7
|
+
border: none;
|
|
8
|
+
opacity: 0.75;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
input[type="datetime-local"]::-webkit-calendar-picker-indicator:hover,
|
|
12
|
+
input[type="date"]::-webkit-calendar-picker-indicator:hover,
|
|
13
|
+
input[type="time"]::-webkit-calendar-picker-indicator:hover,
|
|
14
|
+
input[type="week"]::-webkit-calendar-picker-indicator:hover,
|
|
15
|
+
input[type="month"]::-webkit-calendar-picker-indicator:hover {
|
|
16
|
+
opacity: 1;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
[data-theme="dark"] input {
|
|
20
|
+
color-scheme: dark;
|
|
21
|
+
}
|
|
@@ -102,6 +102,54 @@ document.addEventListener('alpine:init', () => {
|
|
|
102
102
|
if (window.django_spire && window.django_spire.theme) {
|
|
103
103
|
window.django_spire.theme.active = theme.value;
|
|
104
104
|
}
|
|
105
|
+
|
|
106
|
+
if (!document.querySelector('link[data-input-css]')) {
|
|
107
|
+
let link = document.createElement('link');
|
|
108
|
+
link.rel = 'stylesheet';
|
|
109
|
+
link.href = '/static/django_spire/css/themes/input.css';
|
|
110
|
+
link.setAttribute('data-input-css', 'true');
|
|
111
|
+
|
|
112
|
+
document.head.appendChild(link);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
setTimeout(() => this.apply_input_icon_theme(), 100);
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
apply_input_icon_theme() {
|
|
119
|
+
// This is a fix for a Chromium-based browser. We have to dynamically
|
|
120
|
+
// target the input field icon, otherwise it won't be styled properly.
|
|
121
|
+
|
|
122
|
+
let text_color = getComputedStyle(document.documentElement).getPropertyValue('--app-default-text-color').trim();
|
|
123
|
+
|
|
124
|
+
if (!text_color) return;
|
|
125
|
+
|
|
126
|
+
let hex = text_color.replace('#', '%23');
|
|
127
|
+
let style_id = 'calendar-icon-theme';
|
|
128
|
+
let existing = document.getElementById(style_id);
|
|
129
|
+
|
|
130
|
+
if (existing) {
|
|
131
|
+
existing.remove();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
let calendar_svg = `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="${hex}" stroke-width="1.5" viewBox="0 0 16 16"><rect x="2" y="3" width="12" height="11" rx="1"/><path d="M2 6h12M5 1v3M11 1v3"/><circle cx="5" cy="9" r="0.5" fill="${hex}"/><circle cx="8" cy="9" r="0.5" fill="${hex}"/><circle cx="11" cy="9" r="0.5" fill="${hex}"/><circle cx="5" cy="12" r="0.5" fill="${hex}"/><circle cx="8" cy="12" r="0.5" fill="${hex}"/><circle cx="11" cy="12" r="0.5" fill="${hex}"/></svg>`;
|
|
135
|
+
let clock_svg = `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="${hex}"><path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/></svg>`;
|
|
136
|
+
|
|
137
|
+
let style = document.createElement('style');
|
|
138
|
+
style.id = style_id;
|
|
139
|
+
|
|
140
|
+
style.textContent = `
|
|
141
|
+
input[type="datetime-local"]::-webkit-calendar-picker-indicator,
|
|
142
|
+
input[type="date"]::-webkit-calendar-picker-indicator,
|
|
143
|
+
input[type="week"]::-webkit-calendar-picker-indicator,
|
|
144
|
+
input[type="month"]::-webkit-calendar-picker-indicator {
|
|
145
|
+
background-image: url('${calendar_svg}');
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
input[type="time"]::-webkit-calendar-picker-indicator {
|
|
149
|
+
background-image: url('${clock_svg}');
|
|
150
|
+
}
|
|
151
|
+
`;
|
|
152
|
+
document.head.appendChild(style);
|
|
105
153
|
},
|
|
106
154
|
|
|
107
155
|
load_theme_css(family, mode) {
|
|
@@ -134,6 +182,8 @@ document.addEventListener('alpine:init', () => {
|
|
|
134
182
|
if (existing) {
|
|
135
183
|
existing.remove();
|
|
136
184
|
}
|
|
185
|
+
|
|
186
|
+
this.apply_input_icon_theme();
|
|
137
187
|
};
|
|
138
188
|
|
|
139
189
|
document.head.appendChild(link);
|
|
@@ -150,6 +200,7 @@ document.addEventListener('alpine:init', () => {
|
|
|
150
200
|
async set(value) {
|
|
151
201
|
this.current = value;
|
|
152
202
|
this.apply();
|
|
203
|
+
|
|
153
204
|
await this.persist_to_server(value);
|
|
154
205
|
},
|
|
155
206
|
|
|
@@ -2,8 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from django.core.handlers.wsgi import WSGIRequest
|
|
5
6
|
from django.db.models import Count, Q
|
|
6
7
|
|
|
8
|
+
from django_spire.auth.controller.controller import AppAuthController
|
|
7
9
|
from django_spire.contrib.ordering.querysets import OrderingQuerySetMixin
|
|
8
10
|
from django_spire.history.querysets import HistoryQuerySet
|
|
9
11
|
|
|
@@ -26,10 +28,31 @@ class CollectionQuerySet(HistoryQuerySet, OrderingQuerySetMixin):
|
|
|
26
28
|
def childless(self) -> QuerySet[Collection]:
|
|
27
29
|
return self.annotate(child_count=Count('child')).filter(child_count=0)
|
|
28
30
|
|
|
31
|
+
def exclude_children(self, collection: Collection) -> QuerySet[Collection]:
|
|
32
|
+
descendant_ids = set()
|
|
33
|
+
current_level_ids = [collection.id]
|
|
34
|
+
|
|
35
|
+
while current_level_ids:
|
|
36
|
+
children = self.filter(parent_id__in=current_level_ids)
|
|
37
|
+
child_ids = list(children.values_list('id', flat=True))
|
|
38
|
+
|
|
39
|
+
if not child_ids:
|
|
40
|
+
break
|
|
41
|
+
|
|
42
|
+
descendant_ids.update(child_ids)
|
|
43
|
+
current_level_ids = child_ids
|
|
44
|
+
|
|
45
|
+
return self.exclude(id__in=descendant_ids)
|
|
46
|
+
|
|
29
47
|
def parentless(self) -> QuerySet[Collection]:
|
|
30
48
|
return self.filter(parent_id__isnull=True)
|
|
31
49
|
|
|
32
|
-
def
|
|
50
|
+
def request_user_has_access(self, request: WSGIRequest) -> QuerySet[Collection]:
|
|
51
|
+
user = request.user
|
|
52
|
+
|
|
53
|
+
if user.is_superuser or AppAuthController('knowledge', request).can_access_all_collections():
|
|
54
|
+
return self.all()
|
|
55
|
+
|
|
33
56
|
direct_access = self.filter(group__auth_group__user=user)
|
|
34
57
|
accessible_ids = set(direct_access.values_list('id', flat=True))
|
|
35
58
|
|
|
@@ -7,7 +7,6 @@ from django.contrib.sites.models import Site
|
|
|
7
7
|
from django.db.models import Prefetch
|
|
8
8
|
from django.urls import reverse
|
|
9
9
|
|
|
10
|
-
from django_spire.auth.controller.controller import AppAuthController
|
|
11
10
|
from django_spire.contrib.service import BaseDjangoModelService
|
|
12
11
|
|
|
13
12
|
from typing import TYPE_CHECKING
|
|
@@ -21,27 +20,20 @@ class CollectionTransformationService(BaseDjangoModelService['Collection']):
|
|
|
21
20
|
obj: Collection
|
|
22
21
|
|
|
23
22
|
def to_hierarchy_json(self, request: WSGIRequest) -> str:
|
|
24
|
-
user = request.user
|
|
25
|
-
|
|
26
23
|
collections = (
|
|
27
24
|
self.obj_class.objects
|
|
28
25
|
.active()
|
|
26
|
+
.request_user_has_access(request)
|
|
29
27
|
.select_related('parent')
|
|
30
28
|
)
|
|
31
29
|
|
|
32
|
-
if not (
|
|
33
|
-
user.is_superuser or
|
|
34
|
-
AppAuthController('knowledge', request).can_access_all_collections()
|
|
35
|
-
):
|
|
36
|
-
collections = collections.user_has_access(user=user)
|
|
37
|
-
|
|
38
30
|
entry_queryset = (
|
|
39
31
|
collections.model._meta.fields_map.get('entry')
|
|
40
32
|
.related_model
|
|
41
33
|
.objects
|
|
42
34
|
.active()
|
|
43
35
|
.has_current_version()
|
|
44
|
-
.user_has_access(user=user)
|
|
36
|
+
.user_has_access(user=request.user)
|
|
45
37
|
.select_related('current_version__author')
|
|
46
38
|
.order_by('order')
|
|
47
39
|
)
|
|
@@ -31,7 +31,13 @@ def form_view(
|
|
|
31
31
|
dg.glue_query_set(
|
|
32
32
|
request,
|
|
33
33
|
unique_name='collections',
|
|
34
|
-
target=
|
|
34
|
+
target=(
|
|
35
|
+
Collection.objects
|
|
36
|
+
.active()
|
|
37
|
+
.request_user_has_access(request)
|
|
38
|
+
.exclude(pk=collection.pk)
|
|
39
|
+
.exclude_children(collection=collection)
|
|
40
|
+
),
|
|
35
41
|
fields=['name']
|
|
36
42
|
)
|
|
37
43
|
dg.glue_query_set(
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
tabindex="-1"
|
|
58
58
|
id="navigation-card"
|
|
59
59
|
>
|
|
60
|
-
<div class="offcanvas-header">
|
|
61
|
-
<h5 class="offcanvas-title">Navigation</h5>
|
|
62
|
-
<
|
|
60
|
+
<div class="row offcanvas-header">
|
|
61
|
+
<h5 class="col offcanvas-title">Navigation</h5>
|
|
62
|
+
<span class="col-auto bi bi-x-lg cursor-pointer fs-5" data-bs-dismiss="offcanvas"></span>
|
|
63
63
|
</div>
|
|
64
64
|
{% include 'django_spire/knowledge/collection/navigation/navigation.html' %}
|
|
65
65
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-spire
|
|
3
|
-
Version: 0.16.
|
|
3
|
+
Version: 0.16.8
|
|
4
4
|
Summary: A project for Django Spire
|
|
5
5
|
Author-email: Brayden Carlson <braydenc@stratusadv.com>, Nathan Johnson <nathanj@stratusadv.com>
|
|
6
6
|
License: Copyright (c) 2024 Stratus Advanced Technologies and Contributors.
|
|
@@ -46,7 +46,7 @@ Requires-Python: >=3.11
|
|
|
46
46
|
Description-Content-Type: text/markdown
|
|
47
47
|
License-File: LICENSE.md
|
|
48
48
|
Requires-Dist: crispy-bootstrap5==2024.10
|
|
49
|
-
Requires-Dist: dandy
|
|
49
|
+
Requires-Dist: dandy==0.20.0
|
|
50
50
|
Requires-Dist: django>=5.1.8
|
|
51
51
|
Requires-Dist: django-crispy-forms==2.3
|
|
52
52
|
Requires-Dist: django-glue>=0.8.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
django_spire/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
django_spire/conf.py,sha256=EYC1hXqYqheYrb_b6Q93LrSgNl91JV633E4N5j-KGTo,1012
|
|
3
|
-
django_spire/consts.py,sha256=
|
|
3
|
+
django_spire/consts.py,sha256=xJzmLn-YJcLRPoG1nYm4Fi3bi3V4ZWbX7cvJ--a8I5w,390
|
|
4
4
|
django_spire/exceptions.py,sha256=L5ndRO5ftMmh0pHkO2z_NG3LSGZviJ-dDHNT73SzTNw,48
|
|
5
5
|
django_spire/settings.py,sha256=NBDa_kZozESTz2UfHgy2PzhBqj54eIrjZsUsWqDgI0g,735
|
|
6
6
|
django_spire/urls.py,sha256=mKeZszb5U4iIGqddMb5Tt5fRC72U2wABEOi6mvOfEBU,656
|
|
@@ -442,9 +442,10 @@ django_spire/core/static/django_spire/css/app-template.css,sha256=D5ORspwfokNqRW
|
|
|
442
442
|
django_spire/core/static/django_spire/css/app-text.css,sha256=4hyHj-6EJmTtj15OAHGLMaNJIbruKVEMRC_ucmYE_UY,5833
|
|
443
443
|
django_spire/core/static/django_spire/css/app-theme.css,sha256=6vxu-tNDS4i1wWwLxdkCuiucN_ZKzGqwZmqZ8Vcwzk0,421
|
|
444
444
|
django_spire/core/static/django_spire/css/bootstrap-extension.css,sha256=TLCzs5SE9__bu2l3oAg9G-j_kuFSC0HxhQw1YQiOhy8,9712
|
|
445
|
-
django_spire/core/static/django_spire/css/bootstrap-override.css,sha256=
|
|
445
|
+
django_spire/core/static/django_spire/css/bootstrap-override.css,sha256=OqSfW94DwcqZebQMWHtk_djywSGgnxSlUPtxZJ8sId0,7490
|
|
446
446
|
django_spire/core/static/django_spire/css/bootstrap.css,sha256=GEgESnyGv91X48AEz35ovTv1fF8JPaB_VZB-JXJjdb0,155840
|
|
447
447
|
django_spire/core/static/django_spire/css/flatpickr.min.css,sha256=RXPAyxHVyMLxb0TYCM2OW5R4GWkcDe02jdYgyZp41OU,16081
|
|
448
|
+
django_spire/core/static/django_spire/css/themes/input.css,sha256=dHY08qEODw-L1xbelx2q-5zu7g9hznVw3Ii3INKlQKU,738
|
|
448
449
|
django_spire/core/static/django_spire/css/themes/ayu/app-dark.css,sha256=1ynbgAPB7VmrI8WjfEJ4hCv8C23o3C2PqheAIzzHkaQ,2235
|
|
449
450
|
django_spire/core/static/django_spire/css/themes/ayu/app-light.css,sha256=qYO9Wzevku-PRgT77DtYVSD_cpNb6XWdGAsIIu4s6iM,2040
|
|
450
451
|
django_spire/core/static/django_spire/css/themes/catppuccin/app-dark.css,sha256=hTfq9GzzKABKWA3wpLO7TGP0TYqUn2W7SOVeiTZf54w,2236
|
|
@@ -490,7 +491,7 @@ django_spire/core/static/django_spire/js/cookie.js,sha256=N9ifDzqmJHRDwYI2Lqia1y
|
|
|
490
491
|
django_spire/core/static/django_spire/js/dropdown.js,sha256=cSvzdsct8-45gIWZlO5MzmbW2vDuxJVttLZjOBl14GE,934
|
|
491
492
|
django_spire/core/static/django_spire/js/modal.js,sha256=ay0Sovi0HhedEz3dRhB_INhkh1PEJ7zPc5POYo_Wwg0,370
|
|
492
493
|
django_spire/core/static/django_spire/js/session_controller.js,sha256=aMom087y00MUhdxrZlrg89f88mBC7cWEhGWopeb5hlQ,232
|
|
493
|
-
django_spire/core/static/django_spire/js/theme.js,sha256=
|
|
494
|
+
django_spire/core/static/django_spire/js/theme.js,sha256=APZnTjuhgXV7m1vVlmvNIMZACJ0gG8uGeiyWSmhZTmQ,8512
|
|
494
495
|
django_spire/core/static/django_spire/js/ui.js,sha256=qxb32pBZz7e5iLuOCbNs80VsqQJKa6cj5aBrGTvIrsY,389
|
|
495
496
|
django_spire/core/templates/django_spire/403.html,sha256=35OX-3z-Yi6Igx9DTAcxNwWiZ17wXdm4wYGML4U2pns,37
|
|
496
497
|
django_spire/core/templates/django_spire/404.html,sha256=91sTr518M2YxQ8X3GlzDsNP6IVo3MW07tbHdcLBL8Iw,235
|
|
@@ -716,7 +717,7 @@ django_spire/knowledge/collection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
|
716
717
|
django_spire/knowledge/collection/admin.py,sha256=7Ykw1zDBzMuoO4OfyszsOXWmVvtof4ooXseplTmqa-E,677
|
|
717
718
|
django_spire/knowledge/collection/forms.py,sha256=4zMzdonUjYEK7GW-3m0DDimG19zm9ji89j0FVFIg6W0,202
|
|
718
719
|
django_spire/knowledge/collection/models.py,sha256=eArUPJu9bnFMixnfogQiA-TSbnz2NGoaJbmR4tJU3Mw,1625
|
|
719
|
-
django_spire/knowledge/collection/querysets.py,sha256=
|
|
720
|
+
django_spire/knowledge/collection/querysets.py,sha256=EJM-LqOeFmaPZQkTcHAYp4qu1nuEXu36BH0-cJ339II,2532
|
|
720
721
|
django_spire/knowledge/collection/seeding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
721
722
|
django_spire/knowledge/collection/seeding/seed.py,sha256=DVTYx8gt4zQQ1UpeOfMq5G1PWGdeENaw-XdA7DtjRUg,267
|
|
722
723
|
django_spire/knowledge/collection/seeding/seeder.py,sha256=l8qDxIPYMlc8hntpVtb3BpvlPXr3XLemxOdnl8B16fo,1531
|
|
@@ -725,7 +726,7 @@ django_spire/knowledge/collection/services/factory_service.py,sha256=92DLZODSRPF
|
|
|
725
726
|
django_spire/knowledge/collection/services/ordering_service.py,sha256=vTkSdt1lVT4VxSK3GhZibj8FPDDy5butwPkVzqmm07g,1243
|
|
726
727
|
django_spire/knowledge/collection/services/processor_service.py,sha256=3ArKBndoL3HEvH_1EBqfiw7AnbFYZ0WmBgcPV8BHdLQ,911
|
|
727
728
|
django_spire/knowledge/collection/services/service.py,sha256=Vg9ZPWlCxZ_43fkudvBUBZfd7L7A8_vKlBA9dIHUNas,1709
|
|
728
|
-
django_spire/knowledge/collection/services/transformation_service.py,sha256=
|
|
729
|
+
django_spire/knowledge/collection/services/transformation_service.py,sha256=AZVKA7RCFkoT3Iey0PmeZPZEb3Q6GUJTEG1MVPhFlLg,3387
|
|
729
730
|
django_spire/knowledge/collection/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
730
731
|
django_spire/knowledge/collection/tests/factories.py,sha256=rQfLX9kz72X-ne6i_IDWXoQMlAnyrxrReuOFM01bC2Q,393
|
|
731
732
|
django_spire/knowledge/collection/tests/test_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -739,7 +740,7 @@ django_spire/knowledge/collection/urls/form_urls.py,sha256=zOAbLQXw-POh9F7lzxAFW
|
|
|
739
740
|
django_spire/knowledge/collection/urls/json_urls.py,sha256=XZp5wt8m9x38Uuy1dhegqZ4qlJLZK2EgJsLltx97o0Q,195
|
|
740
741
|
django_spire/knowledge/collection/urls/page_urls.py,sha256=zvcqS6zE_OZd_Ah1nMIIbMOzYkIYJ-BQbCMXijeDj7E,324
|
|
741
742
|
django_spire/knowledge/collection/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
742
|
-
django_spire/knowledge/collection/views/form_views.py,sha256=
|
|
743
|
+
django_spire/knowledge/collection/views/form_views.py,sha256=QA-z-iDhtJTAQlPxrQP6KdQl-M8W01NG2TK_EwEo4d8,2605
|
|
743
744
|
django_spire/knowledge/collection/views/json_views.py,sha256=JvTciCngT_dc_7JlTlAcc1zD5aaFelqLL67kc0e6JmU,994
|
|
744
745
|
django_spire/knowledge/collection/views/page_views.py,sha256=Vbi87b0xSCrXQULAReK2SY-8HVvDT7Y83zAM6nVYwNM,2566
|
|
745
746
|
django_spire/knowledge/entry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -836,7 +837,7 @@ django_spire/knowledge/entry/version/views/page_views.py,sha256=QtwI2CM0dcSkKApX
|
|
|
836
837
|
django_spire/knowledge/entry/version/views/redirect_views.py,sha256=VCtgwXIzzpYx7vufDQB4G04cDoX_ceH_KL-yZ7WxGSg,718
|
|
837
838
|
django_spire/knowledge/entry/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
838
839
|
django_spire/knowledge/entry/views/form_views.py,sha256=X0S8tQsONjuK46Y4F-a0blB1KydoJ34q8kIzJdQxmo8,4461
|
|
839
|
-
django_spire/knowledge/entry/views/json_views.py,sha256
|
|
840
|
+
django_spire/knowledge/entry/views/json_views.py,sha256=-9Ug9cBbIsAZa7RStGErNfg_ANiyYiBnwyjRoTIS30s,1769
|
|
840
841
|
django_spire/knowledge/entry/views/page_views.py,sha256=fsS4G58o1ZsFG2JlGgjUYhWAMY22C3FjmWCXh5JFZXs,914
|
|
841
842
|
django_spire/knowledge/entry/views/template_views.py,sha256=U3pqndOpPQlC2zJBKcOIM4IUXK870FH_Wpna5imIkm0,1782
|
|
842
843
|
django_spire/knowledge/intelligence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -860,7 +861,7 @@ django_spire/knowledge/seeding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
860
861
|
django_spire/knowledge/seeding/seed.py,sha256=mdVbtQVbGdTjheHAnMPEQojik_gv7rT1YcvWZRLgFy8,61
|
|
861
862
|
django_spire/knowledge/static/django_spire/knowledge/collection/js/managers.js,sha256=1b0pRPYJvYjKKZB2wshdoseAUR3_Al-2qxFUWE5q-oo,4319
|
|
862
863
|
django_spire/knowledge/static/django_spire/knowledge/collection/js/x_component.js,sha256=avczuHac3i58k06wA-LPpgupedCYbuDVTjTYVjEho18,898
|
|
863
|
-
django_spire/knowledge/static/django_spire/knowledge/css/navigation_items.css,sha256=
|
|
864
|
+
django_spire/knowledge/static/django_spire/knowledge/css/navigation_items.css,sha256=LwWOW4lsgkeIz3JuP9DQ-x10_04TvQw8fM4Fi-QT9M8,179
|
|
864
865
|
django_spire/knowledge/static/django_spire/knowledge/entry/version/js/managers.js,sha256=q-HiSnOnMMomxU0EAWSbQO55HMVvb8wPxA0KCP3VyP4,2772
|
|
865
866
|
django_spire/knowledge/templates/django_spire/knowledge/collection/card/collection_card.html,sha256=VTSB4ddVYg7-QMWrlTgb0b7UakITmhWbFzlttMlHVWU,2462
|
|
866
867
|
django_spire/knowledge/templates/django_spire/knowledge/collection/card/context_menu_card.html,sha256=yvJjkzRheXSZYBoGnMM-EQCFonJBVThWQp6KHd4cx9k,1386
|
|
@@ -904,7 +905,7 @@ django_spire/knowledge/templates/django_spire/knowledge/entry/version/container/
|
|
|
904
905
|
django_spire/knowledge/templates/django_spire/knowledge/entry/version/page/detail_page.html,sha256=bVxildiAIrQR9lFFdnc8H0eYVr2itX97A_y3pQk87E4,326
|
|
905
906
|
django_spire/knowledge/templates/django_spire/knowledge/entry/version/page/form_page.html,sha256=ufUISOfNmk45hl7F-ujtAzpHdEmUxh55odW0eyL6SMU,722
|
|
906
907
|
django_spire/knowledge/templates/django_spire/knowledge/message/knowledge_message_intel.html,sha256=yIca58o4_UC-6WgeGT9WOrJ0cQrXfZo3B0QFd03nlXU,130
|
|
907
|
-
django_spire/knowledge/templates/django_spire/knowledge/page/full_page.html,sha256=
|
|
908
|
+
django_spire/knowledge/templates/django_spire/knowledge/page/full_page.html,sha256=bYuOvJpPAiufBaNsqqGg12E3lIdX_X_kFnrNexUguPE,2336
|
|
908
909
|
django_spire/knowledge/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
909
910
|
django_spire/knowledge/templatetags/spire_knowledge_tags.py,sha256=WQcmaS7sh6ga3_HqblThYv0__u3soyJ5Jp6sn9rU76c,585
|
|
910
911
|
django_spire/knowledge/urls/__init__.py,sha256=f_d2AMnV2eD9eXe3-RAZk17rb39Kvl654ptSirNmfmI,266
|
|
@@ -1040,8 +1041,8 @@ django_spire/theme/urls/page_urls.py,sha256=S8nkKkgbhG3XHI3uMUL-piOjXIrRkuY2UlM_
|
|
|
1040
1041
|
django_spire/theme/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1041
1042
|
django_spire/theme/views/json_views.py,sha256=W1khC2K_EMbEzAFmMxC_P76_MFnkRH4-eVdodrRfAhw,1904
|
|
1042
1043
|
django_spire/theme/views/page_views.py,sha256=pHr8iekjtR99xs7w1taj35HEo133Svq1dvDD0y0VL1c,3933
|
|
1043
|
-
django_spire-0.16.
|
|
1044
|
-
django_spire-0.16.
|
|
1045
|
-
django_spire-0.16.
|
|
1046
|
-
django_spire-0.16.
|
|
1047
|
-
django_spire-0.16.
|
|
1044
|
+
django_spire-0.16.8.dist-info/licenses/LICENSE.md,sha256=tlTbOtgKoy-xAQpUk9gPeh9O4oRXCOzoWdW3jJz0wnA,1091
|
|
1045
|
+
django_spire-0.16.8.dist-info/METADATA,sha256=izsGOT7mjwb2qLchqMng-xy4nv2TuKaPlWv9n5UhRdg,4762
|
|
1046
|
+
django_spire-0.16.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1047
|
+
django_spire-0.16.8.dist-info/top_level.txt,sha256=xf3QV1e--ONkVpgMDQE9iqjQ1Vg4--_6C8wmO-KxPHQ,13
|
|
1048
|
+
django_spire-0.16.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|