ositah 25.6.dev1__py3-none-any.whl → 25.9.dev1__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.

Potentially problematic release.


This version of ositah might be problematic. Click here for more details.

Files changed (42) hide show
  1. ositah/app.py +17 -17
  2. ositah/apps/analysis.py +785 -785
  3. ositah/apps/configuration/callbacks.py +916 -916
  4. ositah/apps/configuration/main.py +546 -546
  5. ositah/apps/configuration/parameters.py +74 -74
  6. ositah/apps/configuration/tools.py +112 -112
  7. ositah/apps/export.py +1208 -1191
  8. ositah/apps/validation/callbacks.py +240 -240
  9. ositah/apps/validation/main.py +89 -89
  10. ositah/apps/validation/parameters.py +25 -25
  11. ositah/apps/validation/tables.py +646 -646
  12. ositah/apps/validation/tools.py +552 -552
  13. ositah/assets/arrow_down_up.svg +3 -3
  14. ositah/assets/ositah.css +53 -53
  15. ositah/assets/sort_ascending.svg +4 -4
  16. ositah/assets/sort_descending.svg +5 -5
  17. ositah/assets/sorttable.js +499 -499
  18. ositah/main.py +449 -449
  19. ositah/ositah.example.cfg +229 -229
  20. ositah/static/style.css +53 -53
  21. ositah/templates/base.html +22 -22
  22. ositah/templates/bootstrap_login.html +38 -38
  23. ositah/templates/login_form.html +26 -26
  24. ositah/utils/agents.py +124 -124
  25. ositah/utils/authentication.py +287 -287
  26. ositah/utils/cache.py +19 -19
  27. ositah/utils/core.py +13 -13
  28. ositah/utils/exceptions.py +64 -64
  29. ositah/utils/hito_db.py +51 -51
  30. ositah/utils/hito_db_model.py +253 -253
  31. ositah/utils/menus.py +339 -339
  32. ositah/utils/period.py +139 -139
  33. ositah/utils/projects.py +1178 -1178
  34. ositah/utils/teams.py +42 -42
  35. ositah/utils/utils.py +474 -474
  36. {ositah-25.6.dev1.dist-info → ositah-25.9.dev1.dist-info}/METADATA +149 -150
  37. ositah-25.9.dev1.dist-info/RECORD +46 -0
  38. {ositah-25.6.dev1.dist-info → ositah-25.9.dev1.dist-info}/licenses/LICENSE +29 -29
  39. ositah-25.6.dev1.dist-info/RECORD +0 -46
  40. {ositah-25.6.dev1.dist-info → ositah-25.9.dev1.dist-info}/WHEEL +0 -0
  41. {ositah-25.6.dev1.dist-info → ositah-25.9.dev1.dist-info}/entry_points.txt +0 -0
  42. {ositah-25.6.dev1.dist-info → ositah-25.9.dev1.dist-info}/top_level.txt +0 -0
