sqladmin 0.16.1__py3-none-any.whl → 0.18.0__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.
Files changed (32) hide show
  1. sqladmin/__init__.py +1 -1
  2. sqladmin/_menu.py +11 -9
  3. sqladmin/_queries.py +10 -8
  4. sqladmin/ajax.py +5 -3
  5. sqladmin/application.py +54 -43
  6. sqladmin/authentication.py +4 -2
  7. sqladmin/fields.py +35 -33
  8. sqladmin/forms.py +56 -59
  9. sqladmin/helpers.py +13 -12
  10. sqladmin/models.py +98 -20
  11. sqladmin/pagination.py +5 -3
  12. sqladmin/templates/{_macros.html → sqladmin/_macros.html} +33 -0
  13. sqladmin/templates/{create.html → sqladmin/create.html} +3 -16
  14. sqladmin/templates/{details.html → sqladmin/details.html} +3 -3
  15. sqladmin/templates/{edit.html → sqladmin/edit.html} +5 -16
  16. sqladmin/templates/{error.html → sqladmin/error.html} +1 -1
  17. sqladmin/templates/sqladmin/index.html +3 -0
  18. sqladmin/templates/{layout.html → sqladmin/layout.html} +2 -2
  19. sqladmin/templates/{list.html → sqladmin/list.html} +6 -6
  20. sqladmin/templates/{login.html → sqladmin/login.html} +1 -1
  21. sqladmin/templating.py +9 -7
  22. sqladmin/widgets.py +20 -12
  23. {sqladmin-0.16.1.dist-info → sqladmin-0.18.0.dist-info}/METADATA +2 -2
  24. sqladmin-0.18.0.dist-info/RECORD +50 -0
  25. {sqladmin-0.16.1.dist-info → sqladmin-0.18.0.dist-info}/WHEEL +1 -1
  26. sqladmin/templates/index.html +0 -3
  27. sqladmin-0.16.1.dist-info/RECORD +0 -50
  28. /sqladmin/templates/{base.html → sqladmin/base.html} +0 -0
  29. /sqladmin/templates/{modals → sqladmin/modals}/delete.html +0 -0
  30. /sqladmin/templates/{modals → sqladmin/modals}/details_action_confirmation.html +0 -0
  31. /sqladmin/templates/{modals → sqladmin/modals}/list_action_confirmation.html +0 -0
  32. {sqladmin-0.16.1.dist-info → sqladmin-0.18.0.dist-info}/licenses/LICENSE.md +0 -0
@@ -53,3 +53,36 @@
53
53
  {% endfor %}
54
54
  </div>
55
55
  {% endmacro %}
56
+
57
+ {% macro render_field(field, kwargs={}) %}
58
+ <div class="mb-3 form-group row">
59
+ {{ field.label(class_="form-label col-sm-2 col-form-label") }}
60
+ <div class="col-sm-10">
61
+ {% if field.errors %}
62
+ {{ field(class_="form-control is-invalid") }}
63
+ {% else %}
64
+ {{ field() }}
65
+ {% endif %}
66
+ {% for error in field.errors %}
67
+ <div class="invalid-feedback">{{ error }}</div>
68
+ {% endfor %}
69
+ {% if field.description %}
70
+ <small class="text-muted">{{ field.description }}</small>
71
+ {% endif %}
72
+ </div>
73
+ </div>
74
+ {% endmacro %}
75
+
76
+ {% macro render_form_fields(form, form_opts=None) %}
77
+ {% if form.hidden_tag is defined %}
78
+ {{ form.hidden_tag() }}
79
+ {% else %}
80
+ {% for f in form if f.widget.input_type == 'hidden' %}
81
+ {{ f }}
82
+ {% endfor %}
83
+ {% endif %}
84
+
85
+ {% for f in form if f.widget.input_type != 'hidden' %}
86
+ {{ render_field(f, kwargs) }}
87
+ {% endfor %}
88
+ {% endmacro %}
@@ -1,4 +1,5 @@
1
- {% extends "layout.html" %}
1
+ {% extends "sqladmin/layout.html" %}
2
+ {% from 'sqladmin/_macros.html' import render_form_fields %}
2
3
  {% block content %}
