예제 #1
0
파일: main.py 프로젝트: dcentri/ecarpool
    def post(self):
        """
        Permet d'ajouter un message à la base de données avec le format de json suivant:
        {
          "sender":"alb",
          "to":"a",
          "message":"Albert a accepté votre demande de covoiturage",
          "refParcour": 54531213213215
        }
        """
        try:
            msg_dict_in = json.loads(self.request.body)
            cle_sender = ndb.Key("User", msg_dict_in["sender"])
            cle_receiver = ndb.Key("User", msg_dict_in["to"])
            if cle_sender.get() is None or cle_receiver.get() is None:
                self.error(400)
                return
            msg = Messages()
            msg.sender = msg_dict_in["sender"]
            msg.to = msg_dict_in["to"]
            msg.message = msg_dict_in["message"]
            msg.refParcour = msg_dict_in["refParcour"]
            cle = msg.put()
            self.response.set_status(200)

            self.response.headers["Content-Type"] = "application/json;" + " charset=utf-8"
            msg_dict_in["id"] = cle.id()
            json_data = json.dumps(msg_dict_in, default=serialiser_pour_json)
            self.response.out.write(json_data)
        except (db.BadValueError, ValueError, KeyError):
            logging.error("%s", traceback.format_exc())
            self.error(400)

        except Exception:
            logging.error("%s", traceback.format_exc())
            self.error(500)
예제 #2
0
파일: main.py 프로젝트: dcentri/ecarpool
    def put(self, login, idParcours, idTrajet):
        try:
            cle_user_initiator = ndb.Key("User", login)
            cle_parcours = ndb.Key("Parcours", long(idParcours))
            cle_trajet = ndb.Key("Trajet", long(idTrajet))
            user_initiator = cle_user_initiator.get()
            parcours = cle_parcours.get()
            trajet = cle_trajet.get()
            if user_initiator is None or parcours is None or trajet is None:
                self.error(400)
                return
            cle_user_target = ndb.Key("User", trajet.idAuthor)
            user_target = cle_user_target.get()
            msg_dict_out = {}
            """ Ajouter une nouvelle demande"""
            if (
                idTrajet not in user_initiator.listeDemandesTrajet
                and idParcours not in user_target.listDemandesParcours
                and not trajet.booked
            ):
                user_target.listDemandesParcours.append(idParcours)
                msg = Messages()
                msg.sender = login
                msg.to = trajet.idAuthor
                msg.message = user_initiator.firstName + u" vous a envoyé une demande de covoiturage"
                msg.refParcour = long(idParcours)
                msg.refTrajet = long(idTrajet)
                cle = msg.put()
                user_target.put()
                msg_dict_out["id"] = cle.id()
                msg_dict_out["succes"] = "La demande de covoiturage a été envoyé avec succès."
            elif (
                idTrajet in user_initiator.listeDemandesTrajet
                and len(parcours.trajets) < parcours.nbPlaces
                and idTrajet not in parcours.trajets
                and not trajet.booked
            ):
                """ Accepter une demande et ajouté un trajet à un parcours"""
                parcours.trajets.append(long(idTrajet))
                user_initiator.listeDemandesTrajet.remove(idTrajet)
                msg = Messages()
                msg.sender = login
                msg.to = trajet.idAuthor
                msg.message = user_initiator.firstName + u" a accepté votre demande de covoiturage"
                msg.refParcour = long(idParcours)
                msg.refTrajet = long(idTrajet)
                cle = msg.put()
                trajet.booked = True
                parcours.put()
                trajet.put()
                user_initiator.put()
                self.response.set_status(200)
                msg_dict_out["succes"] = "Le trajet a été ajouté avec succès"
            elif len(parcours.trajets) >= parcours.nbPlaces or trajet.booked:
                if idTrajet in user_initiator.listeDemandesTrajet:
                    user_initiator.listeDemandesTrajet.remove(idTrajet)
                    user_initiator.put()
                    msg_dict_out["erreur"] = "Impossible d'ajouté un trajet. Le parcours est complet"
            else:
                msg_dict_out[
                    "erreur"
                ] = "Impossible de compléter votre requête. Votre demande est déjà envoyé ou la requête manque des données"
                self.response.set_status(400)
            self.response.headers["Content-Type"] = "application/json;" + " charset=utf-8"

            response_json = json.dumps(msg_dict_out, default=serialiser_pour_json)
            self.response.out.write(response_json)
        except (db.BadValueError, ValueError, KeyError):
            logging.error("%s", traceback.format_exc())
            self.error(400)

        except Exception:
            logging.error("%s", traceback.format_exc())
            self.error(500)