Metadata-Version: 2.1
Name: labandco
Version: 2.2.33
Summary: solution métier pour fluidifier les relations entre chercheurs et administration dans les universités et les EPST
Author: Abilian SAS
Requires-Python: >=3.9,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Dist: Flask-WeasyPrint
Requires-Dist: abilian-core (>=0.11.12)
Requires-Dist: apscheduler (>=3.6.3,<4.0.0)
Requires-Dist: attrs
Requires-Dist: cairocffi (>=1.0.2,<2.0.0)
Requires-Dist: devtools
Requires-Dist: diskcache (>=4.1,<5.0)
Requires-Dist: dotted
Requires-Dist: email_validator
Requires-Dist: flask-assets (<2)
Requires-Dist: flask-babel (<2)
Requires-Dist: flask-injector
Requires-Dist: flask-profiler (>=1.8,<2.0)
Requires-Dist: flask-redis
Requires-Dist: flask-smorest
Requires-Dist: glom
Requires-Dist: gunicorn (<20)
Requires-Dist: html2text
Requires-Dist: inflection
Requires-Dist: invoke (>=1.3,<2.0)
Requires-Dist: iso8601
Requires-Dist: jsonrpcserver (>=4.0,<5.0)
Requires-Dist: ldif (>=4,<5)
Requires-Dist: loguru (>=0.6.0,<0.7.0)
Requires-Dist: markupsafe (>=2,<2.1)
Requires-Dist: marshmallow (<3)
Requires-Dist: marshmallow-annotations
Requires-Dist: marshmallow-sqlalchemy
Requires-Dist: more-itertools
Requires-Dist: nox
Requires-Dist: pampy (>=0.3.0,<0.4.0)
Requires-Dist: pandas (>=1.2,<2.0)
Requires-Dist: psycopg2
Requires-Dist: python-dotenv (>=0.10.1,<0.11.0)
Requires-Dist: ramda (>=0.5.2,<0.6.0)
Requires-Dist: requests[security] (>=2.13,<3.0)
Requires-Dist: structlog
Requires-Dist: toolz
Requires-Dist: types-python-dateutil (>=2.8.10,<3.0.0)
Requires-Dist: types-pytz (>=2021.3.6,<2022.0.0)
Requires-Dist: types-requests (>=2.27.14,<3.0.0)
Requires-Dist: types-setuptools (>=57.4.11,<58.0.0)
Requires-Dist: werkzeug (<1)
Requires-Dist: wtforms (<3)
Description-Content-Type: text/markdown

# Lab&Co - solution métier pour fluidifier les relations entre chercheurs et administration

## A propos de Lab&Co

Lab&Co est un progiciel permettant aux établissements de recherche ou d'enseignement et de recherche(universités, EPST, etc.) de fluidifier les relations entre les chercheurs (porteurs de projets) et l'administration.

Il couvre notamment:

- Le recrutement de personnel sur contrat de projets (doctorants, bourses, CDD...)
- Les contrats de recherche (recherche partenariale, ANR, projets européens...)
- La valorisation de la recherche (logiciels, brevets, bases de donnée...)

## Illustration

<img src="https://raw.githubusercontent.com/abilian/labandco/main/doc/illustration.png">

### Historique

Lab&Co est développé par [Abilian](http://www.abilian.com/) en partenariat avec [Will Strategy](https://willstrategy.com/) depuis 2014 pour l'Université Pierre et Marie Curie (UPMC), devenue depuis Sorbonne Université.

Il est utilisé par plusieurs centaines de chercheurs et la soixantaine de personnes travaillant à la DR&I (Direction de la Recherche et de l'Innovation).

La version du code que vous consultez actuellement est la version "3.0" de l'application, qui été déployée fin 2019 à Sorbonne Université.

### Votre projet

Lab&Co peut être déployé dans votre établissement, après connexion à son annuaire LDAP et adaptation des modèles et des workflows à vos processus métiers.

Contactez-nous à: [contact@abilian.com](mailto:contact@abilian.com) pour toute demande d'information.


## Développement

### Installer en 1 ligne

Si votre machine de développement est "raisonnablement" configurée, vous pouvez installer Lab&Co localement en une ligne avec la commande:

    ./install.py

De manière alternative, si vous avez [Poetry](https://poetry.eustace.io/) installé, vous pouvez tapper:

    poetry install


### Installer un environnement de développement

1) Créer et activer un virtualenv (Python 3.9 pour l'instant)

2) Installer Poetry <https://github.com/sdispater/poetry>

3) Dans `/etc/hosts`, faire pointer `labster.local` sur `localhost`.

4) Tapper:

        poetry install
        yarn --cwd front


### Comment développper

En mode développement, il suffit de lancer `flask devserver`.

Puis lancer le navigateur sur: http://labster.local:5000/

Pour lancer les tests: `pytest` ou mieux `tox`.

Il y d'autres commandes utiles, tapper juste `flask` pour avoir la
liste.


### BDD de prod

Créer une base Postgresql `labster`:

    createdb labster

puis:

    flask create-db


### Migrations

    flask db migrate
    flask db upgrade

Doc: http://alembic.zzzcomputing.com/en/latest/tutorial.html


### Tests

1) Tests unitaires:

        pytest
        yarn --cwd front run test:unit

2) Tests e2e:

        flask cypress
        flask testcafe

3) Pour tester manuellement en tant qu'un autre utilisateur, utiliser l'url
`backdoor/uid=xxx` (see blueprints/auth/cas.py).


#### Tester l'envoi de mails

Lancer

    python -m smtpd -n -c DebuggingServer localhost:1025

et dans `DevConfig`

    # MAIL_SUPPRESS_SEND = True
    MAIL_SUPPRESS_SEND = False
    MAIL_SERVER = 'localhost'
    MAIL_PORT = 1025

Ainsi les mais envoyés seront affichés sur stdout.

Autre possibilité, mettre la variable que l'on veux changer (par rapport au défaut)
dans un fichier `.env` (similaire au fichier `.flaskenv` qui existe déjà).

Le fichier `.env` a priorité sur `.flaskenv`.

Pour les tests unitaires, voir la doc de [flask-mail](https://pythonhosted.org/Flask-Mail/).


## Architecture

L'application est constitué d'un backend en Python, utilisant notamment le framework Web Flask, l'ORM SQLAlchemy, et d'un front-end SPA en JavaScript utilisant le framework réactif Vuejs.

La communication entre front-end et back-end se fait soit en utilisant le paradigme REST (sans HATEOAS), soit le protocole JSON-RPC 2.0.

Le backend utilise également le framework Abilian-Core développé par Abilian. Il utilise également l'injection de dépendance grâce à la bibliothèque Injector (+ Flask-Injector).

L'authentification se fait en utilisant le protocole CAS implémenté par l'Université.

### Modèle de données (simplifié)

<img src="https://raw.githubusercontent.com/abilian/labandco/main/doc/model.png">



## FAQ

### L'application s'appelle-t-elle "Labster" ou "Lab&Co" ?

Le projet s'appelait initialement "Labster", d'où le nom encore donné au package principal et à certaines variables ou constantes. Il s'appelle à présent "Lab&Co".