3
4
  <div class="col-12">
4
5
  <div class="card">
@@ -14,21 +15,7 @@
14
15
  {% endif %}
15
16
  </div>
16
17
  <fieldset class="form-fieldset">
17
- {% for field in form %}
18
- <div class="mb-3 form-group row">
19
- {{ field.label(class_="form-label col-sm-2 col-form-label") }}
20
- <div class="col-sm-10">
21
- {% if field.errors %}
22
- {{ field(class_="form-control is-invalid") }}
23
- {% else %}
24
- {{ field() }}
25
- {% endif %}
26
- {% for error in field.errors %}
27
- <div class="invalid-feedback">{{ error }}</div>
28
- {% endfor %}
29
- </div>
30
- </div>
31
- {% endfor %}
18
+ {{ render_form_fields(form, form_opts=form_opts) }}
32
19
  </fieldset>
33
20
  <div class="row">
34
21
  <div class="col-md-2">
@@ -1,4 +1,4 @@
1
- {% extends "layout.html" %}
1
+ {% extends "sqladmin/layout.html" %}
2
2
  {% block content %}
3
3
  <div class="col-12">
4
4
  <div class="card">
@@ -87,14 +87,14 @@
87
87
  </div>
88
88
  </div>
89
89
  {% if model_view.can_delete %}
90
- {% include 'modals/delete.html' %}
90
+ {% include 'sqladmin/modals/delete.html' %}
91
91
  {% endif %}
92
92
 
93
93
  {% for custom_action in model_view._custom_actions_in_detail %}
94
94
  {% if custom_action in model_view._custom_actions_confirmation %}
95
95
  {% with confirmation_message = model_view._custom_actions_confirmation[custom_action], custom_action=custom_action,
96
96
  url=model_view._url_for_action(request, custom_action) + '?pks=' + (get_object_identifier(model) | string) %}
97
- {% include 'modals/details_action_confirmation.html' %}
97
+ {% include 'sqladmin/modals/details_action_confirmation.html' %}
98
98
  {% endwith %}
99
99
  {% endif %}
100
100
  {% endfor %}
@@ -1,4 +1,5 @@
1
- {% extends "layout.html" %}
1
+ {% extends "sqladmin/layout.html" %}
2
+ {% from 'sqladmin/_macros.html' import render_form_fields %}
2
3
  {% block content %}
3
4
  <div class="col-12">
4
5
  <div class="card">
@@ -14,21 +15,7 @@
14
15
  {% endif %}
15
16
  </div>
16
17
  <fieldset class="form-fieldset">
17
- {% for field in form %}
18
- <div class="mb-3 form-group row">
19
- {{ field.label(class_="form-label col-sm-2 col-form-label") }}
20
- <div class="col-sm-10">
21
- {% if field.errors %}
22
- {{ field(class_="form-control is-invalid") }}
23
- {% else %}
24
- {{ field() }}
25
- {% endif %}
26
- {% for error in field.errors %}
27
- <div class="invalid-feedback">{{ error }}</div>
28
- {% endfor %}
29
- </div>
30
- </div>
31
- {% endfor %}
18
+ {{ render_form_fields(form, form_opts=form_opts) }}
32
19
  </fieldset>
33
20
  <div class="row">
34
21
  <div class="col-md-2">
@@ -40,11 +27,13 @@
40
27
  <div class="btn-group flex-wrap" data-toggle="buttons">
41
28
  <input type="submit" name="save" value="Save" class="btn">
42
29
  <input type="submit" name="save" value="Save and continue editing" class="btn">
30
+ {% if model_view.can_create %}
43
31
  {% if model_view.save_as %}
44
32
  <input type="submit" name="save" value="Save as new" class="btn">
45
33
  {% else %}
46
34
  <input type="submit" name="save" value="Save and add another" class="btn">
47
35
  {% endif %}
36
+ {% endif %}
48
37
  </div>
