Solution CRM permettant la gestion d'évènements dans une base de données composée d'utilisateurs, séparés en deux groupes :
- Equipe de vente ("SalesTeam")
- Equipe de support ("SupportTeam")
Ainsi que de clients, contrats et évènements.
Chaque contrat est lié à un et un seul évènement. Chaque client, contrat est associé à un seul membre de l'équipe de vente. Chaque évènement est associé à un seul membre de l'équipe de support.
Seul un administrateur peut créer un nouvel utilisateur et définir son groupe.
De plus il possède un accès complet
en modification/suppression sur toute la base.
Un utilisateur n'a accès en lecture aux objets de la base avec lesquels il possède un lien direct/indirect.
Un utilisateur n'a accès en modification qu'aux objets de la base avec lesquels il possède in lien direct.
(Exemple: Un membre de l'équipe de support peut voir le client A pour lequel il est attribué comme contact d'un évènement du client A. Un membre de l'équiê de vente peut voir les contrats du client B s'il est le contact de vente du client B. Cependant, s'il n'est pas le contact associé aux contrats, ceux-ci seront en lecture seule.)
L'application possède un version API avec des endpoints pour chaque object qui compose la solution CRM
(/clients/, /contracts/, /events/).
L'ensemble de ses règles s'applique au front-end (django-admin) qu'à l'API gérer pa DRF
(django-rest-framework).
Par défaut, à la création d'un client/contrat, c'est l'utilisateur authentifié qui est attribué comme contact de vente. Il faut faire appel à un administrateur pour changer l'utilisateur rattaché à un client/contrat (les évènements étant pris en charge par l'équipe de vente, ils, peuvent modifier l'utilisateur associé comme contact du support en plus des administrateurs).
Un serveur PostgreSQL est nécéssaire pour héberger la base de donnée utilisé par défaut dans les settings du projet. (PostgreSQL docs, Création d'une base de donnée)
Les logs d'exceptions sont gérés par le package Sentry. (Sentry-python)
Une fois l'appliction télécharger, pour mettre en place :
-
A partir de votre terminal, se mettre au niveau du répertoire "EpicEventsCRM".
-
Créer un environnement virtuel avec la commande:
py -m venv venv
-
Activer l'environnement virtuel:
venv\Scripts\activate
-
Installer les bibliothèques nécessaires ai niveau du répertoire "EpicEventsCRM":
pip install -r requirements.txt
-
Configurer votre base de donnée (PostgreSQL par défaut) dans le fichier settings:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_db_name', # TestingDB by default in this project 'USER': 'your_postgres_user', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '5432', } }
-
Lancer le serveur Django:
py manage.py migrate
py manage.py runserver
-
Créer un administrateur:
py manage.py createsuperuser
Utiliser ensuite ces identifiants pour utiliser la plateforme front-end (endpoint: /admin/) ou tester les différents endpoints.