GithubHelp home page GithubHelp logo

germainlefebvre4 / nanny-api Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 518 KB

Nanny is an interface to manage your nanny salary. API is the API service of the app.

Python 89.45% HTML 9.62% Shell 0.62% Mako 0.31%
hacktoberfest

nanny-api's Introduction

Nanny API

API to run inside Nanny project.

Getting started

Install required packages:

sudo apt update
sudo apt install python3-pip python3-dev
pip install pipenv

Setup the database:

docker-compose up -d

Run the app:

pipenv update
pipenv run alembic upgrade head
pipenv run python app/initial_data.py
pipenv run uvicorn app.main:app --port=8080 --reload

Troubleshooting

Some distributions might miss some packages. These are some hints if needed:

# psycopg2
sudo apt install python3-psycopg2 libpq-dev
# numpy
sudo apt install libatlas-base-dev
# libxml package
sudo apt install libxml2-dev libxslt-dev
# cryptography/cffi
sudo apt install build-essential libssl-dev libffi-dev

Development

Setup workspace

sudo apt update
sudo apt install python3-pip python3-dev
pip install pipenv
pipenv update --dev

Run locally

This section use docker database called nanny.

docker-compose up -d
pipenv run alembic upgrade head
pipenv run python app/initial_data.py
pipenv run uvicorn app.main:app --port=8080 --reload

Run tests

This section use docker database called nanny_test.

docker-compose up -d
pipenv run pytest -sv app/tests/

nanny-api's People

Contributors

germainlefebvre4 avatar deepsourcebot avatar

Stargazers

Null avatar

Watchers

James Cloos avatar  avatar

nanny-api's Issues

Modifier la méthode de calcul des jours facturés

But : Modifier la manière dont est la calculé le cout de garde chez la nounou.

Méthode de calcul globale :

  • Calculer le nombre exact d'heure par jour
  • Calculer le nombre exact d'heure par semaine à l'aide du nombre d'heure par jour
  • Suivre la méthode de calcul pour un semaine présentée ci-dessous
  • Arrondir le nombre hebdomadaire à l'unité supérieur (contrainte du formulaire Pajemploi qui accepte les entiers)

Méthode de calcul pour une semaine :

  • Jours de présence hérités du contrat ave l'heure de début/fin définie dans le contrat
  • Jours de présence surchargés Présence enfant
  • Jours d'absence volontaire de l'enfant
  • Jours de maladie enfant à partir du 11ème jour dans la période du contrat
  • Jours de congés de la nounou
  • -- Jours fériés
  • -- Jours de congés des parents (semaines/an < 47)
  • -- Jours de maladie de la nounou (jours consécutifs < 10 jours)
  • -- Jours d'absence exceptionnels justifiés (naissance, décès)

Choisir le mode de déclaration des heures dans un contrat

But : Choisir au sein d'un contrat le mode de déclaration des heures : journalier, hebdomadaire

Actions :

  • Distinguer le mode de déclaration (pour pouvoir détecter le mode choisi)
  • Définir la structure renseignée suite au choix de mode

Intégrer les événements d'un calendrier Google pour retourner les événements et le résumé des heures

But : Intégrer les événements d'un calendrier Google

Prérequis :

  • L'utilisateur doit avoir activé l'option Google Calendar et configuré vers l'url publique de son calendrier
  • L'application doit être capable de lire et écrire dans le calendrier de l'utilisateur

Parcours fonctionnel :

  • L'utilisateur se positionne sur un calendrier (user + contract + month)
  • Le Front fait des appels toutes les X secondes pour récupérer les événements mis à jour avec le calendrier

Actions sur les événements :

  • Réceptionner un appel webhook (user + contract + month)
  • Déclencher une synchronisation avec le calendrier Google (les events de l'appli prévalent sur l'agenda Google)
  • Recalculer les workingDays et le contractSummary
  • Retourner les événements recalculés

Dépendance :