49
38
  </div>
50
39
  </div>
@@ -1,4 +1,4 @@
1
- {% extends "layout.html" %}
1
+ {% extends "sqladmin/layout.html" %}
2
2
  {% block body %}
3
3
  <div class="page page-center">
4
4
  <div class="container-tight py-4">
@@ -0,0 +1,3 @@
1
+ {% extends "sqladmin/layout.html" %}
2
+ {% block content %}
3
+ {% endblock %}
@@ -1,5 +1,5 @@
1
- {% extends "base.html" %}
2
- {% from '_macros.html' import display_menu %}
1
+ {% extends "sqladmin/base.html" %}
2
+ {% from 'sqladmin/_macros.html' import display_menu %}
3
3
  {% block body %}
4
4
  <div class="wrapper">
5
5
  <aside class="navbar navbar-expand-lg navbar-vertical navbar-expand-md navbar-dark">
@@ -1,4 +1,4 @@
1
- {% extends "layout.html" %}
1
+ {% extends "sqladmin/layout.html" %}
2
2
  {% block content %}
3
3
  <div class="col-12">
4
4
  <div class="card">
@@ -95,10 +95,10 @@
95
95
  <th>
96
96
  {% if name in model_view._sort_fields %}
97
97
  {% if request.query_params.get("sortBy") == name and request.query_params.get("sort") == "asc" %}
