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])
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
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
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
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
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
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
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
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
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
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