tina4-python 0.2.166__tar.gz → 0.2.168__tar.gz
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.
- {tina4_python-0.2.166 → tina4_python-0.2.168}/PKG-INFO +1 -1
- {tina4_python-0.2.166 → tina4_python-0.2.168}/pyproject.toml +1 -1
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Template.py +5 -2
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/js/tina4helper.js +49 -24
- {tina4_python-0.2.166 → tina4_python-0.2.168}/.gitignore +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/README.md +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Api.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Auth.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/CRUD.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Constant.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Database.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/DatabaseResult.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/DatabaseTypes.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Debug.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Env.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/FieldTypes.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/HtmlElement.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Localization.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Messages.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/MiddleWare.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Migration.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/ORM.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Queue.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Request.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Response.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Router.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Session.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/ShellColors.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Swagger.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Testing.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/WSDL.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Webserver.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/Websocket.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/__init__.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/cli.py +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/messages.pot +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/css/readme.md +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/favicon.ico +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/images/403.png +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/images/404.png +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/images/500.png +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/images/logo.png +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/images/readme.md +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/js/readme.md +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/js/reconnecting-websocket.js +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/swagger/index.html +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/templates/components/crud.twig +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/templates/errors/403.twig +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/templates/errors/404.twig +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/templates/errors/500.twig +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/templates/readme.md +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
|
@@ -60,8 +60,11 @@ class Template:
|
|
|
60
60
|
@staticmethod
|
|
61
61
|
def datetime_format(value, format="%H:%M %d-%m-%y"):
|
|
62
62
|
if value.strip().upper() == "NOW":
|
|
63
|
-
value =
|
|
64
|
-
|
|
63
|
+
value = datetime.now()
|
|
64
|
+
try:
|
|
65
|
+
return value.strftime(format)
|
|
66
|
+
except AttributeError:
|
|
67
|
+
return value
|
|
65
68
|
|
|
66
69
|
@staticmethod
|
|
67
70
|
def production_dump(param):
|
|
@@ -7,46 +7,71 @@ var formToken = null;
|
|
|
7
7
|
* @param method
|
|
8
8
|
* @param callback
|
|
9
9
|
*/
|
|
10
|
-
function sendRequest
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (
|
|
15
|
-
request = null;
|
|
16
|
-
}
|
|
17
|
-
if (method === undefined) {
|
|
18
|
-
method = 'GET';
|
|
19
|
-
}
|
|
10
|
+
function sendRequest(url, request, method, callback) {
|
|
11
|
+
// Default values
|
|
12
|
+
if (url === undefined) url = "";
|
|
13
|
+
if (request === undefined) request = null;
|
|
14
|
+
if (method === undefined) method = 'GET';
|
|
20
15
|
|
|
21
16
|
const xhr = new XMLHttpRequest();
|
|
22
|
-
|
|
23
|
-
|
|
24
17
|
xhr.open(method, url, true);
|
|
25
18
|
|
|
19
|
+
// Add authorization header if token exists
|
|
26
20
|
if (formToken !== null) {
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
xhr.setRequestHeader('Authorization', 'Bearer ' + formToken);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ────────────────────────────────────────────────
|
|
25
|
+
// Content-Type logic – only set when appropriate
|
|
26
|
+
// ────────────────────────────────────────────────
|
|
27
|
+
let isFormData = request instanceof FormData;
|
|
28
|
+
|
|
29
|
+
if (method.toUpperCase() === 'POST' || method.toUpperCase() === 'PUT' || method.toUpperCase() === 'PATCH') {
|
|
30
|
+
if (isFormData) {
|
|
31
|
+
//DO not touch this
|
|
32
|
+
} else if (typeof request === 'object' && request !== null) {
|
|
33
|
+
//Becomes a JSON String
|
|
34
|
+
request = JSON.stringify(request);
|
|
35
|
+
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
|
|
36
|
+
} else if (typeof request === 'string') {
|
|
37
|
+
// Already a string – assume JSON or let server decide
|
|
38
|
+
// You can set charset=UTF-8 if you're sure it's JSON/text
|
|
39
|
+
xhr.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8');
|
|
40
|
+
}
|
|
29
41
|
}
|
|
30
42
|
|
|
43
|
+
// ────────────────────────────────────────────────
|
|
44
|
+
// Response handling
|
|
45
|
+
// ────────────────────────────────────────────────
|
|
31
46
|
xhr.onload = function () {
|
|
32
47
|
let content = xhr.response;
|
|
33
|
-
|
|
34
|
-
|
|
48
|
+
|
|
49
|
+
// Update token if server sent a fresh one
|
|
50
|
+
const freshToken = xhr.getResponseHeader('FreshToken');
|
|
51
|
+
if (freshToken && freshToken !== '') {
|
|
52
|
+
formToken = freshToken;
|
|
35
53
|
}
|
|
36
54
|
|
|
37
55
|
try {
|
|
38
56
|
content = JSON.parse(content);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// Not JSON → keep as raw string/text
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (typeof callback === 'function') {
|
|
62
|
+
callback(content, xhr.status, xhr);
|
|
42
63
|
}
|
|
43
64
|
};
|
|
44
65
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
66
|
+
// Optional: handle errors
|
|
67
|
+
xhr.onerror = function () {
|
|
68
|
+
if (typeof callback === 'function') {
|
|
69
|
+
callback(null, xhr.status, xhr);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// Send the body (or null)
|
|
74
|
+
xhr.send(request);
|
|
50
75
|
}
|
|
51
76
|
|
|
52
77
|
/**
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/js/reconnecting-websocket.js
RENAMED
|
File without changes
|
|
File without changes
|
{tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/public/swagger/oauth2-redirect.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/en/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/en/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/fr/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-0.2.166 → tina4_python-0.2.168}/tina4_python/translations/fr/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|