ositah 24.12.dev1__tar.gz → 25.6.dev1__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.
Potentially problematic release.
This version of ositah might be problematic. Click here for more details.
- {ositah-24.12.dev1 → ositah-25.6.dev1}/.gitignore +10 -10
- {ositah-24.12.dev1 → ositah-25.6.dev1}/.gitlab-ci.yml +15 -15
- {ositah-24.12.dev1 → ositah-25.6.dev1}/LICENSE +29 -29
- {ositah-24.12.dev1/ositah.egg-info → ositah-25.6.dev1}/PKG-INFO +150 -149
- {ositah-24.12.dev1 → ositah-25.6.dev1}/README.md +120 -120
- {ositah-24.12.dev1 → ositah-25.6.dev1}/docker/Dockerfile +20 -20
- {ositah-24.12.dev1 → ositah-25.6.dev1}/docker/docker-compose.yml +13 -13
- {ositah-24.12.dev1 → ositah-25.6.dev1}/docker/pyproject-poetry.toml +16 -16
- {ositah-24.12.dev1 → ositah-25.6.dev1}/gunicorn.config/README.md +9 -9
- {ositah-24.12.dev1 → ositah-25.6.dev1}/gunicorn.config/gunicorn.ositah +3 -3
- {ositah-24.12.dev1 → ositah-25.6.dev1}/gunicorn.config/gunicorn@.service +13 -13
- {ositah-24.12.dev1 → ositah-25.6.dev1}/gunicorn.config/ositah.conf.py +12 -12
- {ositah-24.12.dev1 → ositah-25.6.dev1}/noxfile.py +47 -47
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/app.py +17 -17
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/analysis.py +785 -785
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/configuration/callbacks.py +916 -916
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/configuration/main.py +546 -546
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/configuration/parameters.py +74 -74
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/configuration/tools.py +112 -112
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/export.py +1191 -1189
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/validation/callbacks.py +240 -240
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/validation/main.py +89 -89
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/validation/parameters.py +25 -25
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/validation/tables.py +646 -646
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/validation/tools.py +552 -552
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/assets/arrow_down_up.svg +3 -3
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/assets/ositah.css +53 -53
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/assets/sort_ascending.svg +4 -4
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/assets/sort_descending.svg +5 -5
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/assets/sorttable.js +499 -499
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/main.py +449 -449
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/ositah.example.cfg +229 -229
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/static/style.css +53 -53
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/templates/base.html +22 -22
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/templates/bootstrap_login.html +38 -38
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/templates/login_form.html +26 -26
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/agents.py +124 -124
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/authentication.py +287 -287
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/cache.py +19 -19
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/core.py +13 -13
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/exceptions.py +64 -64
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/hito_db.py +51 -51
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/hito_db_model.py +253 -253
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/menus.py +339 -339
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/period.py +139 -139
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/projects.py +1178 -1178
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/teams.py +42 -42
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/utils.py +474 -474
- {ositah-24.12.dev1 → ositah-25.6.dev1/ositah.egg-info}/PKG-INFO +150 -149
- {ositah-24.12.dev1 → ositah-25.6.dev1}/pyproject.toml +49 -49
- {ositah-24.12.dev1 → ositah-25.6.dev1}/setup.cfg +4 -4
- {ositah-24.12.dev1 → ositah-25.6.dev1}/setup.py +3 -3
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/README.md +2 -2
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/accordion.py +105 -105
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/authentication.py +147 -147
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/checkbox.py +64 -64
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/checklist.py +113 -113
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/file-selector.py +24 -24
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/file-upload.py +99 -99
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/long_running_callback.py +88 -88
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/pandas_split.py +72 -72
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/pandas_split_bug_report.py +59 -59
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/pattern-matching-callback.py +47 -47
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/progess_bar.py +130 -130
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/reset_table_checkboxes.py +102 -102
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/sortable_table.py +131 -131
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/sqlalchemy_test.py +41 -41
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/templates/base.html +20 -20
- {ositah-24.12.dev1 → ositah-25.6.dev1}/test-dash/templates/login_form.html +21 -21
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/__init__.py +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/__init__.py +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/configuration/__init__.py +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/apps/validation/__init__.py +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah/utils/__init__.py +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah.egg-info/SOURCES.txt +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah.egg-info/dependency_links.txt +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah.egg-info/entry_points.txt +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah.egg-info/requires.txt +0 -0
- {ositah-24.12.dev1 → ositah-25.6.dev1}/ositah.egg-info/top_level.txt +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
.idea
|
|
2
|
-
.mypy_cache
|
|
3
|
-
__pycache__
|
|
4
|
-
build/
|
|
5
|
-
dist/
|
|
6
|
-
*.egg-info/
|
|
7
|
-
|
|
8
|
-
*.pyc
|
|
9
|
-
|
|
10
|
-
ositah.cfg
|
|
1
|
+
.idea
|
|
2
|
+
.mypy_cache
|
|
3
|
+
__pycache__
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
*.egg-info/
|
|
7
|
+
|
|
8
|
+
*.pyc
|
|
9
|
+
|
|
10
|
+
ositah.cfg
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
stages:
|
|
2
|
-
- build
|
|
3
|
-
|
|
4
|
-
build:
|
|
5
|
-
stage: build
|
|
6
|
-
script:
|
|
7
|
-
- apk add --update python3
|
|
8
|
-
- python --version
|
|
9
|
-
- python -m venv .venv
|
|
10
|
-
- . .venv/bin/activate
|
|
11
|
-
- python -m ensurepip
|
|
12
|
-
- pip install nox pyproject-parser consolekit
|
|
13
|
-
- nox -s lint
|
|
14
|
-
- pyproject-parser check
|
|
15
|
-
- pyproject-parser reformat
|
|
1
|
+
stages:
|
|
2
|
+
- build
|
|
3
|
+
|
|
4
|
+
build:
|
|
5
|
+
stage: build
|
|
6
|
+
script:
|
|
7
|
+
- apk add --update python3
|
|
8
|
+
- python --version
|
|
9
|
+
- python -m venv .venv
|
|
10
|
+
- . .venv/bin/activate
|
|
11
|
+
- python -m ensurepip
|
|
12
|
+
- pip install nox pyproject-parser consolekit
|
|
13
|
+
- nox -s lint
|
|
14
|
+
- pyproject-parser check
|
|
15
|
+
- pyproject-parser reformat
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
BSD 3-Clause License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022, Michel Jouvin
|
|
4
|
-
All rights reserved.
|
|
5
|
-
|
|
6
|
-
Redistribution and use in source and binary forms, with or without
|
|
7
|
-
modification, are permitted provided that the following conditions are met:
|
|
8
|
-
|
|
9
|
-
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
-
list of conditions and the following disclaimer.
|
|
11
|
-
|
|
12
|
-
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
-
this list of conditions and the following disclaimer in the documentation
|
|
14
|
-
and/or other materials provided with the distribution.
|
|
15
|
-
|
|
16
|
-
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
-
contributors may be used to endorse or promote products derived from
|
|
18
|
-
this software without specific prior written permission.
|
|
19
|
-
|
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022, Michel Jouvin
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,149 +1,150 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name: ositah
|
|
3
|
-
Version:
|
|
4
|
-
Summary: Outils de Suivi d'Activités basé sur Hito
|
|
5
|
-
Author-email: Michel Jouvin <michel.jouvin@ijclab.in2p3.fr>
|
|
6
|
-
License: BSD 3-Clause License
|
|
7
|
-
Project-URL: Homepage, https://gitlab.in2p3.fr/hito/ositah
|
|
8
|
-
Project-URL: Bug Tracker, https://gitlab.in2p3.fr/hito/ositah/-/issues
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
-
Classifier: Operating System :: OS Independent
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Requires-Python: >=3.9
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
License-File: LICENSE
|
|
15
|
-
Requires-Dist: blinker
|
|
16
|
-
Requires-Dist: dash>=2.17
|
|
17
|
-
Requires-Dist: dash-bootstrap-components
|
|
18
|
-
Requires-Dist: flask
|
|
19
|
-
Requires-Dist: flask-multipass
|
|
20
|
-
Requires-Dist: flask-sqlalchemy~=3.0
|
|
21
|
-
Requires-Dist: flask-wtf
|
|
22
|
-
Requires-Dist: hito-tools>=24.8.1
|
|
23
|
-
Requires-Dist: pandas>=2.2
|
|
24
|
-
Requires-Dist: pymysql
|
|
25
|
-
Requires-Dist: python-ldap
|
|
26
|
-
Requires-Dist: pyyaml
|
|
27
|
-
Requires-Dist: simplejson
|
|
28
|
-
Requires-Dist: sqlalchemy~=2.0
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
le
|
|
78
|
-
`gunicorn
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
`
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
dans
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ositah
|
|
3
|
+
Version: 25.6.dev1
|
|
4
|
+
Summary: Outils de Suivi d'Activités basé sur Hito
|
|
5
|
+
Author-email: Michel Jouvin <michel.jouvin@ijclab.in2p3.fr>
|
|
6
|
+
License: BSD 3-Clause License
|
|
7
|
+
Project-URL: Homepage, https://gitlab.in2p3.fr/hito/ositah
|
|
8
|
+
Project-URL: Bug Tracker, https://gitlab.in2p3.fr/hito/ositah/-/issues
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.9
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: blinker
|
|
16
|
+
Requires-Dist: dash>=2.17
|
|
17
|
+
Requires-Dist: dash-bootstrap-components
|
|
18
|
+
Requires-Dist: flask
|
|
19
|
+
Requires-Dist: flask-multipass
|
|
20
|
+
Requires-Dist: flask-sqlalchemy~=3.0
|
|
21
|
+
Requires-Dist: flask-wtf
|
|
22
|
+
Requires-Dist: hito-tools>=24.8.1
|
|
23
|
+
Requires-Dist: pandas>=2.2
|
|
24
|
+
Requires-Dist: pymysql
|
|
25
|
+
Requires-Dist: python-ldap
|
|
26
|
+
Requires-Dist: pyyaml
|
|
27
|
+
Requires-Dist: simplejson
|
|
28
|
+
Requires-Dist: sqlalchemy~=2.0
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# OSITAH : Outil de Suivi de Temps et d'Activités basé sur Hito
|
|
32
|
+
|
|
33
|
+
OSITAH est une application web, basée sur le framework [Dash](https://dash.plotly.com), qui permet
|
|
34
|
+
le suivi des déclarations de temps dans Hito, leur validation et leur exportation dans NSIP.
|
|
35
|
+
L'accès aux différentes fonctionnalités est soumis à l'authentification de
|
|
36
|
+
l'utilisateur : les droits dans `ositah` sont dérivés de ceux dans Hito.
|
|
37
|
+
|
|
38
|
+
OSITAH nécessite un fichier de configuration `ositah.cfg` : par défaut il est recherché dans le
|
|
39
|
+
répertoire courant et s'il n'existe pas, dans le répertoire où est installé l'application OSITAH.
|
|
40
|
+
L'option `--configuration-file` permet de spécifier un autre fichier/localisation, par exemple pour
|
|
41
|
+
utiliser une configuration de test.
|
|
42
|
+
|
|
43
|
+
L'instance de production s'exécute normalement à travers [gunicorn](https://gunicorn.org), un serveur
|
|
44
|
+
SWGI écrit en Python et fournit par le module `gunicorn`. Dans ce contexte, le fichier de configuration
|
|
45
|
+
doit être placé dans le répertoire défini comme le répertoire courant de l'application (l'option
|
|
46
|
+
`--configuration-file` n'est pas utilisable).
|
|
47
|
+
|
|
48
|
+
L'exécution de `ositah` suppose l'accès à la base de donnée Hito.
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
Le déploiement d'OSITAH nécessite le déploiement d'un environnement Python, de préférence distinct
|
|
53
|
+
de ce qui est délivré par l'OS car cela pose de gros problèmes avec les prérequis sur les versions
|
|
54
|
+
des dépendances. Les environnements recommandés sont [pyenv](https://github.com/pyenv/pyenv),
|
|
55
|
+
[poetry](https://python-poetry.org) ou [Anaconda](https://www.anaconda.com/products/individual).
|
|
56
|
+
Pour la création d'un environnement virtuel avec Conda, voir la
|
|
57
|
+
[documentation spécifique](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands).
|
|
58
|
+
|
|
59
|
+
Pour installer OSITAH, il faut utiliser les commandes suivantes :
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install ositah
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Dépendances
|
|
66
|
+
|
|
67
|
+
Pour connaitre la liste des dépendances de l'application OSITAH, voir la propriété `dependencies`
|
|
68
|
+
dans le fichier `pyproject.toml` se trouvant dans les sources de l'application.
|
|
69
|
+
Elles sont automatiquement installées par la commande `pip`.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Configuration
|
|
73
|
+
|
|
74
|
+
### OSITAH
|
|
75
|
+
|
|
76
|
+
Toute la configuration de l'application OSITAH est déclarée dans le fichier `ositah.cfg` qui doit
|
|
77
|
+
se trouver dans le répertoire courant de l'application pour une instance de production gérée par
|
|
78
|
+
le serveur SWGI, `gunicorn`. Pour une instance de test ou de développement qui n'utilise pas
|
|
79
|
+
`gunicorn`, il est possible de spécifier le fichier de configuration à utiliser avec l'option
|
|
80
|
+
`--configuration-file`.
|
|
81
|
+
|
|
82
|
+
### Gunicorn
|
|
83
|
+
|
|
84
|
+
`gunicorn` est le serveur WSGI recommandé pour exécuter une instance de production. Son installation
|
|
85
|
+
consiste à installer 2 modules Python : `gunicorn` et `greenlet`.
|
|
86
|
+
|
|
87
|
+
Le repository Git de'OSITAH contient un répertoire `gunicorn.config` avec les 3 fichiers importants
|
|
88
|
+
pour la configuration de `gunicorn` qu'il faut éditer pour adapter les répertoires à la configuration
|
|
89
|
+
du site :
|
|
90
|
+
|
|
91
|
+
* `gunicorn@.service` : script `systemd` à installer pour démarrer l'instance OSITAH. Si le
|
|
92
|
+
l'instance OSITAH s'appelle `ositah`, la systemd unit à utiliser pour gérer le service est
|
|
93
|
+
`gunicorn@ositah`.
|
|
94
|
+
* `gunicorn.ositah` : fichier à placer en `/etc/sysconfig` définissant la configuration spécifique
|
|
95
|
+
à OSITAH (répertoire courant, options `gunicorn`, entry point).
|
|
96
|
+
* `app.conf.py` : options `gunicorn` à utiliser avec l'instance OSITAH
|
|
97
|
+
|
|
98
|
+
## Validation des déclarations : structure des tables OSITAH
|
|
99
|
+
|
|
100
|
+
La validation des déclarations de temps se fait agent par agent, en utilisant le bouton de validation correspondant
|
|
101
|
+
à l'agent. Ce bouton n'est actif qu'à partir de la date définie dans la table `ositah_validation_period` pour la
|
|
102
|
+
période en cours, sauf si on a ajouté des exceptions dans le fichier de configuration, telles que :
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
validation:
|
|
106
|
+
override_period:
|
|
107
|
+
- ROLE_SUPER_ADMIN
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`override_period` est une liste de roles qui peuvent faire des validations hors de la période standard.
|
|
111
|
+
|
|
112
|
+
La validation d'une déclaration a pour effet d'enregistrer le temps déclaré sur chacune des activités de l'agent dans
|
|
113
|
+
la table `ositah_project_declaration`. Cette entrée est associée à une entrée dans la table `ositah_validation` qui
|
|
114
|
+
contient la date de la validation, l'agent concerné par cette validation (son `agent id` Hito), la validation période
|
|
115
|
+
à laquelle correspond cette validation (référence à la table `ositah_validation_period`) ainsi que le statut
|
|
116
|
+
de la validation. Si on invalide cette validation ultérieurement, le statut passe à `0` et la date de la validation
|
|
117
|
+
est copiée dans l'attribut `initial_timestamp`. L'entrée dans `ositah_project_declaration` n'est pas détruite. Lorsque
|
|
118
|
+
la déclaration de l'agent est à nouveau validée ultérieurement, une nouvelle entrée est créée à la fois dans
|
|
119
|
+
`ositah_project_declaration` et dans `ositah_validation`, comme pour la validation initiale.
|
|
120
|
+
Il est donc possible d'avoir un historique des opérations de validation sur une période donnée (pas exploité
|
|
121
|
+
par l'application OSITAH pour l'instant). Par contre, quand on lit les validations, il faut faire attention à
|
|
122
|
+
prendre la dernière dans une période donnée qui a son statut à `1`.
|
|
123
|
+
|
|
124
|
+
La création de l'entrée pour définir une période de déclaration dans `ositah_validation_period` (date de début et
|
|
125
|
+
date de fin de la période, date de début de la validation) n'est pas gérée par OSITAH actuellement : il faut créer
|
|
126
|
+
une entrée dans la table avec la commande SQL `INSERT INTO`.
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
## Export NSIP
|
|
130
|
+
|
|
131
|
+
OSITAH permet d'exporter vers NSIP les déclarations validées. La table du menu `Export` indique
|
|
132
|
+
l'état de la synchronisation entre NSIP et OSITAH, agent par agent. Un code couleur permet
|
|
133
|
+
d'identifier facilement si une déclaration est correctement synchronisée ou non. Seules les
|
|
134
|
+
déclarations qui ne sont pas correctement synchronisées peut être exportées. Lors de l'export,
|
|
135
|
+
la déclaration est indiquée comme validée par le responsable dans NSIP, avec la date de sa validation
|
|
136
|
+
dans OSITAH.
|
|
137
|
+
|
|
138
|
+
Il est possible d'exporter toutes les déclarations ou de les sélectionner agent par agent.
|
|
139
|
+
Lorsqu'un agent est sélectionné, toutes ses déclarations non synchronisées sont exportées. Le bouton
|
|
140
|
+
de sélection dans la barre de titre permet de sélectionner tous les agents sélectionnables en un clic.
|
|
141
|
+
|
|
142
|
+
Les déclarations d'un agent ne peuvent pas être exportées si l'agent n'existe pas dans NSIP,
|
|
143
|
+
c'est-à-dire s'il est absent de RESEDA. La correction du problème, si on souhaite que les
|
|
144
|
+
déclarations da cet agent soient mises dans NSIP, nécessite une intervention du Service RH
|
|
145
|
+
pour ajouter la personne dans RESEDA.
|
|
146
|
+
|
|
147
|
+
Il peut aussi y avoir des déclarations qui ont été faites directement dans NSIP et qui ne sont
|
|
148
|
+
pas encore validées dans OSITAH. Dans ce cas, elles apparaitront comme manquantes dans OSITAH,
|
|
149
|
+
même si elles sont présentes, tant qu'elles ne seront pas validées.
|
|
150
|
+
|