Demander aux nouveaux inscrits de vérifier leur adresse email

But : Obliger les nouveaux utilisateurs à vérifier leur adresse email.

Constat :
La création d'un nouveau compte permet la connexion automatique à l'application.

Ce qui est attendu :

  • La création d'un nouveau compte nécessite de vérifier l'adresse email.
  • Un token est envoyé à l'adresse email pour confirmer sa validité.
  • La durée de validité du compte non validé est de 1 journée.
  • Si l'email n'est pas validé dans es temps, le compte utilisateur est désactivé et il n'a plus accès à l'application.
  • En cas de non validité, l'utilisateur doit suivre une procédure pour réactiver son compte.

Procédure en cas de non validation du compte :

  • L'utilisateur doit envoyer une requête sur le site, fournir le lien du formulaire ou créer un bouton formulaire sur la page.
  • (L'administrateur envoie à nouveau le token de validation par email.)

Ajouter une entrée pour rechercher un dayType par son nom

But : Rechercher un dayType selon le nom donnée.

URL : ​/api​/v1​/day_types​/_search?name={name}

Actions :

  • Rechercher le dayType en fonction de son nom
  • Renvoyer une entité dayType qui correspond exactement à la recherche

Créer un email de confirmation d'inscription

But : Créer un email qui sera envoyé dès l'inscription de l'utilisateur.

L'email doit présenter les éléments suivants :

  • Nom de l'application
  • URL de l'application
  • Identifiants de connexion
  • Textes accrocheurs

Textes accrocheurs :

Créer un email pour la réinitialisation du mot de passe

But : Créer un email qui sera envoyé dès que l'utilisateur souhaiteras réinitialiser son mot de passe.

L'email doit présenter les éléments suivants :

  • Nom de l'application
  • URL de l'application
  • Texte pour rassurer l'utilisateur

Intégrer un calendrier Google Calendar au système d'événements remontés dans le calendrier

But : Intégrer la récupération et la publication d'événements vers un Google Calendar.

Actions :

  • Ajouter un endpoint pour gérer les calendriers externes (Google, Microsoft, etc...)
  • Ajouter une table en base de données pour sauvegarder les paramètres utilisateurs autour des calendriers externes
  • Remonter les logs générés lors de la synchronisation des événements depuis/vers le calendrier externes

Remarques :

  • Les logs de synchro doivent permettre à l'utilisateur de comprendre pourquoi la synchro n'a pas fonctionné et de corriger les événements en échec.
  • Permettre à l'utilisateur de savoir s'il doit ouvrir les droits en lecture/écriture sur le calendrier

Définir les heures de début et fin de journée pour chaque jour définis dans le contract

But : Définir l'heure de début (start) et de fin (end) pour chaque jour de présence sélectionné lors de la création du contrat (weekdays).

URL : ​/api​/v1​/contracts​/

Action :

  • Définir le nombre d'heures prévues au contrat pour chaque jour de la semaine
  • Pour chaque weekdays, définir l'heure de début et de fin de journée

Impacter les sorties des URLs qui y réfèrent.

Afficher les informations dayType pour chaque entité workingDay

But : Ajouter les information du dayType aux entités workingDays

URLs :

  • ​/api​/v1​/working_days​/
  • ​/api​/v1​/working_days​/{id}
  • ​/api​/v1​/contracts​/{id}​/working_days

Actions :

  • Ajouter la structure dayType aux entités workingDay

Exemple de réponse :

{
  "id": 1,
  "day": "2020-12-18",
  "day_type": {
    "id": 1,
    "name": "Présence enfant"
  }
  ...
}

Ajouter les dayType exceptionnels en base et s'y référer

But : Ajouter les entrées dayType de type exceptionnel à la base de données. L'id de ces entrées restera inchangé tout au long de la vie de l'application

Actions :

  • Ajouter les types en base de données
  • Réfléchir sur le caractère invariant de ces entrées

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.