accrete 0.0.8__py3-none-any.whl → 0.0.9__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.
- accrete/config.py +14 -0
- accrete/contrib/ui/__init__.py +1 -1
- accrete/contrib/ui/helper.py +5 -22
- accrete/contrib/ui/static/js/navbar.js +1 -12
- accrete/contrib/ui/templates/ui/layout.html +74 -81
- accrete/contrib/ui/templates/ui/partials/actions.html +2 -1
- accrete/contrib/ui/templates/ui/partials/filter.html +4 -4
- accrete/contrib/ui/templates/ui/partials/form_modal.html +1 -1
- accrete/contrib/ui/templates/ui/partials/header.html +1 -1
- accrete/contrib/ui/templatetags/accrete_ui.py +14 -0
- accrete/contrib/ui/views.py +1 -1
- accrete/contrib/user_registration/config.py +2 -8
- accrete/decorators.py +2 -12
- {accrete-0.0.8.dist-info → accrete-0.0.9.dist-info}/METADATA +2 -2
- {accrete-0.0.8.dist-info → accrete-0.0.9.dist-info}/RECORD +17 -16
- {accrete-0.0.8.dist-info → accrete-0.0.9.dist-info}/WHEEL +0 -0
- {accrete-0.0.8.dist-info → accrete-0.0.9.dist-info}/licenses/LICENSE +0 -0
accrete/config.py
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
import logging
|
2
|
+
from django.conf import settings
|
3
|
+
|
4
|
+
_logger = logging.getLogger(__name__)
|
5
|
+
|
6
|
+
ACCRETE_TENANT_NOT_SET_URL = getattr(
|
7
|
+
settings, 'ACCRETE_TENANT_NOT_SET_URL',
|
8
|
+
False
|
9
|
+
)
|
10
|
+
|
11
|
+
if not ACCRETE_TENANT_NOT_SET_URL:
|
12
|
+
_logger.warning(
|
13
|
+
'Setting ACCRETE_TENANT_NOT_SET_URL missing.'
|
14
|
+
)
|
accrete/contrib/ui/__init__.py
CHANGED
accrete/contrib/ui/helper.py
CHANGED
@@ -19,7 +19,9 @@ ACTIONS_TEMPLATE = config.ACCRETE_UI_ACTIONS_TEMPLATE
|
|
19
19
|
class ClientAction:
|
20
20
|
|
21
21
|
name: str
|
22
|
-
url: str =
|
22
|
+
url: str = ''
|
23
|
+
query_params: str = ''
|
24
|
+
attrs: list[str] = field(default_factory=list)
|
23
25
|
submit: bool = False
|
24
26
|
form_id: str = 'form'
|
25
27
|
class_list: list = field(default_factory=list)
|
@@ -41,7 +43,7 @@ def parse_client_actions(actions: list[ClientAction], actions_template: str = No
|
|
41
43
|
class BreadCrumb:
|
42
44
|
|
43
45
|
name: str
|
44
|
-
url:str
|
46
|
+
url: str
|
45
47
|
|
46
48
|
|
47
49
|
@dataclass
|
@@ -348,27 +350,8 @@ def get_related_model(model, path):
|
|
348
350
|
for part in path:
|
349
351
|
try:
|
350
352
|
related_model = related_model._meta.fields_map[part].related_model
|
351
|
-
continue
|
352
353
|
except (AttributeError, KeyError):
|
353
|
-
|
354
|
-
# try:
|
355
|
-
# related_model = getattr(related_model, part).model
|
356
|
-
# continue
|
357
|
-
# except AttributeError:
|
358
|
-
# pass
|
359
|
-
# try:
|
360
|
-
# related_model = getattr(related_model.rel.related_model, part)
|
361
|
-
# continue
|
362
|
-
# except AttributeError:
|
363
|
-
# pass
|
364
|
-
# try:
|
365
|
-
# related_model = getattr(related_model, part).field.related_model
|
366
|
-
# continue
|
367
|
-
# except AttributeError:
|
368
|
-
# pass
|
369
|
-
raise AttributeError(
|
370
|
-
f'Could not resolve relation for model: {model} with path "{path}" at {part}'
|
371
|
-
)
|
354
|
+
continue
|
372
355
|
return related_model
|
373
356
|
|
374
357
|
|
@@ -1,23 +1,12 @@
|
|
1
1
|
document.addEventListener('DOMContentLoaded', () => {
|
2
|
-
const navElements = document.querySelectorAll('.
|
3
|
-
const burger = document.getElementById('navbar-burger');
|
2
|
+
const navElements = document.querySelectorAll('.navbar-item, .has-dropdown');
|
4
3
|
navElements.forEach(el => {
|
5
4
|
el.addEventListener('mousedown', toggleNavDropDown);
|
6
5
|
el.addEventListener('blur', deactivateNavDropDown);
|
7
|
-
el.classList.add('is-hoverable');
|
8
6
|
})
|
9
|
-
burger.addEventListener('click', toggleHamburger)
|
10
7
|
})
|
11
8
|
|
12
9
|
|
13
|
-
function toggleHamburger() {
|
14
|
-
const burgerElements = document.querySelectorAll('.accrete-burger');
|
15
|
-
burgerElements.forEach(el => {
|
16
|
-
el.classList.toggle('is-active');
|
17
|
-
})
|
18
|
-
}
|
19
|
-
|
20
|
-
|
21
10
|
function toggleNavDropDown() {
|
22
11
|
const active = this.classList.toggle('is-active');
|
23
12
|
if (active) {
|
@@ -1,110 +1,103 @@
|
|
1
1
|
<!doctype html>
|
2
2
|
{% load static %}
|
3
3
|
{% load i18n %}
|
4
|
-
{% load
|
4
|
+
{% load accrete_ui %}
|
5
5
|
|
6
6
|
<html lang="en">
|
7
|
+
|
7
8
|
<head>
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
{%
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
{% endblock %}
|
21
|
-
{% block htmx %}
|
22
|
-
<script src="https://unpkg.com/htmx.org@1.9.6"></script>
|
23
|
-
<script src="https://unpkg.com/hyperscript.org@0.9.11"></script>
|
24
|
-
{% endblock %}
|
25
|
-
{% block script %}
|
26
|
-
<script src="{% static "js/navbar.js" %}" defer type="text/javascript"></script>
|
27
|
-
<script src="{% static "js/utils.js" %}" defer type="text/javascript"></script>
|
28
|
-
{% endblock %}
|
9
|
+
{% block head %}
|
10
|
+
<meta charset="utf-8">
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
12
|
+
{% block favicon %}<link rel="icon" type="image/svg" href="{% static 'icons/accrete.svg' %}"/>{% endblock %}
|
13
|
+
{% block bulma %}<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">{% endblock %}
|
14
|
+
{% block style %}
|
15
|
+
<link rel="stylesheet" type="text/css" href="{% static "css/accrete.css" %}">
|
16
|
+
<link rel="stylesheet" type="text/css" href="{% static "css/icons.css" %}">
|
17
|
+
{% endblock %}
|
18
|
+
{% block htmx %}
|
19
|
+
<script src="https://unpkg.com/htmx.org@1.9.6"></script>
|
20
|
+
<script src="https://unpkg.com/hyperscript.org@0.9.11"></script>
|
29
21
|
{% endblock %}
|
30
|
-
{% block
|
31
|
-
<
|
22
|
+
{% block script %}
|
23
|
+
<script src="{% static "js/navbar.js" %}" defer type="text/javascript"></script>
|
24
|
+
<script src="{% static "js/utils.js" %}" defer type="text/javascript"></script>
|
32
25
|
{% endblock %}
|
26
|
+
<title>{% block title %}{{ title }}{% endblock %}</title>
|
27
|
+
{% endblock %}
|
33
28
|
</head>
|
34
29
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
30
|
+
|
31
|
+
<body {% block body_attrs %}hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'{% endblock %}>
|
32
|
+
{% block navbar %}
|
33
|
+
<nav id="navbar" class="navbar is-success is-fixed-top" role="navigation" aria-label="main navigation">
|
34
|
+
<div class="navbar-brand">
|
35
|
+
{% block navbar_brand %}
|
36
|
+
<div class="navbar-item is-unselectable">{{ request.tenant.name }}</div>
|
37
|
+
{% endblock %}
|
38
|
+
<a id="navbar-burger" role="button" class="navbar-burger"
|
39
|
+
aria-label="menu" aria-expanded="false"
|
40
|
+
_="on click toggle .is-active on me then toggle .is-active on .navbar-menu"
|
41
|
+
>
|
47
42
|
{# Display hamburger menu on mobile #}
|
48
43
|
<span aria-hidden="true"></span>
|
49
44
|
<span aria-hidden="true"></span>
|
50
45
|
<span aria-hidden="true"></span>
|
51
46
|
</a>
|
52
|
-
{% endblock %}
|
53
|
-
</div>
|
54
|
-
|
55
|
-
<div class="navbar-menu is-fixed-top accrete-burger">
|
56
|
-
<div class="navbar-start">
|
57
|
-
{% block navbar_start %}
|
58
|
-
{% endblock %}
|
59
47
|
</div>
|
60
48
|
|
61
|
-
<div class="navbar-
|
62
|
-
<div class="navbar-
|
49
|
+
<div class="navbar-menu is-fixed-top">
|
50
|
+
<div class="navbar-start">
|
51
|
+
{% block navbar_start %}
|
52
|
+
{% combine_templates 'accrete_menu.html' %}
|
53
|
+
{% endblock %}
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="navbar-end">
|
63
57
|
{% block navbar_end %}
|
64
58
|
{% endblock %}
|
65
59
|
</div>
|
66
60
|
</div>
|
67
|
-
</
|
68
|
-
|
61
|
+
</nav>
|
62
|
+
{% endblock %}
|
69
63
|
|
70
64
|
<div class="main-columns columns m-0 is-mobile">
|
71
65
|
{% block main_columns %}
|
72
|
-
|
73
|
-
<
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
{% if filter_terms %}
|
88
|
-
<div class="panel-list px-3 has-text-centered">
|
89
|
-
<span>{% translate 'Filter' %}</span>
|
66
|
+
{% block side_panel %}
|
67
|
+
<div class="side-panel column is-3-widescreen is-2-fullhd is-hidden-touch is-hidden-desktop-only is-hidden-widescreen-only" style="height: 100%">
|
68
|
+
<nav class="panel is-shadowless pb-5">
|
69
|
+
{% if list_pagination %}
|
70
|
+
<div class="panel-block">
|
71
|
+
{% include 'ui/partials/pagination_list.html' %}
|
72
|
+
</div>
|
73
|
+
{% endif %}
|
74
|
+
{% if detail_pagination %}
|
75
|
+
<div class="panel-block">
|
76
|
+
{% include 'ui/partials/pagination_detail.html' %}
|
77
|
+
</div>
|
78
|
+
{% endif %}
|
79
|
+
<div id="panel-actions">
|
80
|
+
{% block side_panel_items %}{% if actions and actions_template %}{% include actions_template with all=True %}{% endif %}{% endblock %}
|
90
81
|
</div>
|
91
|
-
|
92
|
-
<
|
93
|
-
|
94
|
-
</
|
95
|
-
<
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
82
|
+
{% if filter_terms %}
|
83
|
+
<div class="panel-list px-3 has-text-centered">
|
84
|
+
<span>{% translate 'Filter' %}</span>
|
85
|
+
</div>
|
86
|
+
<div class="panel-block" style="position: sticky">
|
87
|
+
<button id="reset-filter-button"
|
88
|
+
class="button is-fullwidth mr-1">{% translate 'Reset' %}
|
89
|
+
</button>
|
90
|
+
<button id="apply-filter-button"
|
91
|
+
class="button is-fullwidth ml-1">{% translate 'Filter' %}
|
92
|
+
</button>
|
93
|
+
</div>
|
94
|
+
<div id="filter-panel">
|
101
95
|
{% include 'ui/partials/filter.html' %}
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
</
|
106
|
-
|
107
|
-
|
96
|
+
</div>
|
97
|
+
{% endif %}
|
98
|
+
</nav>
|
99
|
+
</div>
|
100
|
+
{% endblock %}
|
108
101
|
|
109
102
|
<div id="content" class="column content-column p-0" style="height: 100%; overflow-y: auto">
|
110
103
|
{% block content %}{% endblock %}
|
@@ -13,7 +13,8 @@
|
|
13
13
|
{{ action.attrs|join:' ' }}>
|
14
14
|
{% else %}
|
15
15
|
<a class="button is-fullwidth {{ action.class|join:' ' }}"
|
16
|
-
href="{{ action.url }}{{ querystring }}{% if page %}&page={{ page.number }}{% endif %}
|
16
|
+
href="{{ action.url }}{{ querystring|default_if_none:'?' }}{% if page %}&page={{ page.number }}{% endif %}{{ action.query_params }}"
|
17
|
+
{% for attr in action.attrs %}{{ attr }}{% endfor %}
|
17
18
|
style="word-break: break-word">{{ action.name }}
|
18
19
|
</a>
|
19
20
|
{% endif %}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
{% load i18n %}
|
2
2
|
{% load static %}
|
3
|
+
{% load cache %}
|
3
4
|
{% load accrete_ui %}
|
4
5
|
|
5
6
|
<div id="query-block" class="panel-block pt-0" style="position: relative; display: inline-block; width: 100%">
|
@@ -36,9 +37,8 @@
|
|
36
37
|
|
37
38
|
|
38
39
|
<div id="query-params-dropdown" class="box mt-1 mx-0 p-1 is-hidden" tabindex="-1" style="z-index: 10; background: white; word-break: break-word; position: inherit">
|
39
|
-
{%
|
40
|
-
|
41
|
-
{%
|
42
|
-
{{ filter_terms|render_query_params|safe }}
|
40
|
+
{% cache 500 filter_params request.path request.GET request.tenant %}
|
41
|
+
{{ filter_terms|render_query_params|safe }}
|
42
|
+
{% endcache %}
|
43
43
|
</div>
|
44
44
|
</div>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<nav class="breadcrumb" aria-label="breadcrumbs" style="white-space: unset; word-break: break-word">
|
19
19
|
<ul>
|
20
20
|
{% for crumb in breadcrumbs %}
|
21
|
-
<li><a href="{{ crumb.url|default_if_none:'#' }}{{ querystring }}" aria-current="page">{{ crumb.name }}</a></li>
|
21
|
+
<li><a class="is-underlined" href="{{ crumb.url|default_if_none:'#' }}{{ querystring }}" aria-current="page">{{ crumb.name }}</a></li>
|
22
22
|
{% endfor %}
|
23
23
|
<li class="is-active"><a aria-current="page">{{ title }}</a></li>
|
24
24
|
</ul>
|
@@ -1,8 +1,22 @@
|
|
1
1
|
from django import template
|
2
|
+
from django.conf import settings
|
3
|
+
from django.template.loader import render_to_string
|
4
|
+
from django.utils.safestring import mark_safe
|
2
5
|
|
3
6
|
register = template.Library()
|
4
7
|
|
5
8
|
|
9
|
+
@register.simple_tag(name='combine_templates')
|
10
|
+
def combine_templates(template_name):
|
11
|
+
html = ''
|
12
|
+
for app in settings.INSTALLED_APPS:
|
13
|
+
try:
|
14
|
+
html += render_to_string(f'{app.split(".")[-1]}/{template_name}')
|
15
|
+
except template.TemplateDoesNotExist:
|
16
|
+
continue
|
17
|
+
return mark_safe(html)
|
18
|
+
|
19
|
+
|
6
20
|
@register.filter(name='render_query_params')
|
7
21
|
def query_params_to_html(params):
|
8
22
|
html = ''
|
accrete/contrib/ui/views.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import logging
|
2
2
|
from django.conf import settings
|
3
|
-
from django.core.exceptions import ImproperlyConfigured
|
4
3
|
from django.utils.translation import gettext_lazy as _
|
5
4
|
|
6
5
|
_logger = logging.getLogger(__name__)
|
@@ -26,12 +25,7 @@ ACCRETE_USER_REGISTRATION_ALLOWED = getattr(
|
|
26
25
|
|
27
26
|
if not ACCRETE_USER_REGISTRATION_MAIL_FROM_NAME:
|
28
27
|
_logger.warning(
|
29
|
-
'Setting "
|
28
|
+
'Setting "ACCRETE_USER_REGISTRATION_MAIL_FROM_NAME" missing.\n'
|
30
29
|
'User Registration won\'t work. Set it or remove '
|
31
|
-
'the app "user_registration"
|
30
|
+
'the app "accrete.contrib.user_registration".'
|
32
31
|
)
|
33
|
-
# raise ImproperlyConfigured(
|
34
|
-
# 'Setting "USER_REGISTRATION_MAIL_FROM_NAME" missing.\n'
|
35
|
-
# 'User Registration won\'t work. Set it or remove '
|
36
|
-
# 'the app "user_registration" from INSTALLED_APPS and your urls.'
|
37
|
-
# )
|
accrete/decorators.py
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
from functools import wraps
|
2
2
|
|
3
|
-
from django.conf import settings
|
4
3
|
from django.shortcuts import redirect
|
5
4
|
from django.contrib.auth.views import login_required
|
6
|
-
from
|
5
|
+
from . import config
|
7
6
|
|
8
|
-
TENANT_NOT_SET_URL = settings.ACCRETE_TENANT_NOT_SET_URL
|
9
7
|
|
10
8
|
def tenant_required(
|
11
|
-
tenant_not_set_url: str = None,
|
12
9
|
redirect_field_name: str = None,
|
13
10
|
login_url: str = None
|
14
11
|
):
|
@@ -21,14 +18,7 @@ def tenant_required(
|
|
21
18
|
def _wrapped_view(request, *args, **kwargs):
|
22
19
|
tenant = request.tenant
|
23
20
|
if not tenant:
|
24
|
-
|
25
|
-
if not url:
|
26
|
-
raise ImproperlyConfigured(
|
27
|
-
f'Redirect URL not set. '
|
28
|
-
f'Define settings.ACCRETE_TENANT_NOT_SET_URL or pass '
|
29
|
-
f'the redirect URL to the tenant_required decorator.'
|
30
|
-
)
|
31
|
-
return redirect(url)
|
21
|
+
return redirect(config.ACCRETE_TENANT_NOT_SET_URL)
|
32
22
|
return f(request, *args, **kwargs)
|
33
23
|
return _wrapped_view
|
34
24
|
return decorator
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: accrete
|
3
|
-
Version: 0.0.
|
4
|
-
Summary: Django Shared Schema Multi Tenant
|
3
|
+
Version: 0.0.9
|
4
|
+
Summary: Django Shared Schema Multi Tenant
|
5
5
|
Author-email: Benedikt Jilek <benedikt.jilek@pm.me>
|
6
6
|
License: Copyright (c) 2023 Benedikt Jilek
|
7
7
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
accrete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
accrete/admin.py,sha256=MUYUmCFlGYPowiXTbwl4_Q6Cq0-neiL53WW4P76JCLs,1174
|
3
3
|
accrete/apps.py,sha256=F7ynMLHJr_6bRujWtZVUzCliY2CGKiDvyUmL4F68L2E,146
|
4
|
-
accrete/
|
4
|
+
accrete/config.py,sha256=eJUbvyBO3DvAD6xkVKjTAzlXy7V7EK9bVyb91girfUs,299
|
5
|
+
accrete/decorators.py,sha256=vM8GuDHLzwEpHmTGafG-xwMddKvuYFIhe-FrUJqL1_4,678
|
5
6
|
accrete/forms.py,sha256=hwUwlfM8v7gPFxH_foN1jIXzYH32GdX-FrPZgh0Qv1Q,11137
|
6
7
|
accrete/middleware.py,sha256=ldnMI4Wv9p1JUyFX_sQSa6Hg4MgkXNbKaHqq5aRsD8s,2629
|
7
8
|
accrete/models.py,sha256=_k8fOYFEOp3WN5rFHNCWDMMJ_H6HGSNiFHPsg2dv2Lg,5229
|
@@ -31,15 +32,15 @@ accrete/contrib/system_mail/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2
|
|
31
32
|
accrete/contrib/system_mail/views.py,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63
|
32
33
|
accrete/contrib/system_mail/migrations/0001_initial.py,sha256=6cwkkRXGjXvwXoMjjgmWmcPyXSTlUbhW1vMiHObk9MQ,1074
|
33
34
|
accrete/contrib/system_mail/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
accrete/contrib/ui/__init__.py,sha256=
|
35
|
+
accrete/contrib/ui/__init__.py,sha256=KtdoYsDesEdQJCnlDaZ0iI-ss4JEQXdJhj_ROdFHgMs,238
|
35
36
|
accrete/contrib/ui/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
|
36
37
|
accrete/contrib/ui/apps.py,sha256=E0ao2ox6PQ3ldfeR17FXJUUJuGiWjm2DPCxHbPXGzls,152
|
37
38
|
accrete/contrib/ui/config.py,sha256=X9cAYyJqIuE4bg5ja6N4WERHSu4HTkYEJpPvVZ4SwtA,206
|
38
39
|
accrete/contrib/ui/filter.py,sha256=xTziJ7ySfbpwtaWAusJSkNUtaZbEeX9UKES2AKIuAak,11897
|
39
|
-
accrete/contrib/ui/helper.py,sha256
|
40
|
+
accrete/contrib/ui/helper.py,sha256=i2-LGhqXDK3vPZ8eYkeliduGQG5o5vcvQXlxivx0h7k,13274
|
40
41
|
accrete/contrib/ui/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
41
42
|
accrete/contrib/ui/urls.py,sha256=TUBlz_CGs9InTZoxM78GSnucA73I8knoh_obt12RUHM,186
|
42
|
-
accrete/contrib/ui/views.py,sha256=
|
43
|
+
accrete/contrib/ui/views.py,sha256=vAktHp5a3E6qKX-7qbvRQGepQgN-_qUkLfeRP_pf9RA,187
|
43
44
|
accrete/contrib/ui/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
45
|
accrete/contrib/ui/static/css/accrete.css,sha256=Bl23ue2-iCeqx1S8MCbxUMOB6kwdQoD_3vPySTEcslM,3301
|
45
46
|
accrete/contrib/ui/static/css/icons.css,sha256=-a9BJHrH5P02cfL5qZLZHZkyupqigWmbc5wAa0UEDrE,3035
|
@@ -47,7 +48,7 @@ accrete/contrib/ui/static/icons/Logo.svg,sha256=hGZuxrAa-LRpFavFiF8Lnc7X9OQcqmb6
|
|
47
48
|
accrete/contrib/ui/static/icons/accrete.svg,sha256=CWHJKIgk3hxL7xIaFSz2j1cK-eF1TroCbjcF58bgOIs,1024
|
48
49
|
accrete/contrib/ui/static/js/filter.js,sha256=FleoqtZ6SanlF3cy4FYfN47OsVXBRmt_O4CnUOP96S8,19186
|
49
50
|
accrete/contrib/ui/static/js/list.js,sha256=OX_81ifRmawE-1QBU5Qpq_E6sHiiNwIPleETAn9EOJw,4280
|
50
|
-
accrete/contrib/ui/static/js/navbar.js,sha256=
|
51
|
+
accrete/contrib/ui/static/js/navbar.js,sha256=9QGZfPgGWjCBZhZhrRf983hoPnRlwQP-Pl73c2vISYs,628
|
51
52
|
accrete/contrib/ui/static/js/utils.js,sha256=6RKh3EJ57gx5UIjBcSaeZEs7lZdLvyYT9VAQ-WqlKSk,173
|
52
53
|
accrete/contrib/ui/templates/django/forms/widgets/attrs.html,sha256=zNxjU4Ta_eWZkh1WhrF_VIwNZ0lZyl980gSSijUK51k,195
|
53
54
|
accrete/contrib/ui/templates/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48
|
@@ -58,19 +59,19 @@ accrete/contrib/ui/templates/django/forms/widgets/text.html,sha256=MSmLlQc7PsPoD
|
|
58
59
|
accrete/contrib/ui/templates/django/forms/widgets/textarea.html,sha256=c9BTedqb3IkXLyVYd0p9pR8DFnsXCNGoxVBWZTk_Fic,278
|
59
60
|
accrete/contrib/ui/templates/ui/detail.html,sha256=Ae4RD61IO4Jx57aG05Ht6XBnVyPck8xnlsQ4Uv-Nz4w,562
|
60
61
|
accrete/contrib/ui/templates/ui/form.html,sha256=HDR--6bLa6l9xFpcdX4NYnbI0jCk4u4bm-qg-2AgMXQ,457
|
61
|
-
accrete/contrib/ui/templates/ui/layout.html,sha256=
|
62
|
+
accrete/contrib/ui/templates/ui/layout.html,sha256=idzB2kP76grNeHhaeVkbO_rdYXv6ThGSHtEQp8fs7j4,6805
|
62
63
|
accrete/contrib/ui/templates/ui/list.html,sha256=VbgzkeZyprbU7JnpyP31m9eL4G8MZpzKdAVe6BTmcik,1270
|
63
64
|
accrete/contrib/ui/templates/ui/table.html,sha256=quvTy99RmX8uPGVCMdZa_w54bwmogNxBGy7sMnJPTxU,1386
|
64
|
-
accrete/contrib/ui/templates/ui/partials/actions.html,sha256=
|
65
|
-
accrete/contrib/ui/templates/ui/partials/filter.html,sha256=
|
65
|
+
accrete/contrib/ui/templates/ui/partials/actions.html,sha256=urRu07sWxUBjdp9WgOpJnmf44ZHQDQXRae2QTdzV0lc,1342
|
66
|
+
accrete/contrib/ui/templates/ui/partials/filter.html,sha256=l_Vi3ZRepF5lpX_KENU4AyIELSeichsVr0g2KGHcjIQ,1844
|
66
67
|
accrete/contrib/ui/templates/ui/partials/form_errors.html,sha256=1_TQvTdiejsn-43YSyp2YfnP52P-MFYb-HGY0DLm4oA,991
|
67
|
-
accrete/contrib/ui/templates/ui/partials/form_modal.html,sha256=
|
68
|
-
accrete/contrib/ui/templates/ui/partials/header.html,sha256=
|
68
|
+
accrete/contrib/ui/templates/ui/partials/form_modal.html,sha256=FFDfI5qjOCUBSGqDjBXa8tcqN2q94wOOCNFDaiyplHQ,1032
|
69
|
+
accrete/contrib/ui/templates/ui/partials/header.html,sha256=L33nbExJduDQP8J8K0qQsoD4Y8qjQUOuwbJdrCBBf_w,3047
|
69
70
|
accrete/contrib/ui/templates/ui/partials/onchange_form.html,sha256=K5twTGqRUW1iM2dGtdWntjsJvJVo5EIzKxX2HK-H1yw,160
|
70
71
|
accrete/contrib/ui/templates/ui/partials/pagination_detail.html,sha256=9rQEaE31gU8sUFLireZ9iju78HucADBK1TQOb9nqw2I,1003
|
71
72
|
accrete/contrib/ui/templates/ui/partials/pagination_list.html,sha256=MkIRMnCCUnK7Ksoy4SqXdMtnpqgHeCv5GyMN3tzNfCc,1232
|
72
73
|
accrete/contrib/ui/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
|
-
accrete/contrib/ui/templatetags/accrete_ui.py,sha256=
|
74
|
+
accrete/contrib/ui/templatetags/accrete_ui.py,sha256=mytEnz-a-Mw7EjhqybvTdRYQAi6RUBnzuoLjRT-T478,2113
|
74
75
|
accrete/contrib/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
76
|
accrete/contrib/user/admin.py,sha256=YS4iApli7XUaIl9GsEJxys2j8sepX0by88omYHjff-E,85
|
76
77
|
accrete/contrib/user/apps.py,sha256=oHDrAiHf-G57mZLyxqGJzRY2DbPprGFD-QgyVJG_ruI,156
|
@@ -87,7 +88,7 @@ accrete/contrib/user/templates/user/login.html,sha256=qKUqF5WCkWPrbwQMaa05Ou7zkM
|
|
87
88
|
accrete/contrib/user_registration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
89
|
accrete/contrib/user_registration/admin.py,sha256=kwmGTsg4Hii-lsw9-UaJG7AhQ4k4SPi48GSrtpZ4YR4,119
|
89
90
|
accrete/contrib/user_registration/apps.py,sha256=mYu3fuuubfjImeJHk4D_Wd6Edw2r3oUNXGcFbAkhir4,181
|
90
|
-
accrete/contrib/user_registration/config.py,sha256=
|
91
|
+
accrete/contrib/user_registration/config.py,sha256=wrZuZY5ed9dCFKp5W2iRUAoHN9xAoetEU8BuuKSofRg,949
|
91
92
|
accrete/contrib/user_registration/forms.py,sha256=rTDcpVlGPDyfTRIQquJr4hNshmJEOplYDwOT782xLys,3281
|
92
93
|
accrete/contrib/user_registration/models.py,sha256=bxDQ_UTeLMmU6tjNfwVLenWuJu_WNZEm3-uPNeOAidk,398
|
93
94
|
accrete/contrib/user_registration/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
@@ -102,7 +103,7 @@ accrete/migrations/0002_initial.py,sha256=dFOM7kdHlx7pVAh8cTDlZMtciN4O9Z547HAzEK
|
|
102
103
|
accrete/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
103
104
|
accrete/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
104
105
|
accrete/utils/dates.py,sha256=XI58CqabLCC-Sg6qo5TPWh-pHuuZfDdGDU6KQeAMlGo,1066
|
105
|
-
accrete-0.0.
|
106
|
-
accrete-0.0.
|
107
|
-
accrete-0.0.
|
108
|
-
accrete-0.0.
|
106
|
+
accrete-0.0.9.dist-info/METADATA,sha256=IL15guJBxntsuaxTZcq4onFXqzQH8hoYcRjG1wsroBw,4845
|
107
|
+
accrete-0.0.9.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
|
108
|
+
accrete-0.0.9.dist-info/licenses/LICENSE,sha256=_7laeMIHnsd3Y2vJEXDYXq_PEXxIcjgJsGt8UIKTRWc,1057
|
109
|
+
accrete-0.0.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|