Exemple #1
0
    def get_offre(self, offer_id):
        """Argument: Id de l'offre
		Fonction: Renvoie l'offre"""
        self.cursor.execute("""SELECT * FROM offres WHERE id = %s""",
                            (offer_id, ))
        # Conversion en objet Offre
        return objects.Offre(self.cursor.fetchall()[0])
Exemple #2
0
 def get_all_offres(self):
     offres = []
     self.cursor.execute("""SELECT * FROM offres""")
     # Conversion en objet Offre
     rows = self.cursor.fetchall()
     for row in rows:
         offres.append(objects.Offre(row))
     return offres
Exemple #3
0
 def offres_liste_validees(self):
     """Renvoie la liste des offres qui ont été validées"""
     offres = []
     self.cursor.execute("""SELECT * FROM offres WHERE disponible=1""")
     # Conversion en objet Offre
     rows = self.cursor.fetchall()
     for row in rows:
         offres.append(objects.Offre(row))
     return offres
Exemple #4
0
    def mail_in_offre(self, id_o, mail):
        self.cursor.execute("""SELECT * FROM offres where id = %s""", (id_o, ))

        offre = objects.Offre(self.cursor.fetchall()[0])
        participants = [offre.participant, offre.participant2]

        if mail in participants:
            return True
        else:
            return False
Exemple #5
0
    def liste_offres(self, mail, option=None, option2=None):
        """Renvoie la liste des offres compatibles avec l'utilisateur connecté (même classe)
		
			:mail: adresse de l'utilisateur connecté
			:option: premier niveau de selection
			:option2: 2ème niveau de selection
		
		"""

        classe = self.get_user_info(mail).classe
        niveau = self.get_class_level(classe)
        offres = []

        if classe == "ADMIN":  # Administrateur !
            condition = "(1>0)"  # Tout !
        else:
            condition = "disponible=1 AND (participant IS NULL OR participant2 IS NULL)"

        if option is not None:
            if option == "relation":
                self.cursor.execute(
                    """SELECT * FROM offres WHERE participant is not NULL OR participant2 is not NULL"""
                )
            elif option2 is not None:
                self.cursor.execute("""SELECT * FROM offres WHERE """ +
                                    condition + """
					 AND """ + option + """ = '""" + option2 + "'")
            else:
                self.cursor.execute("""SELECT * FROM offres WHERE """ +
                                    condition + """
					ORDER BY """ + option)
        else:
            self.cursor.execute("""SELECT * FROM offres WHERE """ + condition)

        rows = self.cursor.fetchall()
        # Tri des offres pour ne garder que celles où ...
        for row in rows:
            offre = objects.Offre(row)
            if classe == "ADMIN":  # Administrateur !
                offres.append(offre)
                continue

            if niveau <= self.get_filiere_level(offre.filiere):
                if offre.participant is None:  # ... les deux places sont disponibles
                    offres.append(offre)
                else:
                    if mail == offre.participant:  # ... l'utilisateur est déjà inscrit
                        continue
                    if classe == self.get_user_info(
                            offre.participant
                    ).classe:  # ... la classe du 1er participant est identique à celle de user
                        offres.append(offre)

        return offres
Exemple #6
0
    def get_user_offres(self, mail):
        """Argument: Mail de l'utilisateur
		Fonction: Renvoie la liste des offres créées par l'utilisateur"""
        offres = []
        self.cursor.execute("""SELECT * FROM offres WHERE auteur=%s""",
                            (mail, ))
        # Conversion en objet Offre
        rows = self.cursor.fetchall()
        for row in rows:
            offres.append(objects.Offre(row))
        return offres
Exemple #7
0
    def offres_liste_tri_admin(self, user_search):
        """Argument: Mail de l'utilisateur
		Fonction: Renvoie la liste des offres quand on recherche un utilisateur"""
        offres = []
        self.cursor.execute(
            """SELECT * FROM offres WHERE auteur = %s OR participant = %s OR participant2 = %s AND disponible=1""",
            (user_search, user_search, user_search))
        # Conversion en objet Offre
        rows = self.cursor.fetchall()
        for row in rows:
            offres.append(objects.Offre(row))
        return offres