@@ -1,150 +1,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 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
-
1
+ Metadata-Version: 2.4
2
+ Name: ositah
3
+ Version: 25.9.dev1
4
+ Summary: Outils de Suivi d'Activités basé sur Hito
5
+ Author-email: Michel Jouvin <michel.jouvin@ijclab.in2p3.fr>
6
+ License-Expression: BSD-3-Clause
7
+ Project-URL: Homepage, https://gitlab.in2p3.fr/hito/ositah
8
+ Project-URL: Bug Tracker, https://gitlab.in2p3.fr/hito/ositah/-/issues
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: >=3.9
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: blinker
15
+ Requires-Dist: dash>=2.17
16
+ Requires-Dist: dash-bootstrap-components
17
+ Requires-Dist: flask
18
+ Requires-Dist: flask-multipass
19
+ Requires-Dist: flask-sqlalchemy~=3.0
20
+ Requires-Dist: flask-wtf
21
+ Requires-Dist: hito-tools>=24.8.1
22
+ Requires-Dist: pandas>=2.2
23
+ Requires-Dist: pymysql
24
+ Requires-Dist: python-ldap
25
+ Requires-Dist: pyyaml
26
+ Requires-Dist: simplejson
27
+ Requires-Dist: sqlalchemy~=2.0
28
+ Dynamic: license-file
29
+
30
+ # OSITAH : Outil de Suivi de Temps et d'Activités basé sur Hito
31
+
32
+ OSITAH est une application web, basée sur le framework [Dash](https://dash.plotly.com), qui permet
33
+ le suivi des déclarations de temps dans Hito, leur validation et leur exportation dans NSIP.
34
+ L'accès aux différentes fonctionnalités est soumis à l'authentification de
35
+ l'utilisateur : les droits dans `ositah` sont dérivés de ceux dans Hito.
36
+
37
+ OSITAH nécessite un fichier de configuration `ositah.cfg` : par défaut il est recherché dans le
38
+ répertoire courant et s'il n'existe pas, dans le répertoire est installé l'application OSITAH.
39
+ L'option `--configuration-file` permet de spécifier un autre fichier/localisation, par exemple pour
40
+ utiliser une configuration de test.
41
+
42
+ L'instance de production s'exécute normalement à travers [gunicorn](https://gunicorn.org), un serveur
43
+ SWGI écrit en Python et fournit par le module `gunicorn`. Dans ce contexte, le fichier de configuration
44
+ doit être placé dans le répertoire défini comme le répertoire courant de l'application (l'option
45
+ `--configuration-file` n'est pas utilisable).
46
+
47
+ L'exécution de `ositah` suppose l'accès à la base de donnée Hito.
48
+
49
+ ## Installation
50
+
51
+ Le déploiement d'OSITAH nécessite le déploiement d'un environnement Python, de préférence distinct
52
+ de ce qui est délivré par l'OS car cela pose de gros problèmes avec les prérequis sur les versions
53
+ des dépendances. Les environnements recommandés sont [pyenv](https://github.com/pyenv/pyenv),
54
+ [poetry](https://python-poetry.org) ou [Anaconda](https://www.anaconda.com/products/individual).
55
+ Pour la création d'un environnement virtuel avec Conda, voir la
56
+ [documentation spécifique](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands).
57
+
58
+ Pour installer OSITAH, il faut utiliser les commandes suivantes :
59
+
60
+ ```bash
61
+ pip install ositah
62
+ ```
63
+
64
+ ### Dépendances
65
+
66
+ Pour connaitre la liste des dépendances de l'application OSITAH, voir la propriété `dependencies`
67
+ dans le fichier `pyproject.toml` se trouvant dans les sources de l'application.
68
+ Elles sont automatiquement installées par la commande `pip`.
69
+
70
+
71
+ ## Configuration
72
+
73
+ ### OSITAH
74
+
75
+ Toute la configuration de l'application OSITAH est déclarée dans le fichier `ositah.cfg` qui doit
76
+ se trouver dans le répertoire courant de l'application pour une instance de production gérée par
77
+ le serveur SWGI, `gunicorn`. Pour une instance de test ou de développement qui n'utilise pas
78
+ `gunicorn`, il est possible de spécifier le fichier de configuration à utiliser avec l'option
79
+ `--configuration-file`.
80
+
81
+ ### Gunicorn
82
+
83
+ `gunicorn` est le serveur WSGI recommandé pour exécuter une instance de production. Son installation
84
+ consiste à installer 2 modules Python : `gunicorn` et `greenlet`.
85
+
86
+ Le repository Git de'OSITAH contient un répertoire `gunicorn.config` avec les 3 fichiers importants
87
+ pour la configuration de `gunicorn` qu'il faut éditer pour adapter les répertoires à la configuration
88
+ du site :
89
+
90
+ * `gunicorn@.service` : script `systemd` à installer pour démarrer l'instance OSITAH. Si le
91
+ l'instance OSITAH s'appelle `ositah`, la systemd unit à utiliser pour gérer le service est
92
+ `gunicorn@ositah`.
93
+ * `gunicorn.ositah` : fichier à placer en `/etc/sysconfig` définissant la configuration spécifique
94
+ à OSITAH (répertoire courant, options `gunicorn`, entry point).
95
+ * `app.conf.py` : options `gunicorn` à utiliser avec l'instance OSITAH
96
+
97
+ ## Validation des déclarations : structure des tables OSITAH
98
+
99
+ La validation des déclarations de temps se fait agent par agent, en utilisant le bouton de validation correspondant
100
+ à l'agent. Ce bouton n'est actif qu'à partir de la date définie dans la table `ositah_validation_period` pour la
101
+ période en cours, sauf si on a ajouté des exceptions dans le fichier de configuration, telles que :
102
+
103
+ ```
104
+ validation:
105
+ override_period:
106
+ - ROLE_SUPER_ADMIN
107
+ ```
108
+
109
+ `override_period` est une liste de roles qui peuvent faire des validations hors de la période standard.
110
+
111
+ La validation d'une déclaration a pour effet d'enregistrer le temps déclaré sur chacune des activités de l'agent dans
112
+ la table `ositah_project_declaration`. Cette entrée est associée à une entrée dans la table `ositah_validation` qui
113
+ contient la date de la validation, l'agent concerné par cette validation (son `agent id` Hito), la validation période
114
+ à laquelle correspond cette validation (référence à la table `ositah_validation_period`) ainsi que le statut
115
+ de la validation. Si on invalide cette validation ultérieurement, le statut passe à `0` et la date de la validation
116
+ est copiée dans l'attribut `initial_timestamp`. L'entrée dans `ositah_project_declaration` n'est pas détruite. Lorsque
117
+ la déclaration de l'agent est à nouveau validée ultérieurement, une nouvelle entrée est créée à la fois dans
118
+ `ositah_project_declaration` et dans `ositah_validation`, comme pour la validation initiale.
119
+ Il est donc possible d'avoir un historique des opérations de validation sur une période donnée (pas exploité
120
+ par l'application OSITAH pour l'instant). Par contre, quand on lit les validations, il faut faire attention à
121
+ prendre la dernière dans une période donnée qui a son statut à `1`.
122
+
123
+ 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
124
+ 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
125
+ une entrée dans la table avec la commande SQL `INSERT INTO`.
126
+
127
+
128
+ ## Export NSIP
129
+
130
+ OSITAH permet d'exporter vers NSIP les déclarations validées. La table du menu `Export` indique
131
+ l'état de la synchronisation entre NSIP et OSITAH, agent par agent. Un code couleur permet
132
+ d'identifier facilement si une déclaration est correctement synchronisée ou non. Seules les
133
+ déclarations qui ne sont pas correctement synchronisées peut être exportées. Lors de l'export,
134
+ la déclaration est indiquée comme validée par le responsable dans NSIP, avec la date de sa validation
135
+ dans OSITAH.
136
+
137
+ Il est possible d'exporter toutes les déclarations ou de les sélectionner agent par agent.
138
+ Lorsqu'un agent est sélectionné, toutes ses déclarations non synchronisées sont exportées. Le bouton
139
+ de sélection dans la barre de titre permet de sélectionner tous les agents sélectionnables en un clic.
140
+
141
+ Les déclarations d'un agent ne peuvent pas être exportées si l'agent n'existe pas dans NSIP,
142
+ c'est-à-dire s'il est absent de RESEDA. La correction du problème, si on souhaite que les
143
+ déclarations da cet agent soient mises dans NSIP, nécessite une intervention du Service RH
144
+ pour ajouter la personne dans RESEDA.
145
+
146
+ Il peut aussi y avoir des déclarations qui ont été faites directement dans NSIP et qui ne sont
147
+ pas encore validées dans OSITAH. Dans ce cas, elles apparaitront comme manquantes dans OSITAH,
148
+ même si elles sont présentes, tant qu'elles ne seront pas validées.
149
+
@@ -0,0 +1,46 @@
1
+ ositah/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ ositah/app.py,sha256=53ylXmqBSo31omZt-XBPBhOzlkGQBuDenU0Q8m7efCg,428
3
+ ositah/main.py,sha256=97IhSMIqIVWC6GdXWievxE-tu30-UboivbW9_NTNzww,15644
4
+ ositah/ositah.example.cfg,sha256=4zQOL3ynGN9bO6j-bekJeJWUe7Xq-c0eySNOHKMr2K8,8000
5
+ ositah/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ ositah/apps/analysis.py,sha256=J9oE93g6wIvKh9TnT4TudmUdW75wzArx1CaB_1yuRB8,28634
7
+ ositah/apps/export.py,sha256=U-sc6dl1Tf78kF1eZkLyL0QNUrReV4h8v9SeOUakjx8,49290
8
+ ositah/apps/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ ositah/apps/configuration/callbacks.py,sha256=HbsyE0WeCTmPl14SAs-mDglvMywxA4qSeVN72jSv-bM,33455
10
+ ositah/apps/configuration/main.py,sha256=LbyupMqFUPDJCZBuRzoGREuHNxbinj3Ooj1HTJCeYUM,20349
11
+ ositah/apps/configuration/parameters.py,sha256=KmEVdC--IJRC3yzCN97FY1SooOKFy3bMneFBo1sGa54,3862
12
+ ositah/apps/configuration/tools.py,sha256=e4CYt3F_2NY34vILwxHBWtvFntq082gwpKNsZZVexHE,3982
13
+ ositah/apps/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ ositah/apps/validation/callbacks.py,sha256=N9j0HLe8Xp1zZUrVgx0woeDBwVtJLQZ_BPVNaJ9UIZo,9557
15
+ ositah/apps/validation/main.py,sha256=S5H9f9-p0jPBba4PQIYULUETN8f-JkzdkEweI6Qepa4,2895
16
+ ositah/apps/validation/parameters.py,sha256=tDHqDnoWv1QhcTad2yhqLT9_wCpj8sTYxKWsi1UF-uk,1003
17
+ ositah/apps/validation/tables.py,sha256=eJ8dhYukhT1y_y8W8fjFv5Wek3knmGxAcQFFV708llM,24456
18
+ ositah/apps/validation/tools.py,sha256=5c4IbAB_8KCgl44gNI0Qe0f3hRwJ6GAVRyIFKJ7iNhc,18800
19
+ ositah/assets/arrow_down_up.svg,sha256=jH7QOmbLkYnNENa2PlBktOYHKDGN5KbrrFcV6UpgkCY,503
20
+ ositah/assets/ositah.css,sha256=_T3mwonAYMPoDJoHYgJ5XgdFllHMcE28vnMMDd_hdOQ,1094
21
+ ositah/assets/sort_ascending.svg,sha256=Rg4wPgEBEBU9hDPgNnenFYkFLC18qKw0flaBk_8Y-uM,593
22
+ ositah/assets/sort_descending.svg,sha256=puCzEAmCLJihKOXLWOzCY7C6WS7IhTi7G2pDXwmNTiw,618
23
+ ositah/assets/sorttable.js,sha256=oBQl337JpkmW8fe4nUI7UqURmu-FkwnOdAYs6Ivg498,17478
24
+ ositah/static/style.css,sha256=_T3mwonAYMPoDJoHYgJ5XgdFllHMcE28vnMMDd_hdOQ,1094
25
+ ositah/templates/base.html,sha256=qKZLLrIOn2eZ_mIoSZEN8ZP6qyeSg1butPEVuv5lYDs,714
26
+ ositah/templates/bootstrap_login.html,sha256=Gp3FTx1uWMHeVvnYcLehdYE8vfZ1RBzIjrxD6IGKPA4,1608
27
+ ositah/templates/login_form.html,sha256=BjcnWd5svC0xy039-MToODcDswehe1YVQnTnctD9kdU,1033
28
+ ositah/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ ositah/utils/agents.py,sha256=fKJnhHUNXOwBn64fuKmhS5mhb0NeAk_Z7dwXzjgsTCU,4730
30
+ ositah/utils/authentication.py,sha256=VfT3MrIPX6U4HAma0O0UScB86-EukBdfEg26NP5ndpk,9149
31
+ ositah/utils/cache.py,sha256=mM1iKDzQbVJZvTOgfPnvbxSBWi-OVGly6MncQ09CtEY,504
32
+ ositah/utils/core.py,sha256=OFML9h5JNmXXeMo7n90FSBDHtivWOY7ff2SJcG4uYEM,295
33
+ ositah/utils/exceptions.py,sha256=ZVngkr28pBxO-kZAeKW9FWAFyhzuWL98-S92mieHMSk,1911
34
+ ositah/utils/hito_db.py,sha256=awVGrd1DAyj6BaEkLjTVN1l9A5SjZUJ1-fQ5PAik7bI,1510
35
+ ositah/utils/hito_db_model.py,sha256=GvCHp5u-mPQinbZPvF6ONJAWIc2no1KN_VNJv6NCaPk,9356
36
+ ositah/utils/menus.py,sha256=Xoyo2ySX0MD7phzyO5WjEcR0PCXwsX1TSrzONXnX4yI,12005
37
+ ositah/utils/period.py,sha256=ZuaiZ2gvSIjd23isvygEVoAvonH4ehbexjrS4EwSGyI,4258
38
+ ositah/utils/projects.py,sha256=hdbjXa0pGg1KLm---TgyxPOI0qcNaW64QBWSVbrgjeY,43543
39
+ ositah/utils/teams.py,sha256=K8Z6kqs-kFpNiIg6wgmmZ3_tmfUPaB7wp0OAGmmZPG4,1234
40
+ ositah/utils/utils.py,sha256=NQq0roHDvIkKj1gl88yu3bvloH0dPnBE1rKXVP_hdK4,17082
41
+ ositah-25.9.dev1.dist-info/licenses/LICENSE,sha256=2C86YWCx1fvz92WySupcb6_t4NhHCVPE_ucy0YMTuoc,1550
42
+ ositah-25.9.dev1.dist-info/METADATA,sha256=Kn3pGb54eJmbeDsGgekFm8HWrnoS5OjZzYzoJRw-b94,8075
43
+ ositah-25.9.dev1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
+ ositah-25.9.dev1.dist-info/entry_points.txt,sha256=t9oDDLUO1LwHJewlE862LbJMHpDTEyqbeUAPw_F7Q3I,44
45
+ ositah-25.9.dev1.dist-info/top_level.txt,sha256=3kfj_oK4xoZFt0nsw6KKT_aoqshELBu0ryLXECbcqNI,7
46
+ ositah-25.9.dev1.dist-info/RECORD,,
@@ -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,46 +0,0 @@
1
- ositah/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- ositah/app.py,sha256=08HiP5eTk9fT4k8bU5V9QIktCeNGbq1hyJdlyB54Ni8,411
3
- ositah/main.py,sha256=UQVLZwaDdcsuc5tISd12R_NOB230TfPOtW74A3Yc3tw,15195
4
- ositah/ositah.example.cfg,sha256=mUIRT2yOcpD5Yxani8mjdx3C_Klt3HIbZ5D5dBZvCvA,7771
5
- ositah/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- ositah/apps/analysis.py,sha256=6NRs2p_pRKvfXp4FER3Md9ur45jinZ8FMm-IcYbSujI,27849
7
- ositah/apps/export.py,sha256=2sa6turNIuN3KWvF-8oR7NhqpamLk6gFbBM3dM_3ASA,47346
8
- ositah/apps/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- ositah/apps/configuration/callbacks.py,sha256=uIKO23PxuCgqhz_S8Df0_3j_SP4J2_ed1oaEct657YI,32539
10
- ositah/apps/configuration/main.py,sha256=BDvQjYv2wMFt2rMRjU4rbMetvZji6ROKKd7Fs-eYavI,19803
11
- ositah/apps/configuration/parameters.py,sha256=hKlRVsHByYWt9qASFLye3edBYwcoBP6nQNsnXHy1Cr0,3788
12
- ositah/apps/configuration/tools.py,sha256=a4Rerur1O4tPqm1Sfbk0b0tzunjXmmHhe3WknOa6gnU,3870
13
- ositah/apps/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- ositah/apps/validation/callbacks.py,sha256=ty-on82HU9QwFCYODBF3AWbxgbyq3K4M2VehGAYnwzs,9317
15
- ositah/apps/validation/main.py,sha256=GKmBQKvY29xlS0gYtlarVvhlUbiHQmkqB7BLrHaG84o,2806
16
- ositah/apps/validation/parameters.py,sha256=NZsSoAbg9dnFUA_2mMVBY_MiN-SoMEbHnvIXMlRZ78s,978
17
- ositah/apps/validation/tables.py,sha256=npkC6B1wavRx7muKvKG720re2C4ClIvY9a6VqvXe34o,23810
18
- ositah/apps/validation/tools.py,sha256=mQ1Zju6HgrxY05TdbXdyO6jCTG0F9kbOGKqjnLDO1t4,18248
19
- ositah/assets/arrow_down_up.svg,sha256=LAJBy5Yp7N7e1SOvAKXbOfkO520YGHhny6DbC65V2xw,500
20
- ositah/assets/ositah.css,sha256=km9K31wGxGDSe6xML_vHdkQ62Yhqg4JMHYwdIakVP_A,1041
21
- ositah/assets/sort_ascending.svg,sha256=_a6X69CrBYkrmWB_rcKXH4HxwXaWzbwWFSV-Swar6pk,589
22
- ositah/assets/sort_descending.svg,sha256=UlwIIbXw9oBlmGUMibyvN3Ogkvddy7uwEbaI69bPSrY,613
23
- ositah/assets/sorttable.js,sha256=7Q2E35aZGG-T5A_F8ah0SJngL-NW-ZdVLA695J0tX6U,16979
24
- ositah/static/style.css,sha256=km9K31wGxGDSe6xML_vHdkQ62Yhqg4JMHYwdIakVP_A,1041
25
- ositah/templates/base.html,sha256=F7CXv5MjKIVEvOcG3DXDVYiVbRQZss-dpNyS4e_8-go,692
26
- ositah/templates/bootstrap_login.html,sha256=PSFVJ0StIC6q_iinM-SQQUCNWyz8QpEfLrp7oWeuujA,1570
27
- ositah/templates/login_form.html,sha256=b-yQRgeSJNEByQGrxvwEb56NLkNBRWfTvu5cHSdn10I,1007
28
- ositah/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- ositah/utils/agents.py,sha256=TqH5qu6aJzos7p8uhDjQ2zNXtiRrF_7_xGh7zbXGoFE,4606
30
- ositah/utils/authentication.py,sha256=oZ9OOzjjqD4y5RL_ZI4oW8LVT-A0XA7kNW9BTiz_VLM,8862
31
- ositah/utils/cache.py,sha256=qkXsP7ROgrn06y74gXXz8Ihj1r14DH6qW-fVJIqmrTU,485
32
- ositah/utils/core.py,sha256=TIIPNPxZSIAMUaZdIkrnfRZXtxQ-bC43OhhKdcTncDE,282
33
- ositah/utils/exceptions.py,sha256=c5Nkf-x7V7kKc8jGK8kC8QwM3tJE9RCaHCokxGcLJWU,1847
34
- ositah/utils/hito_db.py,sha256=L42WxXLim9-Sp6ULndcSIZoGCiBWhTgB_vSGZqdqigY,1459
35
- ositah/utils/hito_db_model.py,sha256=QNVI_-dLq2NzuN6FwB83oHaeBehSK4W0AJI0n2b6lyw,9103
36
- ositah/utils/menus.py,sha256=dEggQusmHM3NVEZb-zusLvhNcmDMArtdY4hpeilEumU,11666
37
- ositah/utils/period.py,sha256=eMksJVd4Ns8ujd9Mtfw4H741CPlDa66kRXWMg5oNpmY,4119
38
- ositah/utils/projects.py,sha256=2ChMSaqUvT35Tef6zw319HmUde9WKNO2hfmdDh7YijM,42365
39
- ositah/utils/teams.py,sha256=F6icwpcR7vsQ-uylXWy_xx6rZmVqoqCHAhCg9bVkh5c,1192
40
- ositah/utils/utils.py,sha256=sWZ0lzIWLK957H-nOrmj_MMxozFPZYCyGCYsa_Nvzkw,16608
41
- ositah-25.6.dev1.dist-info/licenses/LICENSE,sha256=FrnsaysvwlpDeWzK6ZHnOVHgQcAIMUka3xrQD0AjIA0,1521
42
- ositah-25.6.dev1.dist-info/METADATA,sha256=OBIE6eXTvTMnLg7FzdzeNnCHDBYserW-_18a6fpQWUk,7974
43
- ositah-25.6.dev1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
- ositah-25.6.dev1.dist-info/entry_points.txt,sha256=t9oDDLUO1LwHJewlE862LbJMHpDTEyqbeUAPw_F7Q3I,44
45
- ositah-25.6.dev1.dist-info/top_level.txt,sha256=3kfj_oK4xoZFt0nsw6KKT_aoqshELBu0ryLXECbcqNI,7
46
- ositah-25.6.dev1.dist-info/RECORD,,