ltisuite-26-0 0__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.
- ltisuite_26_0-0/LICENSE +66 -0
- ltisuite_26_0-0/PKG-INFO +120 -0
- ltisuite_26_0-0/README.md +88 -0
- ltisuite_26_0-0/pyproject.toml +39 -0
- ltisuite_26_0-0/src/ltisuite_26_0/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/api/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/api/item.py +117 -0
- ltisuite_26_0-0/src/ltisuite_26_0/api/search.py +619 -0
- ltisuite_26_0-0/src/ltisuite_26_0/appsaas/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/appsaas/admininst.py +86 -0
- ltisuite_26_0-0/src/ltisuite_26_0/appsaas/dptresinstmgr.py +83 -0
- ltisuite_26_0-0/src/ltisuite_26_0/appsaas/instsbackupinplace.py +22 -0
- ltisuite_26_0-0/src/ltisuite_26_0/appsaas/instsclustermgr.py +85 -0
- ltisuite_26_0-0/src/ltisuite_26_0/common/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/common/servlet.py +12 -0
- ltisuite_26_0-0/src/ltisuite_26_0/common/svc.py +23 -0
- ltisuite_26_0-0/src/ltisuite_26_0/common/utils.py +131 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/actlogjson.py +7 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/adminserver.py +20 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/adminuser.py +113 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/backup.py +154 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/backupinplace.py +28 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/executor.py +72 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/maintenance.py +20 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/ping.py +8 -0
- ltisuite_26_0-0/src/ltisuite_26_0/core/strongbox.py +47 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/actor.py +8 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/engine.py +40 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/ltilaunch.py +53 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/ltimgr.py +33 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/ltisession.py +10 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/participant.py +8 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/projectAdmin.py +42 -0
- ltisuite_26_0-0/src/ltisuite_26_0/distrib/projectsonres.py +29 -0
- ltisuite_26_0-0/src/ltisuite_26_0/orient/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/orient/adminodb.py +38 -0
- ltisuite_26_0-0/src/ltisuite_26_0/portal.py +1122 -0
- ltisuite_26_0-0/src/ltisuite_26_0/portlets.py +428 -0
- ltisuite_26_0-0/src/ltisuite_26_0/public_default_conf.json +1 -0
- ltisuite_26_0-0/src/ltisuite_26_0/store/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/store/assetsctrl.py +16 -0
- ltisuite_26_0-0/src/ltisuite_26_0/store/cidserver.py +92 -0
- ltisuite_26_0-0/src/ltisuite_26_0/store/storesquare.py +30 -0
- ltisuite_26_0-0/src/ltisuite_26_0/system_default_conf.json +1 -0
- ltisuite_26_0-0/src/ltisuite_26_0/urltree/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/urltree/servlets.py +63 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/__init__.py +2 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/adminpack.py +247 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/adminwsp.py +258 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/drf.py +21 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/drv.py +40 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/export.py +99 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/gen.py +73 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/history.py +36 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/importSvc.py +28 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/itemdyngen.py +25 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/itemtype.py +32 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/lifecycle.py +29 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/search.py +22 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/version.py +16 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/wspmetaeditor.py +71 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/wspsrc.py +172 -0
- ltisuite_26_0-0/src/ltisuite_26_0/wsp/wsptask.py +62 -0
ltisuite_26_0-0/LICENSE
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
scenari.kelis.fr
|
|
2
|
+
LTI-suite END-USER SOFTWARE LICENSE AGREEMENT
|
|
3
|
+
|
|
4
|
+
A source code version of LTI-suite that you may use, modify and
|
|
5
|
+
distribute is available to you free-of-charge from
|
|
6
|
+
https://download.scenari.software/LTI-suite
|
|
7
|
+
under the MPL 1.1, GPL 2.0, LGPL 2.1 or CeCILL 2.0 license.
|
|
8
|
+
|
|
9
|
+
The accompanying executable code version of ##app.name## and related
|
|
10
|
+
documentation (the "product") is made available to you under the terms of this
|
|
11
|
+
LTI-suite end-user software license agreement (the "agreement").
|
|
12
|
+
|
|
13
|
+
By selecting the "accept" option, or by installing or using ##app.name##,
|
|
14
|
+
you are consenting to be bound by the agreement. If you do not agree to the
|
|
15
|
+
terms and conditions of this agreement, do not selecting the "accept" option,
|
|
16
|
+
and do not install or use any part of ##app.name##.
|
|
17
|
+
|
|
18
|
+
During the LTI-suite installation process, and at later times, you may
|
|
19
|
+
be given the option of installing additional components from third-party
|
|
20
|
+
software providers. The installation and use of those third-party components
|
|
21
|
+
may be governed by additional license agreements.
|
|
22
|
+
|
|
23
|
+
1. LICENSE GRANT. scenari.kelis.fr grants you a
|
|
24
|
+
non-exclusive license to use the executable code version of the product.
|
|
25
|
+
This agreement will also govern any software upgrades provided by
|
|
26
|
+
scenari.kelis.fr that replace and/or supplement the original product,
|
|
27
|
+
unless such upgrades are accompanied by a separate license, in which case
|
|
28
|
+
the terms of that license will govern.
|
|
29
|
+
|
|
30
|
+
2. TERMINATION. If you breach this agreement your right to use the product will
|
|
31
|
+
terminate immediately and without notice, but all provisions of this
|
|
32
|
+
agreement except the license grant (paragraph 1) will survive termination
|
|
33
|
+
and continue in effect. Upon termination, you must destroy all copies of the
|
|
34
|
+
product.
|
|
35
|
+
|
|
36
|
+
3. PROPRIETARY RIGHTS. Portions of the Product are available in source code
|
|
37
|
+
form under the terms of the MPL 1.1, GPL 2.0, LGPL 2.1 or CeCILL 2.0
|
|
38
|
+
(collectively,"open source licenses") from https://download.scenari.software/LTI-suite.
|
|
39
|
+
Nothing in this agreement will be construed to limit any rights granted
|
|
40
|
+
under the open source licenses. Subject to the foregoing,
|
|
41
|
+
scenari.kelis.fr, for itself and on behalf of its licensors, hereby
|
|
42
|
+
reserves all intellectual property rights in the product, except for the
|
|
43
|
+
rights expressly granted in this agreement. You may not remove or alter any
|
|
44
|
+
trademark, logo, copyright or other proprietary notice in or on the product.
|
|
45
|
+
This license does not grant you any right to use the trademarks, service
|
|
46
|
+
marks or logos of scenari.kelis.fr or its licensors.
|
|
47
|
+
|
|
48
|
+
4. DISCLAIMER OF WARRANTY. The product is provided "as is" with all faults.
|
|
49
|
+
To the extent permitted by law, scenari.kelis.fr and
|
|
50
|
+
scenari.kelis.fr's licensors hereby disclaim all warranties, whether
|
|
51
|
+
express or implied, including without limitation warranties that the product
|
|
52
|
+
is free of defects, merchantable, fit for a particular purpose and
|
|
53
|
+
non-infringing. You bear entire risk as to selecting the product for your
|
|
54
|
+
purposes and as to the quality and performance of the product. This
|
|
55
|
+
limitation will apply notwithstanding the failure of essential purpose of
|
|
56
|
+
any remedy. Some jurisdictions do not allow the exclusion or limitation of
|
|
57
|
+
implied warranties, so this disclaimer may not apply to you.
|
|
58
|
+
|
|
59
|
+
5. LIMITATION OF LIABILITY. Except as required by law, scenari.kelis.fr
|
|
60
|
+
will not be liable for any indirect, special, incidental, consequential or
|
|
61
|
+
exemplary damages arising out of or in any way relating to this agreement
|
|
62
|
+
or the use of or inability to use the product, including without limitation
|
|
63
|
+
damages for loss of goodwill, work stoppage, lost profits, loss of data,
|
|
64
|
+
and computer failure or malfunction, even if advised of the possibility of
|
|
65
|
+
such damages and regardless of the theory (contract, tort or otherwise)
|
|
66
|
+
upon which such claim is based.
|
ltisuite_26_0-0/PKG-INFO
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ltisuite_26_0
|
|
3
|
+
Version: 0
|
|
4
|
+
Summary: Application d'administration en ligne de commande et package de développement Python pour LTI-suite 26.0
|
|
5
|
+
Author-email: Kelis <contact@kelis.fr>
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Classifier: Intended Audience :: System Administrators
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: CeCILL-B Free Software License Agreement (CECILL-B)
|
|
11
|
+
Classifier: License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)
|
|
12
|
+
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
|
|
13
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
|
|
21
|
+
Classifier: Topic :: Documentation
|
|
22
|
+
Classifier: Topic :: Terminals
|
|
23
|
+
Classifier: Topic :: Terminals :: Terminal Emulators/X Terminals
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: requests>2
|
|
27
|
+
Project-URL: Documentation, https://doc.scenari.software/${product.name}@${product.version}
|
|
28
|
+
Project-URL: Forum, https://forums.scenari.org/c/solserv/${product.name}
|
|
29
|
+
Project-URL: Homepage, https://scenari.software
|
|
30
|
+
Project-URL: Source, https://source.scenari.software/git/dev-core
|
|
31
|
+
|
|
32
|
+
# Application d'administration en ligne de commande et package de développement Python pour LTI-suite 26.0
|
|
33
|
+
|
|
34
|
+
`ltisuite_26_0` fournit :
|
|
35
|
+
* une application en ligne de commande permettant d'administrer un serveur LTI-suite 26.0 ;
|
|
36
|
+
* un package de développement Python permettant d'instancier un objet `portal` à utiliser avec l'API [scenaripy_api](https://pypi.org/project/scenaripy-api).
|
|
37
|
+
|
|
38
|
+
## Utilisation de la commande d'administration
|
|
39
|
+
```
|
|
40
|
+
ltisuite_26_0 [commande] [paramètres] [conf] [-v]
|
|
41
|
+
- [commande] : Voir la liste des commandes disponibles avec --help.
|
|
42
|
+
- [paramètres] : Certaines commandes acceptent des paramètres, voir les détails avec --help
|
|
43
|
+
|
|
44
|
+
- [conf] : paramètres de la configuration du serveur. Valeurs possibles :
|
|
45
|
+
-u [login] ou --user [login] : surcharge du nom de l'utilisateur
|
|
46
|
+
-p [password] ou --password [password] : surcharge du mot de passe
|
|
47
|
+
-c [./maconf.json] ou --conf [./maconf.json] : surcharge de la conf du portail
|
|
48
|
+
-l ou --local : chargement de la conf système pour un usage depuis le serveur hébergeant LTI-suite 26.0
|
|
49
|
+
|
|
50
|
+
- [-v] : ajouter -v ou --verbose [level] pour rendre l'exécutable plus bavard.
|
|
51
|
+
Valeurs de level possibles :
|
|
52
|
+
-v debug : tous les logs de niveau debug
|
|
53
|
+
-v info : tous les logs de niveau info (une ligne de log par appel réussi)
|
|
54
|
+
-v warning : tous les logs de niveau warning
|
|
55
|
+
-v error : tous les logs de niveau erreur (valeur par défaut). Les logs d'erreur sont également publiées sur le flux stderr.
|
|
56
|
+
-v none : désactive les logs d'erreur sur la sortie standard (les erreurs restent publiées sur le flux stderr).
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Utiliser l'aide intégrée (--help) pour consulter la liste des commandes disponibles.
|
|
60
|
+
|
|
61
|
+
```shell
|
|
62
|
+
# Affichage de l'aide
|
|
63
|
+
ltisuite_26_0 --help
|
|
64
|
+
|
|
65
|
+
# Enregistrer la configuration dans un fichier pour éditer URLs, user ou mot de passe
|
|
66
|
+
ltisuite_26_0 print_conf > conf.json
|
|
67
|
+
|
|
68
|
+
# Ping avec verbosité `debug` pour tester sa configuration
|
|
69
|
+
ltisuite_26_0 ping -c conf.json -v debug
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Exemples de scripts pour de gestion des backups
|
|
73
|
+
**Se référer à la [documentation en ligne](https://doc.scenari.software/${product.name}@${product.version}/linux) pour plus de détails sur les backups**
|
|
74
|
+
|
|
75
|
+
Pour créer une copie des données à backuper
|
|
76
|
+
```shell
|
|
77
|
+
ltisuite_26_0 backup_pre -c conf.json
|
|
78
|
+
# scripter ici la sauvegarde des données
|
|
79
|
+
ltisuite_26_0 backup_post -c conf.json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Pour un backup du répertoire de données sans créer de copie
|
|
83
|
+
```shell
|
|
84
|
+
ltisuite_26_0 backupinplace_pre -c conf.json
|
|
85
|
+
# scripter ici la sauvegarde des données
|
|
86
|
+
ltisuite_26_0 backupinplace_post -c conf.json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Scripter ses backups en Python
|
|
90
|
+
```python
|
|
91
|
+
import ltisuite_26_0.portal
|
|
92
|
+
|
|
93
|
+
portal = ltisuite_26_0.portal.new_portal(overridden_conf_file="conf.json")
|
|
94
|
+
portal.backup_pre() # ou portal.backupinplace_pre()
|
|
95
|
+
# Scripter ici la sauvegarde des données
|
|
96
|
+
portal.backup_post() # ou portal.backupinplace_pre()
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Utiliser ce package avec scenaripy_api
|
|
100
|
+
|
|
101
|
+
Vous devez installer `scenaripy_api` au préalable :
|
|
102
|
+
```shell
|
|
103
|
+
pip install scenaripy_api
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Quelle que soit la version de votre serveur, il est recomandé d'utiliser **la dernière version** de `scenaripy_api`.
|
|
107
|
+
|
|
108
|
+
Exemple d'utilisation de l'API :
|
|
109
|
+
```python
|
|
110
|
+
import scenaripy_api
|
|
111
|
+
import ltisuite_26_0.portal
|
|
112
|
+
|
|
113
|
+
# Création de l'objet portal
|
|
114
|
+
portal = ltisuite_26_0.portal.new_portal(overridden_conf_file="conf.json")
|
|
115
|
+
|
|
116
|
+
# Appel d'une méthode de l'API
|
|
117
|
+
scenaripy_api.create_or_update_user(portal, account="mon-compte-user", first_name="Prénom", last_name="Nom", roles=["main:reader"], other_props={"password" : "Mon-Password"})
|
|
118
|
+
```
|
|
119
|
+
Pour plus d'information, se référer à la [documentation de l'API](https://doc.scenari.software/SCENARIbuilder/apipython).
|
|
120
|
+
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Application d'administration en ligne de commande et package de développement Python pour LTI-suite 26.0
|
|
2
|
+
|
|
3
|
+
`ltisuite_26_0` fournit :
|
|
4
|
+
* une application en ligne de commande permettant d'administrer un serveur LTI-suite 26.0 ;
|
|
5
|
+
* un package de développement Python permettant d'instancier un objet `portal` à utiliser avec l'API [scenaripy_api](https://pypi.org/project/scenaripy-api).
|
|
6
|
+
|
|
7
|
+
## Utilisation de la commande d'administration
|
|
8
|
+
```
|
|
9
|
+
ltisuite_26_0 [commande] [paramètres] [conf] [-v]
|
|
10
|
+
- [commande] : Voir la liste des commandes disponibles avec --help.
|
|
11
|
+
- [paramètres] : Certaines commandes acceptent des paramètres, voir les détails avec --help
|
|
12
|
+
|
|
13
|
+
- [conf] : paramètres de la configuration du serveur. Valeurs possibles :
|
|
14
|
+
-u [login] ou --user [login] : surcharge du nom de l'utilisateur
|
|
15
|
+
-p [password] ou --password [password] : surcharge du mot de passe
|
|
16
|
+
-c [./maconf.json] ou --conf [./maconf.json] : surcharge de la conf du portail
|
|
17
|
+
-l ou --local : chargement de la conf système pour un usage depuis le serveur hébergeant LTI-suite 26.0
|
|
18
|
+
|
|
19
|
+
- [-v] : ajouter -v ou --verbose [level] pour rendre l'exécutable plus bavard.
|
|
20
|
+
Valeurs de level possibles :
|
|
21
|
+
-v debug : tous les logs de niveau debug
|
|
22
|
+
-v info : tous les logs de niveau info (une ligne de log par appel réussi)
|
|
23
|
+
-v warning : tous les logs de niveau warning
|
|
24
|
+
-v error : tous les logs de niveau erreur (valeur par défaut). Les logs d'erreur sont également publiées sur le flux stderr.
|
|
25
|
+
-v none : désactive les logs d'erreur sur la sortie standard (les erreurs restent publiées sur le flux stderr).
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Utiliser l'aide intégrée (--help) pour consulter la liste des commandes disponibles.
|
|
29
|
+
|
|
30
|
+
```shell
|
|
31
|
+
# Affichage de l'aide
|
|
32
|
+
ltisuite_26_0 --help
|
|
33
|
+
|
|
34
|
+
# Enregistrer la configuration dans un fichier pour éditer URLs, user ou mot de passe
|
|
35
|
+
ltisuite_26_0 print_conf > conf.json
|
|
36
|
+
|
|
37
|
+
# Ping avec verbosité `debug` pour tester sa configuration
|
|
38
|
+
ltisuite_26_0 ping -c conf.json -v debug
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Exemples de scripts pour de gestion des backups
|
|
42
|
+
**Se référer à la [documentation en ligne](https://doc.scenari.software/${product.name}@${product.version}/linux) pour plus de détails sur les backups**
|
|
43
|
+
|
|
44
|
+
Pour créer une copie des données à backuper
|
|
45
|
+
```shell
|
|
46
|
+
ltisuite_26_0 backup_pre -c conf.json
|
|
47
|
+
# scripter ici la sauvegarde des données
|
|
48
|
+
ltisuite_26_0 backup_post -c conf.json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Pour un backup du répertoire de données sans créer de copie
|
|
52
|
+
```shell
|
|
53
|
+
ltisuite_26_0 backupinplace_pre -c conf.json
|
|
54
|
+
# scripter ici la sauvegarde des données
|
|
55
|
+
ltisuite_26_0 backupinplace_post -c conf.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Scripter ses backups en Python
|
|
59
|
+
```python
|
|
60
|
+
import ltisuite_26_0.portal
|
|
61
|
+
|
|
62
|
+
portal = ltisuite_26_0.portal.new_portal(overridden_conf_file="conf.json")
|
|
63
|
+
portal.backup_pre() # ou portal.backupinplace_pre()
|
|
64
|
+
# Scripter ici la sauvegarde des données
|
|
65
|
+
portal.backup_post() # ou portal.backupinplace_pre()
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Utiliser ce package avec scenaripy_api
|
|
69
|
+
|
|
70
|
+
Vous devez installer `scenaripy_api` au préalable :
|
|
71
|
+
```shell
|
|
72
|
+
pip install scenaripy_api
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Quelle que soit la version de votre serveur, il est recomandé d'utiliser **la dernière version** de `scenaripy_api`.
|
|
76
|
+
|
|
77
|
+
Exemple d'utilisation de l'API :
|
|
78
|
+
```python
|
|
79
|
+
import scenaripy_api
|
|
80
|
+
import ltisuite_26_0.portal
|
|
81
|
+
|
|
82
|
+
# Création de l'objet portal
|
|
83
|
+
portal = ltisuite_26_0.portal.new_portal(overridden_conf_file="conf.json")
|
|
84
|
+
|
|
85
|
+
# Appel d'une méthode de l'API
|
|
86
|
+
scenaripy_api.create_or_update_user(portal, account="mon-compte-user", first_name="Prénom", last_name="Nom", roles=["main:reader"], other_props={"password" : "Mon-Password"})
|
|
87
|
+
```
|
|
88
|
+
Pour plus d'information, se référer à la [documentation de l'API](https://doc.scenari.software/SCENARIbuilder/apipython).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["flit_core >=3.9,<4"]
|
|
3
|
+
build-backend = "flit_core.buildapi"
|
|
4
|
+
[project]
|
|
5
|
+
name = "ltisuite_26_0"
|
|
6
|
+
version = "0"
|
|
7
|
+
description = "Application d'administration en ligne de commande et package de développement Python pour LTI-suite 26.0"
|
|
8
|
+
license = {file = "LICENSE"}
|
|
9
|
+
authors = [{name = "Kelis", email = "contact@kelis.fr"}]
|
|
10
|
+
readme="README.md"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
dependencies = ["requests>2"]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Intended Audience :: System Administrators",
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"License :: CeCILL-B Free Software License Agreement (CECILL-B)",
|
|
17
|
+
"License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)",
|
|
18
|
+
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
|
|
19
|
+
"License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Programming Language :: Python :: 3.13",
|
|
26
|
+
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System",
|
|
27
|
+
"Topic :: Documentation",
|
|
28
|
+
"Topic :: Terminals",
|
|
29
|
+
"Topic :: Terminals :: Terminal Emulators/X Terminals",
|
|
30
|
+
"Topic :: Software Development :: Libraries :: Python Modules"
|
|
31
|
+
]
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage= "https://scenari.software"
|
|
34
|
+
Documentation= "https://doc.scenari.software/${product.name}@${product.version}"
|
|
35
|
+
Source= "https://source.scenari.software/git/dev-core"
|
|
36
|
+
Forum= "https://forums.scenari.org/c/solserv/${product.name}"
|
|
37
|
+
|
|
38
|
+
[project.scripts]
|
|
39
|
+
ltisuite_26_0 = "ltisuite_26_0.portal:__main"
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"""Ce module contient des constantes (sous forme d'Enum) et structures de données (préfixe pour items spécifiques, statuts de dérivation ou de calque de travail, champs de description d'un item et structure de données spécifique aux exports pour envoi des données)."""
|
|
2
|
+
|
|
3
|
+
from typing import TypedDict, NotRequired
|
|
4
|
+
|
|
5
|
+
from ..common.utils import StrEnum
|
|
6
|
+
|
|
7
|
+
class EItemPrefix(StrEnum):
|
|
8
|
+
"""Liste de valeurs de préfixe d'un chemin vers un item (src_uri). Les fonctions adressées par ces préfixes sont disponibles en DB uniquement."""
|
|
9
|
+
AIR_PREFIX = "/~air/" # Préfixe d'un air item
|
|
10
|
+
"""Test attribute doc"""
|
|
11
|
+
EXT_PREFIX = "/~ext/" # Préfixe d'un item externe
|
|
12
|
+
TRANSIENT_PREFIX = "/~transient/"
|
|
13
|
+
ANNOT_PREFIX = "/~annot/"
|
|
14
|
+
HISTORY_PREFIX = "/~history/" # Préfixe d'un item en historique
|
|
15
|
+
TRASH_PREFIX = "/~history~trash/" # Préfixe d'un item en corbeille
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class EDrvState(StrEnum):
|
|
19
|
+
"""État d'un item dans un atelier dérivé."""
|
|
20
|
+
erased = "erased" # Item supprimé
|
|
21
|
+
notOverriden = "notOverriden" # Item non surchargé, jamais marqué "achevé"
|
|
22
|
+
notOverridenDone = "notOverridenDone" # Item non surchargé, marqué achevé
|
|
23
|
+
createdDone = "createdDone" # Item spécifique à l'atelier dérivé, marqué achevé
|
|
24
|
+
overridenDone = "overridenDone" # Item surchargé dans l'atelier dérivé, marqué achevé
|
|
25
|
+
createdNew = "createdNew" # Item spécifique à l'atelier dérivé, mais non marqué achevé
|
|
26
|
+
overridenNew = "overridenNew" # Item surchargé dans l'atelier dérivé, mais non marqué achevé
|
|
27
|
+
notOverridenDirty = "notOverridenDirty" # Item non surchargé, marqué achevé puis déphasé
|
|
28
|
+
createdDirty = "createdDirty" # Item spécifique à l'atelier dérivé, marqué achevé puis déphasé
|
|
29
|
+
overridenDirty = "overridenDirty" # Item surchargé dans l'atelier dérivé, marqué achevé puis déphasé
|
|
30
|
+
createdNotComputed = "createdNotComputed" # Item spécifique à l'atelier dérivé, état inconnu
|
|
31
|
+
notComputed = "notComputed" # État de l'item inconnu
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class EDrfState(StrEnum):
|
|
35
|
+
"""État d'un item dans un atelier calque de travail."""
|
|
36
|
+
erased = "erased" # Item supprimé
|
|
37
|
+
notOverriden = "notOverriden" # Item inchangé
|
|
38
|
+
overriden = "overriden" # Item modifié
|
|
39
|
+
created = "created" # Item créé dans l'atelier calque
|
|
40
|
+
createdDeleted = "createdDeleted" # Item créé puis supprimé
|
|
41
|
+
notComputed = "notComputed" # État de l'item inconnu
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class ESrcField(StrEnum):
|
|
45
|
+
"""Liste des champs de données possiblement associés à un item."""
|
|
46
|
+
# NB : seuls les champs commentés avec le caractère # ont valeur d'API.
|
|
47
|
+
srcUri = "srcUri" # Chemin de l'item.
|
|
48
|
+
srcId = "srcId" # ID d'un item (attention, un ID n'est pas stable). [NON API]
|
|
49
|
+
itSubItem = "itSubItem" # XML ID d'un sub-item. Supporté par certains modèles uniquement. [NON API]
|
|
50
|
+
|
|
51
|
+
item = "item" # demande à a fois : itSt, itSgn, itModel [NON API]
|
|
52
|
+
sdOdb = "sdOdb" # demande à la fois : srcUri, srcSt, srcDt, srcRi, srcRoles, srcId, srcStamp, srcUser, itSt, itSgn et itModel [NON API]
|
|
53
|
+
|
|
54
|
+
srcNm = "srcNm" # Retourne le nom de la ressource. [NON API]
|
|
55
|
+
srcSt = "srcSt" # Retourne le status de la ressource (de type int, 1 pour un fichier, 2 pour un dossier et -1 si la ressource n'existe pas). [NON API]
|
|
56
|
+
srcDt = "srcDt" # `Timestamp` de dernière modification.
|
|
57
|
+
srcStamp = "srcStamp" # Retourne une chaîne d'empreinte (hash) du contenu. [NON API]
|
|
58
|
+
srcTreeDt = "srcTreeDt" # Retourne la date de dernière modification de la ressource et son arborescence fille. [NON API]
|
|
59
|
+
srcSi = "srcSi" # Retourne la taille du contenu. [NON API]
|
|
60
|
+
srcTy = "srcTy" # Retourne le content-type associé à ce contenu. [NON API]
|
|
61
|
+
srcRi = "srcRi" # Retourne les droits d'accès sous la forme d'un int. Ce champ est un indice utilisé par l'IHM Scenari. Ne pas utiliser en dehors. [NON API]
|
|
62
|
+
srcRoles = "srcRoles" # Retourne les rôles résolus pour cette ressource. [NON API]
|
|
63
|
+
srcUser = "srcUser" # Utilisateur ayant effectué la dernière modification.
|
|
64
|
+
srcLiveUri = "srcLiveUri" # URL "live" d'un nœud placé en historique ou supprimé. [NON API]
|
|
65
|
+
srcTrashed = "srcTrashed" # srcTrashed pour savoir si ce nœud a été explicitement placé en corbeille (contrairement à `srcSt` qui renvoie -1 si le nœud OU au moins un nœud de son contexte ascendant a été supprimé). [NON API]
|
|
66
|
+
metaComment = "metaComment" # Pour récupérer un commentaire associé à cet item (pour une entrée d'historique par exemple). [NON API]
|
|
67
|
+
metaFlag = "metaFlag" # Flag (retourné sous forme de int) associé à cet item (pour une entrée d'historique par exemple). [NON API]
|
|
68
|
+
|
|
69
|
+
cidEndPoints = "cidEndPoints" # Liste des dernières destination d'envoi via CID de cet item. [NON API]
|
|
70
|
+
|
|
71
|
+
drvState = "drvState" # État de dérivation.
|
|
72
|
+
drvAxisDefCo = "drvAxisDefCo" # Axis auquel appartient le contenu par défaut de cette dérivation.
|
|
73
|
+
|
|
74
|
+
drfState = "drfState" # État de surcharge dans un atelier calque de travail.
|
|
75
|
+
|
|
76
|
+
itTi = "itTi" # Titre d'un item.
|
|
77
|
+
itSt = "itSt" # Statut d'un item (-1 : n'existe pas, -2 : item en conflit, -99 : statut inconnu, 1 : statut ok, 2 : contient des warnings, 3, item en erreur, 11 : état asynchrone d'un item en cours de validation). [NON API]
|
|
78
|
+
itSgn = "itSgn" # Signature de l'item. [NON API]
|
|
79
|
+
itModel = "itModel" # Code du modèle associé à l'item
|
|
80
|
+
itFullUriInOwnerWsp = "itFullUriInOwnerWsp" # fullUri d'un item dans son atelier propriétaire. Utilisé par l'atelier qui inclut un item externe. [NON API]
|
|
81
|
+
itSubItems = "itSubItems" # Liste des sub-items contenu dans cet item. [NON API]
|
|
82
|
+
itSubItemAnc = "itSubItemAnc" # Permet d'obtenir la liste des propriétés des subItems ancêtres du subItem pointé. [NON API]
|
|
83
|
+
|
|
84
|
+
lcSt = "lcSt" # État du cycle de vie.
|
|
85
|
+
lcDt = "lcDt" # Date du dernier changement de cycle de vie.
|
|
86
|
+
lcBy = "lcBy" # Utilisateur ayant déclenché le dernier changement de cycle de vie.
|
|
87
|
+
lcTrP = "lcTrP" # True si une transition est en cours. [NON API]
|
|
88
|
+
|
|
89
|
+
rspUsrs = "rspUsrs" # Pour obtenir une liste des users et de leurs responsabilités associés à un item donné. [NON API]
|
|
90
|
+
rspSt = "rspSt" # Statut des responsabilité de l'item (-1 : inconnu, 1 : ok, 3 : en erreur). [NON API]
|
|
91
|
+
|
|
92
|
+
tkPending = "tkPending" # La tâche est en cours. [NON API]
|
|
93
|
+
tkPendingCount = "tkPendingCount" # Nombre de tâches en cours associées à une source. [NON API]
|
|
94
|
+
tkForthcoming = "tkForthcoming" # La tâche est planifiée. [NON API]
|
|
95
|
+
tkForthcomingCount = "tkForthcomingCount" # Nombre de tâches planifiées associées à une source. [NON API]
|
|
96
|
+
|
|
97
|
+
tkDeadline = "tkDeadline" # Deadline de la tâche. [NON API]
|
|
98
|
+
tkCompletedDt = "tkCompletedDt" # Date du passage à l'état complété de la tâche. [NON API]
|
|
99
|
+
tkCompletedBy = "tkCompletedBy" # User qui a passé la tâche à l'état complété. [NON API]
|
|
100
|
+
|
|
101
|
+
actStage = "actStage" # État de l'action (completed, pending, forthcoming). [NON API]
|
|
102
|
+
actTi = "actTi" # Titre de l'action. [NON API]
|
|
103
|
+
actCts = "actCts" # Liste des source liées à cette action. [NON API]
|
|
104
|
+
|
|
105
|
+
wspOwner = "wspOwner" # Code de l'atelier propriétaire de la source. [NON API]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class JSendProps(TypedDict):
|
|
109
|
+
"""
|
|
110
|
+
Structure de données permettant de spécifier un envoi de contenu HTTP via le service remoteContent de Scenari.
|
|
111
|
+
"""
|
|
112
|
+
url: str
|
|
113
|
+
method: NotRequired[str] # Valeur par défaut : "GET"
|
|
114
|
+
timeout: NotRequired[int] # Pas de `timeout` par défaut
|
|
115
|
+
headerProps: NotRequired[dict[str, str | list[str]]]
|
|
116
|
+
addQSParams: NotRequired[dict[str, str]] # Ajout de querystring en plus de ceux possiblement présents dans l'URL
|
|
117
|
+
setQSParams: NotRequired[dict[str, str]] # Remplacement de querystring déjà présent dans l'URL
|