98
- <a href="{{ request.url.include_query_params(sort='desc') }}"><i class="fa-solid fa-arrow-down"></i> {{
98
+ <a href="{{ request.url.include_query_params(sort='desc') }}"><i class="fa-solid fa-arrow-up"></i> {{
99
99
  label }}</a>
100
100
  {% elif request.query_params.get("sortBy") == name and request.query_params.get("sort") == "desc" %}
101
- <a href="{{ request.url.include_query_params(sort='asc') }}"><i class="fa-solid fa-arrow-up"></i> {{ label
101
+ <a href="{{ request.url.include_query_params(sort='asc') }}"><i class="fa-solid fa-arrow-down"></i> {{ label
102
102
  }}</a>
103
103
  {% else %}
104
104
  <a href="{{ request.url.include_query_params(sortBy=name, sort='asc') }}">{{ label }}</a>
@@ -207,16 +207,16 @@
207
207
  </div>
208
208
  </div>
209
209
  {% if model_view.can_delete %}
210
- {% include 'modals/delete.html' %}
210
+ {% include 'sqladmin/modals/delete.html' %}
211
211
  {% endif %}
212
212
 
213
213
  {% for custom_action in model_view._custom_actions_in_list %}
214
214
  {% if custom_action in model_view._custom_actions_confirmation %}
215
215
  {% with confirmation_message = model_view._custom_actions_confirmation[custom_action], custom_action=custom_action,
216
216
  url=model_view._url_for_action(request, custom_action) %}
217
- {% include 'modals/list_action_confirmation.html' %}
217
+ {% include 'sqladmin/modals/list_action_confirmation.html' %}
218
218
  {% endwith %}
219
219
  {% endif %}
220
220
  {% endfor %}
221
221
  </div>
222
- {% endblock %}
222
+ {% endblock %}
@@ -1,4 +1,4 @@
1
- {% extends "base.html" %}
1
+ {% extends "sqladmin/base.html" %}
2
2
  {% block body %}
3
3
  <div class="d-flex align-items-center justify-content-center vh-100">
4
4
  <form class="Fcol-lg-6 col-md-6 card card-md" action="{{ url_for('admin:login') }}" method="POST" autocomplete="off">
sqladmin/templating.py CHANGED
@@ -1,4 +1,6 @@
1
- from typing import Any, Dict, Mapping, Optional
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Mapping
2
4
 
3
5
  import jinja2
4
6
  from starlette.background import BackgroundTask
@@ -13,11 +15,11 @@ class _TemplateResponse(HTMLResponse):
13
15
  self,
14
16
  template: jinja2.Template,
15
17
  content: str,
16
- context: Dict,
18
+ context: dict,
17
19
  status_code: int = 200,
18
- headers: Optional[Mapping[str, str]] = None,
19
- media_type: Optional[str] = None,
20
- background: Optional[BackgroundTask] = None,
20
+ headers: Mapping[str, str] | None = None,
21
+ media_type: str | None = None,
22
+ background: BackgroundTask | None = None,
21
23
  ):
22
24
  self.template = template
23
25
  self.context = context
@@ -42,7 +44,7 @@ class _TemplateResponse(HTMLResponse):
42
44
  class Jinja2Templates:
43
45
  def __init__(self, directory: str) -> None:
44
46
  @jinja2.pass_context
45
- def url_for(context: Dict, __name: str, **path_params: Any) -> URL:
47
+ def url_for(context: dict, __name: str, **path_params: Any) -> URL:
46
48
  request = context["request"]
47
49
  return request.url_for(__name, **path_params)
48
50
 
@@ -54,7 +56,7 @@ class Jinja2Templates:
54
56
  self,
55
57
  request: Request,
56
58
  name: str,
57
- context: Optional[Dict] = None,
59
+ context: dict | None = None,
58
60
  status_code: int = 200,
59
61
  ) -> _TemplateResponse:
60
62
  context = context or {}
sqladmin/widgets.py CHANGED
@@ -75,15 +75,23 @@ class FileInputWidget(widgets.FileInput):
75
75
  """
76
76
 
77
77
  def __call__(self, field: Field, **kwargs: Any) -> str:
78
- file_input = super().__call__(field, **kwargs)
79
- checkbox_id = f"{field.id}_checkbox"
80
- checkbox_label = Markup(
81
- f'<label class="form-check-label" for="{checkbox_id}">Clear</label>'
82
- )
83
- checkbox_input = Markup(
84
- f'<input class="form-check-input" type="checkbox" id="{checkbox_id}" name="{checkbox_id}">' # noqa: E501
85
- )
86
- checkbox = Markup(
87
- f'<div class="form-check">{checkbox_input}{checkbox_label}</div>'
88
- )
89
- return file_input + checkbox
78
+ if not field.flags.required:
79
+ checkbox_id = f"{field.id}_checkbox"
80
+ checkbox_label = Markup(
81
+ f'<label class="form-check-label" for="{checkbox_id}">Clear</label>'
82
+ )
83
+ checkbox_input = Markup(
84
+ f'<input class="form-check-input" type="checkbox" id="{checkbox_id}" name="{checkbox_id}">' # noqa: E501
85
+ )
86
+ checkbox = Markup(
87
+ f'<div class="form-check">{checkbox_input}{checkbox_label}</div>'
88
+ )
89
+ else:
90
+ checkbox = Markup()
91
+
92
+ if field.data:
93
+ current_value = Markup(f"<p>Currently: {field.data}</p>")
94
+ field.flags.required = False
95
+ return current_value + checkbox + super().__call__(field, **kwargs)
96
+ else:
97
+ return super().__call__(field, **kwargs)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: sqladmin
3
- Version: 0.16.1
3
+ Version: 0.18.0
4
4
  Summary: SQLAlchemy admin for FastAPI and Starlette
5
5
  Project-URL: Documentation, https://aminalaee.dev/sqladmin
6
6
  Project-URL: Issues, https://github.com/aminalaee/sqladmin/issues
@@ -0,0 +1,50 @@
1
+ sqladmin/__init__.py,sha256=IIs_M7R7YdyDmI3K5Ror-SI_DvL_-uDcdiVYhvBnNXM,216
2
+ sqladmin/_menu.py,sha256=V6uKvIJGKrC0kmXq4M-DAgvPoHvgoGgKAw47OjsswGA,2609
3
+ sqladmin/_queries.py,sha256=KqxMABvepoA0j-8Xizg6ASYS-sZDSdm5iFlU74vilQY,9697
4
+ sqladmin/_types.py,sha256=3Zs0aPb14OS-9leahKxxzFopnIOiNftPZwdUmFDBKog,347
5
+ sqladmin/_validators.py,sha256=w0siGhZQq4MD__lu9Edua9DgMOoKET_kk-alpARFHIM,1604
6
+ sqladmin/ajax.py,sha256=GWjK2nzeu2_huGYAuK6kA4YuFWt5l5kYsg9o0AXWVvs,2576
7
+ sqladmin/application.py,sha256=E6MxREu9Eijo0lb7nBHrQ8-Hl_Nq8NpO9hPFzVlR8ZE,27203
8
+ sqladmin/authentication.py,sha256=QdN3rLZFU25ihaIIi7iisb55-oFi4GtV_k1xGFvnS6w,2482
9
+ sqladmin/exceptions.py,sha256=6-E8m7rbWE3A7hNaSmB6CVqFzkEuwUpmU5AdGbouPCw,154
10
+ sqladmin/fields.py,sha256=1CWoVSMr1WkhBJww0-rakx71gRATeIGA6dKgc26z99M,11660
11
+ sqladmin/formatters.py,sha256=K06la0mm9-Bs5UA9L6KGJC_X_lV3UHdJ3ENI6j9j2Zg,480
12
+ sqladmin/forms.py,sha256=S4lNrHh-iQiI_-xUKI3eCMySi9p9vbshXsPrNH-Qi7g,21361
13
+ sqladmin/helpers.py,sha256=VTPOFbWkiC1My6MYYyVUCAdg7UmnViiYE2ZigiXx628,8615
14
+ sqladmin/models.py,sha256=wecvNydQwUoKKmZ4neXyAt5aZfyB6OegB6emSwgnWXA,39599
15
+ sqladmin/pagination.py,sha256=iMPCGD2IKOe93iPfcXVZus3UWuNMRG9nDCFT3rZqVe8,2286
16
+ sqladmin/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ sqladmin/templating.py,sha256=o-QMikTrOEgrneLonqCWR3SpAthr-9DoMwOmobM9zq0,2252
18
+ sqladmin/widgets.py,sha256=C_9GsqrnOiFkEHo6tBIkep9g4OCzMLeiB56lZM7bgqs,3110
19
+ sqladmin/statics/css/flatpickr.min.css,sha256=GzSkJVLJbxDk36qko2cnawOGiqz_Y8GsQv_jMTUrx1Q,16166
20
+ sqladmin/statics/css/fontawesome.min.css,sha256=CTSx_A06dm1B063156EVh15m6Y67pAjZZaQc89LLSrU,102217
21
+ sqladmin/statics/css/main.css,sha256=XziO3HgOtX6JmGb0lHSNzktBjevR_3XcmqmkV7E9jpc,45
22
+ sqladmin/statics/css/select2.min.css,sha256=FdatTf20PQr_rWg-cAKfl6j4_IY3oohFAJ7gVC3M34E,14966
23
+ sqladmin/statics/css/tabler.min.css,sha256=9Mi6oBMfUzSQcvXKNXI080TGtYClqjusVxxlrM-12EQ,498576
24
+ sqladmin/statics/js/bootstrap.min.js,sha256=5dHuQEbO64HT5DMJ0FO0I7hwGOYMTPDdjufF0-npBGU,62399
25
+ sqladmin/statics/js/flatpickr.min.js,sha256=P3cmJKYotkCthfbkx0ci27L0y3mp2ZlCJ-RrV3oOsDE,58060
26
+ sqladmin/statics/js/jquery.min.js,sha256=_xUj-3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej_m4,89501
27
+ sqladmin/statics/js/main.js,sha256=xMh4ruSMIfdTxRWmXiBKdpP-5yLXxBdjadrTtVtYq0A,4068
28
+ sqladmin/statics/js/popper.min.js,sha256=wZjZsjDhPsJ8oPi__hLJzWmP9Fj30Vm0c_9jALIiyjE,19167
29
+ sqladmin/statics/js/select2.full.min.js,sha256=XG_auAy4aieWldzMImofrFDiySK-pwJC7aoo9St7rS0,79212
30
+ sqladmin/statics/js/tabler.min.js,sha256=kuHV8gS0R5FupAkK6iExYXHKc5ZFbnSRYtVSorjvl0M,146912
31
+ sqladmin/statics/webfonts/fa-brands-400.woff2,sha256=-q5vwKqUzFveUHZkfIF6IyBglqHL7aENHG89idYWPtE,109808
32
+ sqladmin/statics/webfonts/fa-regular-400.woff2,sha256=jn5eobFfYqsU29QXaOj7zSHMhZpOpdqBJFfucUKZ-zU,24948
33
+ sqladmin/statics/webfonts/fa-solid-900.woff2,sha256=cVKmkz7j1pDsKvPQnanXAXI9Fqo0EKbYDyj_iGbzuIA,150124
34
+ sqladmin/templates/sqladmin/_macros.html,sha256=QK--kje7XrH5Flhumf4luLafvTCvTioPMfrsrgTnWEo,2809
35
+ sqladmin/templates/sqladmin/base.html,sha256=MjcbhwWOEhwamvGevnH3FPlrjirvErhGhOdslpMLGrU,1592
36
+ sqladmin/templates/sqladmin/create.html,sha256=Vaj_OHLDIqnZF1HOz_g3ogTaCGZqPEfTJhaxezD1wjM,1396
37
+ sqladmin/templates/sqladmin/details.html,sha256=RuWdlsZw5m_gm24Tdn3APNlfKtTHfYw7BnZB0_Tj6Hw,3932
38
+ sqladmin/templates/sqladmin/edit.html,sha256=geKD5j8ZLcMSciI80-qg_dQM3Sn_7g3_DeIONmSzQt8,1641
39
+ sqladmin/templates/sqladmin/error.html,sha256=gb-172SMuQKncv0QE8DQdQXeM-fw7oXC0LPLO3ia0IM,290
40
+ sqladmin/templates/sqladmin/index.html,sha256=vh_IhhYmHPOkdZNrXSEc4e9gXXeZ-nsRBCsJQ_mC7YI,71
41
+ sqladmin/templates/sqladmin/layout.html,sha256=iBIhypkXp6O3hAHDdMNc4pWd9yxt5mQy7o2lBQD-6Ec,1994
42
+ sqladmin/templates/sqladmin/list.html,sha256=L51ubV1OyeDYbuOscw9N1Ar3tU8mgWSRXeuCUYs_iCQ,10262
43
+ sqladmin/templates/sqladmin/login.html,sha256=Y_hlcIapfVFPNbSIbCe4Tbj5DLLD46emkSlL5-RP4iY,1514
44
+ sqladmin/templates/sqladmin/modals/delete.html,sha256=jTuv6geT-AhK5HTgRmntrJ8CEi98-kwKrVDrzkOQWhw,1092
45
+ sqladmin/templates/sqladmin/modals/details_action_confirmation.html,sha256=mN8LJ5OqypxNLAg2_GYZgQmGeK4E6t7JL5RmOEYuliM,1020
46
+ sqladmin/templates/sqladmin/modals/list_action_confirmation.html,sha256=U52LLNmpLaMuUZSVtGK15oLXsEu6m2S3l9zj9sjN6uM,1078
47
+ sqladmin-0.18.0.dist-info/METADATA,sha256=zvqNV0KCOIw2Xxx7q8WJVBZaam3_WyIW5jZIcDbNVcM,5270
48
+ sqladmin-0.18.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
49
+ sqladmin-0.18.0.dist-info/licenses/LICENSE.md,sha256=4zzpHQMPtND4hzIgJA5qnb4R_wRBWJlYGqNrZolBeP8,1488
50
+ sqladmin-0.18.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.21.1
2
+ Generator: hatchling 1.25.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,3 +0,0 @@
1
- {% extends "layout.html" %}
2
- {% block content %}
3
- {% endblock %}
@@ -1,50 +0,0 @@
1
- sqladmin/__init__.py,sha256=MLyzIi0PmD77EY7X-MF-yDRcF01bQb3ORV62cL7I5-E,216
2
- sqladmin/_menu.py,sha256=srm7SUSN4RiP1UQ9y5uHcTX9sVVcvEV-6z5sfvLq-fc,2623
3
- sqladmin/_queries.py,sha256=xZNv4eahSGZCffdsYi5h-6f951RHrRmT4AtLOtqYr8s,9669
4
- sqladmin/_types.py,sha256=3Zs0aPb14OS-9leahKxxzFopnIOiNftPZwdUmFDBKog,347
5
- sqladmin/_validators.py,sha256=w0siGhZQq4MD__lu9Edua9DgMOoKET_kk-alpARFHIM,1604
6
- sqladmin/ajax.py,sha256=oerBfp90Bow0CsDonBdurCl8XfzNvVWprzm8C3PJmlI,2552
7
- sqladmin/application.py,sha256=QDiyrI15OSSUdGOyECqFeOmufc0dC04lw9-hs18hl6M,26700
8
- sqladmin/authentication.py,sha256=R4ad-8A5zWZ0vInK0pRj_oWirrQgWEY0Ng36j_NMC1U,2459
9
- sqladmin/exceptions.py,sha256=6-E8m7rbWE3A7hNaSmB6CVqFzkEuwUpmU5AdGbouPCw,154
10
- sqladmin/fields.py,sha256=5CFibyLYliD48Y6p2AKzmtdQeTHxxcn5_7LieQmBpGY,11752
11
- sqladmin/formatters.py,sha256=K06la0mm9-Bs5UA9L6KGJC_X_lV3UHdJ3ENI6j9j2Zg,480
12
- sqladmin/forms.py,sha256=K_uq8AdTvBmsjZiIxKROwDfAZSZ5mlMt951Tga_rQMU,21404
13
- sqladmin/helpers.py,sha256=kO10XpKr9hlWFamJMXA8QiUAcqBcS1vO6C7QjjFfqIk,8546
14
- sqladmin/models.py,sha256=Ofh-6XwKGF9c0KyXXwmyedrGMlChrcmjze-_2qxSdug,36656
15
- sqladmin/pagination.py,sha256=AmaZ5xNgPdBqTURYdOltz5IcSz8pY4qGQsr8evpUtHk,2256
16
- sqladmin/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- sqladmin/templating.py,sha256=uIOfv7AFS4i_pErxdj5bcKDKxXz28BLlzCkLVFHqZsI,2244
18
- sqladmin/widgets.py,sha256=JB9lYUuZGsxSvBIDosvNYYDBPjlOr10ALoDpkugoB_w,2797
19
- sqladmin/statics/css/flatpickr.min.css,sha256=GzSkJVLJbxDk36qko2cnawOGiqz_Y8GsQv_jMTUrx1Q,16166
20
- sqladmin/statics/css/fontawesome.min.css,sha256=CTSx_A06dm1B063156EVh15m6Y67pAjZZaQc89LLSrU,102217
21
- sqladmin/statics/css/main.css,sha256=XziO3HgOtX6JmGb0lHSNzktBjevR_3XcmqmkV7E9jpc,45
22
- sqladmin/statics/css/select2.min.css,sha256=FdatTf20PQr_rWg-cAKfl6j4_IY3oohFAJ7gVC3M34E,14966
23
- sqladmin/statics/css/tabler.min.css,sha256=9Mi6oBMfUzSQcvXKNXI080TGtYClqjusVxxlrM-12EQ,498576
24
- sqladmin/statics/js/bootstrap.min.js,sha256=5dHuQEbO64HT5DMJ0FO0I7hwGOYMTPDdjufF0-npBGU,62399
25
- sqladmin/statics/js/flatpickr.min.js,sha256=P3cmJKYotkCthfbkx0ci27L0y3mp2ZlCJ-RrV3oOsDE,58060
26
- sqladmin/statics/js/jquery.min.js,sha256=_xUj-3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej_m4,89501
27
- sqladmin/statics/js/main.js,sha256=xMh4ruSMIfdTxRWmXiBKdpP-5yLXxBdjadrTtVtYq0A,4068
28
- sqladmin/statics/js/popper.min.js,sha256=wZjZsjDhPsJ8oPi__hLJzWmP9Fj30Vm0c_9jALIiyjE,19167
29
- sqladmin/statics/js/select2.full.min.js,sha256=XG_auAy4aieWldzMImofrFDiySK-pwJC7aoo9St7rS0,79212
30
- sqladmin/statics/js/tabler.min.js,sha256=kuHV8gS0R5FupAkK6iExYXHKc5ZFbnSRYtVSorjvl0M,146912
31
- sqladmin/statics/webfonts/fa-brands-400.woff2,sha256=-q5vwKqUzFveUHZkfIF6IyBglqHL7aENHG89idYWPtE,109808
32
- sqladmin/statics/webfonts/fa-regular-400.woff2,sha256=jn5eobFfYqsU29QXaOj7zSHMhZpOpdqBJFfucUKZ-zU,24948
33
- sqladmin/statics/webfonts/fa-solid-900.woff2,sha256=cVKmkz7j1pDsKvPQnanXAXI9Fqo0EKbYDyj_iGbzuIA,150124
34
- sqladmin/templates/_macros.html,sha256=nnUwiUAWBSkGD645U2VcuMkRoN3tT2X8RxFaCFvx9ww,1944
35
- sqladmin/templates/base.html,sha256=MjcbhwWOEhwamvGevnH3FPlrjirvErhGhOdslpMLGrU,1592
36
- sqladmin/templates/create.html,sha256=W2-VqRfH0lpBihOx7c-Yat98c4m9iEbftnkWRo3erbg,1822
37
- sqladmin/templates/details.html,sha256=XMgRfbPY5_XIO5SyLr4Jc0l6ZlwraCTZY-0yEYLWvxw,3905
38
- sqladmin/templates/edit.html,sha256=Ao2nM06KOhp14MbRH71JtqKvX61By4hF5ysSTW11pyk,1996
39
- sqladmin/templates/error.html,sha256=Rej-R7NQU3JZRE_YRF_JIErWIuKC6dLxM10yl9k_U6E,281
40
- sqladmin/templates/index.html,sha256=NisVw6t-EbkvOvR-yCJYgVLB0KRH3KvH-pGTudwL03s,62
41
- sqladmin/templates/layout.html,sha256=R7pCnARoybiQssUpF-KAB0S1xl1bBlZtHJ_k-SuBMd4,1976
42
- sqladmin/templates/list.html,sha256=C_sjcnf85q9GiBBiOvDZRdLpWj49JuiyysesPvqT1Ik,10234
43
- sqladmin/templates/login.html,sha256=XSxiQAukaeFGadc4CDFrs_VQBgTrc8FaUqAGuxDiqjY,1505
44
- sqladmin/templates/modals/delete.html,sha256=jTuv6geT-AhK5HTgRmntrJ8CEi98-kwKrVDrzkOQWhw,1092
45
- sqladmin/templates/modals/details_action_confirmation.html,sha256=mN8LJ5OqypxNLAg2_GYZgQmGeK4E6t7JL5RmOEYuliM,1020
46
- sqladmin/templates/modals/list_action_confirmation.html,sha256=U52LLNmpLaMuUZSVtGK15oLXsEu6m2S3l9zj9sjN6uM,1078
47
- sqladmin-0.16.1.dist-info/METADATA,sha256=106qBaYm6RKnoqOAtI6EMFb2VMu2tH-mLbFYQG6B59k,5270
48
- sqladmin-0.16.1.dist-info/WHEEL,sha256=TJPnKdtrSue7xZ_AVGkp9YXcvDrobsjBds1du3Nx6dc,87
49
- sqladmin-0.16.1.dist-info/licenses/LICENSE.md,sha256=4zzpHQMPtND4hzIgJA5qnb4R_wRBWJlYGqNrZolBeP8,1488
50
- sqladmin-0.16.1.dist-info/RECORD,,
File without changes