Exemple #8
0
    def get_user_offres_suivies(self, mail):
        """Argument: Mail de l'utilisateur
		Fonction: Renvoie les offre auxquelles participe l'utilisateur"""
        offres = []
        self.cursor.execute(
            """SELECT * FROM offres WHERE participant=%s OR participant2=%s""",
            (mail, mail))
        # Conversion en objet Offre
        rows = self.cursor.fetchall()
        for row in rows:
            offres.append(objects.Offre(row))
        return offres
Exemple #9
0
    def places(self, id_o):
        self.cursor.execute("""SELECT * FROM offres WHERE id=%s""", (id_o, ))

        offre = objects.Offre(self.cursor.fetchall()[0])

        if offre.participant is None or offre.participant2 is None:
            # Une place est disponible
            if offre.participant is None and offre.participant2 is None:
                return 2
            else:
                return 1
        else:
            return 0
Exemple #10
0
    def add_participant(self, offre_id, participant):
        """ Argument: Id de l'offre, mail du participant
			Fonction: Ajoute un participant à une offre
		"""
        def notify(offre):
            # Notification
            c = self.get_user_info(participant)
            for u in self.liste_resp(self.get_filiere_level(offre.filiere)):
                u.notifier("Offre acceptée",
                     "L'utilisateur suivant :\n%s\n\n" \
                     "vient d'accepter l'offre suivante :\n%s\n" \
                     "\nLes deux utilisateurs doivent être mis en contact.\n" \
                     "" %(c.get_profil_texte(), offre.get_texte()))

        self.cursor.execute("""SELECT * FROM offres WHERE id=%s""",
                            (offre_id, ))
        offre = objects.Offre(self.cursor.fetchall()[0])
        if offre.auteur != participant:
            if self.places(offre.id) == 2:
                # Update de la première colonne
                self.cursor.execute(
                    """UPDATE offres SET participant = %s WHERE id = %s """,
                    (participant, offre_id))
                self.conn.commit()
                notify(offre)
                return 0
            elif self.places(offre.id) == 1:
                # Update de la deuxième colonne + check si l'utilisateur n'est pas déjà participant à cette offre
                if offre.participant != participant:
                    # Check si l'utilisateur est dans la même classe que le premier
                    if self.get_user_info(
                            participant).classe == self.get_user_info(
                                offre.participant).classe:
                        self.cursor.execute(
                            """UPDATE offres SET participant2 = %s WHERE id = %s """,
                            (participant, offre_id))
                        self.conn.commit()
                        notify(offre)
                        return 0
                    else:
                        # Erreur l'utilisateur n'est pas dans la même classe que le premier
                        return 4
                else:
                    # Erreur l'utilisateur participe déjà à ce tutorat
                    return 1
            else:
                # Erreur l'offre est pleine
                return 2
        else:
            # auteur == tuteur
            return 3
Exemple #11
0
    def delete_participant(self, offre_id, mail):
        """Argument: Id de l'offre, mail du participant
		Fonction: Supprime le participant de l'offre"""
        self.cursor.execute("""SELECT * FROM offres WHERE id=%s""",
                            (offre_id, ))
        offres_a_modif = self.cursor.fetchall()
        if len(offres_a_modif) == 1:
            offre_a_modif = objects.Offre(offres_a_modif[0])
            places_dispo = self.places(offre_a_modif.id)
            if places_dispo == 0:
                if offre_a_modif.participant == mail:
                    self.cursor.execute(
                        """UPDATE offres SET participant = participant2, participant2 = NULL WHERE id = %s """,
                        (offre_id, ))
                    self.conn.commit()
                    return True
                elif offre_a_modif.participant2 == mail:
                    self.cursor.execute(
                        """UPDATE offres SET participant2 = NULL WHERE id = %s """,
                        (offre_id, ))
                    self.conn.commit()
                    return True
                else:
                    # L'utilisateur ne participe pas au Tutorat
                    return False
            elif places_dispo == 1:
                if offre_a_modif.participant == mail:
                    self.cursor.execute(
                        """UPDATE offres SET participant = NULL WHERE id = %s """,
                        (offre_id, ))
                    self.conn.commit()
                    return True
                else:
                    # L'utilisateur ne participe pas au Tutorat
                    return False
            else:
                # L'utilisateur ne participe pas au Tutorat
                return False
        else:
            return False