def update(self, partner_vorschlag: PartnerVorschlag): """Aktualisieren eines PartnerVorschlags-Objekts in der Datenbank anhand seiner ID :param partner_vorschlag: Das PartnerVorschlags-Objekt, das in die DB geschrieben werden soll """ cursor = self._cnx.cursor() command = ( "UPDATE partner_vorschlaege SET erstellungszeitpunkt=%s, person_id=%s, partner_id=%s, " "aehnlichkeit=%s, matchpoints=%s, entscheidung_person=%s, entscheidung_partner=%s WHERE id=%s" ) data = ( datetime.now().strftime("%Y-%m-%d %H:%M:%S"), partner_vorschlag.get_person_id(), partner_vorschlag.get_partner_id(), partner_vorschlag.get_aehnlichkeit(), partner_vorschlag.get_matchpoints(), partner_vorschlag.get_entscheidung_person(), partner_vorschlag.get_entscheidung_partner(), partner_vorschlag.get_id(), ) cursor.execute(command, data) self._cnx.commit() cursor.close()
def delete(self, partner_vorschlag: PartnerVorschlag): """Löschen der Daten eines PartnerVorschlags-Objekts aus der Datenbank. :param partner_vorschlag: Das aus der Datenbank zu löschende PartnerVorschlags-Objekt """ cursor = self._cnx.cursor() command = "DELETE FROM partner_vorschlaege WHERE id={}".format( partner_vorschlag.get_id()) cursor.execute(command) self._cnx.commit() cursor.close()
def post(self): """ Anlegen eines neuen PartnerVorschlag-Objekts. Die vom Client gesendeten Daten werden über die in jeder BO-Klasse verfügbaren Methode from_dict in das jeweilige BO überführt und anschließend in die Datenbank geschrieben. """ adm = Admin() proposal = PartnerVorschlag.from_dict(api.payload) if proposal is not None: p = adm.create_partnervorschlag( proposal.get_person_id(), proposal.get_partnervorschlag_id(), proposal.get_aehnlichkeit(), proposal.get_matchpoints(), proposal.get_entscheidung_person(), proposal.get_entscheidung_partner(), ) return p, 200 else: return "", 500
def put(self, id): """Update eines bestimmten PartnerVorschlag-Objekts. Die über die URI übermittelte ID überschreibt das ID-Attribut des im Payload der Anfrage übermittelten Objekts. """ adm = Admin() p = PartnerVorschlag.from_dict(api.payload) if p is not None: p.set_id(id) adm.save_partner_vorschlag(p) vorschlag = adm.get_partner_vorschlag_by_id(p.get_id()) if vorschlag.get_matchpoints() >= 2: chat = adm.create_konversation(ist_gruppenchat=False) adm.create_chatteilnahme( person_id=vorschlag.get_person_id(), konversation_id=chat.get_id() ) adm.create_chatteilnahme( person_id=vorschlag.get_partner_id(), konversation_id=chat.get_id() ) return "", 200 else: return "", 500
def find_eingehende_by_person_id(self, person_key): """Auslesen der PartnerVorschlag-Objekte der gegebenen Person ID bei dem die Entscheidung des Partners schon getroffen ist, die Entscheidung der Person jedoch noch nicht :param person_key: Person ID :return: Sammlung mit PartnerVorschlag-Objekten, der gegebenen Person ID """ result = [] cursor = self._cnx.cursor() command = ( "SELECT * FROM partner_vorschlaege WHERE " "(person_id={} AND entscheidung_person=FALSE AND entscheidung_partner=TRUE AND matchpoints=1) " "OR (partner_id={} AND entscheidung_person=TRUE AND entscheidung_partner=FALSE AND matchpoints=1) " .format(person_key, person_key)) cursor.execute(command) tuples = cursor.fetchall() for ( id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner, ) in tuples: partner_vorschlag = PartnerVorschlag() partner_vorschlag.set_id(id) partner_vorschlag.set_erstellungszeitpunkt(erstellungszeitpunkt) partner_vorschlag.set_person_id(person_id) partner_vorschlag.set_partner_id(partner_id) partner_vorschlag.set_aehnlichkeit(aehnlichkeit) partner_vorschlag.set_matchpoints(matchpoints) partner_vorschlag.set_entscheidung_person(entscheidung_person) partner_vorschlag.set_entscheidung_partner(entscheidung_partner) result.append(partner_vorschlag) self._cnx.commit() cursor.close() return result
def find_by_key(self, key): """Auslesen aller PartnerVorschlag-Objekte der zugehörigen PartnerVorschlag ID :param key: PartnerVorschlag ID :return: Sammlung mit PartnerVorschlag-Objekten, der zugehörigen PartnerVorschlag ID """ result = None cursor = self._cnx.cursor() command = ( "SELECT id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person," "entscheidung_partner FROM partner_vorschlaege WHERE id={}".format( key)) cursor.execute(command) tuples = cursor.fetchall() try: ( id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner, ) = tuples[0] partner_vorschlag = PartnerVorschlag() partner_vorschlag.set_id(id) partner_vorschlag.set_erstellungszeitpunkt(erstellungszeitpunkt) partner_vorschlag.set_person_id(person_id) partner_vorschlag.set_partner_id(partner_id) partner_vorschlag.set_aehnlichkeit(aehnlichkeit) partner_vorschlag.set_matchpoints(matchpoints) partner_vorschlag.set_entscheidung_person(entscheidung_person) partner_vorschlag.set_entscheidung_partner(entscheidung_partner) result = partner_vorschlag except IndexError: """ """ result = None self._cnx.commit() cursor.close() return result
def insert(self, partner_vorschlag: PartnerVorschlag): """Einfügen eines PartnerVorschlags-Objekts in die Datenbank. Der Primärschlüssel wird dabei überprüft und ggf. berechtigt. :param: partner_vorschlag : Das zu speichernde PartnerVorschlags-Objekt :return: Das bereits übergebene PartnerVorschlags-Objekt, jedoch mit ggf, korrigierter ID. """ cursor = self._cnx.cursor() cursor.execute("SELECT MAX(id) AS maxid FROM partner_vorschlaege") tuples = cursor.fetchall() for maxid in tuples: if maxid[0] is not None: partner_vorschlag.set_id(maxid[0] + 1) else: partner_vorschlag.set_id(1) command = ( "INSERT INTO partner_vorschlaege (id, erstellungszeitpunkt, person_id, partner_id, " "aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner) " "VALUES (%s,%s,%s,%s,%s,%s,%s,%s)") data = ( partner_vorschlag.get_id(), partner_vorschlag.get_erstellungszeitpunkt(), partner_vorschlag.get_person_id(), partner_vorschlag.get_partner_id(), partner_vorschlag.get_aehnlichkeit(), partner_vorschlag.get_matchpoints(), partner_vorschlag.get_entscheidung_person(), partner_vorschlag.get_entscheidung_partner(), ) cursor.execute(command, data) self._cnx.commit() cursor.close() return partner_vorschlag
def find_all_anfragen(self): """Auslesen aller PartnerVorschlag-Objekte aus der Datenbank, welche als Anfragen gezählt werden, also die eine einseitige, positive Entscheidung haben, aber noch nicht angenommen oder abgelehnt wurden :return: """ """ Auslesen aller GruppenVorschlags-Objekte, deren Matchpoints auf 1 gesetzt ist, entweder durch eine Entscheidung seitens der Gruppe, oder der Person, jedoch nicht beiderseits :return: Sammlung mit GruppenVorschlags-Objekten """ result = [] cursor = self._cnx.cursor() command = ( "SELECT * FROM partner_vorschlaege WHERE matchpoints=1 AND " "((entscheidung_person=TRUE AND entscheidung_partner=FALSE) " "OR (entscheidung_partner=TRUE AND entscheidung_person=FALSE)) ") cursor.execute(command) tuples = cursor.fetchall() for ( id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner, ) in tuples: partner_vorschlag = PartnerVorschlag() partner_vorschlag.set_id(id) partner_vorschlag.set_erstellungszeitpunkt(erstellungszeitpunkt) partner_vorschlag.set_person_id(person_id) partner_vorschlag.set_partner_id(partner_id) partner_vorschlag.set_aehnlichkeit(aehnlichkeit) partner_vorschlag.set_matchpoints(matchpoints) partner_vorschlag.set_entscheidung_person(entscheidung_person) partner_vorschlag.set_entscheidung_partner(entscheidung_partner) result.append(partner_vorschlag) self._cnx.commit() cursor.close() return result
def find_all_for_person_id(self, person_key): """Auslesen aller PartnerVorschlags-Objekte der gegebenen Person ID :param person_key: Person ID :return: Sammlung mit PartnerVorschlags-Objekten, der gegebenen Person ID """ result = [] cursor = self._cnx.cursor() command = "SELECT * FROM partner_vorschlaege WHERE person_id={} OR partner_id={}".format( person_key, person_key) cursor.execute(command) tuples = cursor.fetchall() for ( id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner, ) in tuples: partner_vorschlag = PartnerVorschlag() partner_vorschlag.set_id(id) partner_vorschlag.set_erstellungszeitpunkt(erstellungszeitpunkt) partner_vorschlag.set_person_id(person_id) partner_vorschlag.set_partner_id(partner_id) partner_vorschlag.set_aehnlichkeit(aehnlichkeit) partner_vorschlag.set_matchpoints(matchpoints) partner_vorschlag.set_entscheidung_person(entscheidung_person) partner_vorschlag.set_entscheidung_partner(entscheidung_partner) result.append(partner_vorschlag) self._cnx.commit() cursor.close() return result
def find_best_by_person_id(self, person_key): """Auslesen der PartnerVorschlags-Objekte der gegebenen Person ID, bei denen noch keine Entscheidung der Person getroffen wurde in absteigender Reihenfolge :param person_key: Person ID :return: Sammlung mit PartnerVorschlag-Objekten, der gegebenen Person ID """ result = None cursor = self._cnx.cursor() command = ( "SELECT * FROM partner_vorschlaege WHERE (person_id={} AND entscheidung_person is FALSE) " "OR (partner_id={} AND entscheidung_partner is FALSE) ORDER BY aehnlichkeit DESC " .format(person_key, person_key)) cursor.execute(command) tuples = cursor.fetchall() try: ( id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner, ) = tuples[0] partner_vorschlag = PartnerVorschlag() partner_vorschlag.set_id(id) partner_vorschlag.set_erstellungszeitpunkt(erstellungszeitpunkt) partner_vorschlag.set_person_id(person_id) partner_vorschlag.set_partner_id(partner_id) partner_vorschlag.set_aehnlichkeit(aehnlichkeit) partner_vorschlag.set_matchpoints(matchpoints) partner_vorschlag.set_entscheidung_person(entscheidung_person) partner_vorschlag.set_entscheidung_partner(entscheidung_partner) result = partner_vorschlag except IndexError: """ """ result = None self._cnx.commit() cursor.close() return result
def find_all(self): """Auslesen aller PartnerVorschlag-Objekte aus der Datenbank :return: Sammlung mit PartnerVorschlag-Objekten """ result = [] cursor = self._cnx.cursor() cursor.execute("SELECT * from partner_vorschlaege") tuples = cursor.fetchall() for ( id, erstellungszeitpunkt, person_id, partner_id, aehnlichkeit, matchpoints, entscheidung_person, entscheidung_partner, ) in tuples: partner_vorschlag = PartnerVorschlag() partner_vorschlag.set_id(id) partner_vorschlag.set_erstellungszeitpunkt(erstellungszeitpunkt) partner_vorschlag.set_person_id(person_id) partner_vorschlag.set_partner_id(partner_id) partner_vorschlag.set_aehnlichkeit(aehnlichkeit) partner_vorschlag.set_matchpoints(matchpoints) partner_vorschlag.set_entscheidung_person(entscheidung_person) partner_vorschlag.set_entscheidung_partner(entscheidung_partner) result.append(partner_vorschlag) self._cnx.commit() cursor.close() return result
""" cursor = self._cnx.cursor() command = "DELETE FROM partner_vorschlaege WHERE id={}".format( partner_vorschlag.get_id()) cursor.execute(command) self._cnx.commit() cursor.close() """Testbereich, ob die Klasse funktioniert""" if __name__ == "__main__": with PartnerVorschlagMapper() as mapper: result = mapper.find_all() print("los") for p in result: print(p) neu = PartnerVorschlag() neu.set_aehnlichkeit(100) mapper.insert(neu) weg = mapper.find_by_key(2) mapper.delete(weg) result = mapper.find_all() print("los") for p in result: print(p)