def find_by_google_user_id(self, google_Benutzer_id):
        """Suchen eines Benutzers mit vorgegebener Google ID. Da diese eindeutig ist, wird genau ein Objekt
        zurückgegeben.

        :param google_user_id die Google ID des gesuchten Users.
        :return User-Objekt, das die übergebene Google ID besitzt,
                None bei nicht vorhandenem DB-Tupel.
        """
        cursor = self._cnx.cursor()
        command = "SELECT id, name, email, google_id FROM benutzer WHERE google_id='{}'"\
            .format(google_Benutzer_id)  # Änderung: aus google_benutzer_id wurde google_id
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, name, email, google_Benutzer_id) = tuples[0]
            b = Benutzer()
            b.set_id(id)
            b.set_name(name)
            b.set_email(email)
            b.set_google_id(google_Benutzer_id)
            result = b
        except IndexError:
            result = None

        self._cnx.commit()
        cursor.close()

        return result
    def benutzer_anlegen(self, name, email, google_id):
        """Methode zum Anlegen von einem neuen Benutzer in der Datenbank"""
        benutzer = Benutzer()
        benutzer.set_name(name)
        benutzer.set_email(email)
        benutzer.set_google_id(google_id)

        with BenutzerMapper() as mapper:
            return mapper.insert(benutzer)
 def post(self):
     """Anlegen eines Benutzers"""
     adm = ApplikationsAdministration()
     test = Benutzer.from_dict(api.payload)
     if test is not None:
         a = adm.benutzer_anlegen(test.get_name(), test.get_email(), test.get_google_id())
         return a, 200
     else:
         return '', 500
    def delete(self, id):
        """Löschen eines Benutzers in einem Anwenderverbund"""
        adm = ApplikationsAdministration()

        verbund = adm.get_anwenderverbund_by_id(id)
        mitglied = Benutzer.from_dict(api.payload)
        if verbund is not None:
            adm.mitglieder_vom_anwenderverbund_entfernen(verbund, mitglied)
            return mitglied
        else:
            return "Benutzer oder Anwenderverbund unbekannt", 500
    def post(self, id):
        """Hinzufügen eines Benutzers in einen Anwenderverbund"""
        adm = ApplikationsAdministration()

        verbund = adm.get_anwenderverbund_by_id(id)
        mitglied = Benutzer.from_dict(api.payload)
        if verbund is not None:
            adm.mitglieder_zum_anwenderverbund_hinzufuegen(verbund, mitglied)
            return mitglied
        else:
            return "Benutzer oder Anwenderverbund unbekannt", 500
    def find_by_name(self, name):
        """ Mapper-Methode zum ausgeben eines Benutzers anhand dessen Name.

        Beim Aufruf Methode wird ein Name in der Variablen "name" gespeichert, welche schließlich an das SQL-Statement
        übergeben wird.
        Das entsprechende Objekt, welches aus der Datenbank ausgegeben wird, wird in einem Tupel gespeichert.
        Anschließend werden die einzelnen Attribute aus dem Tupel an der Stelle 0 genommen und an eine neue
        Benutzer-Instanz via den Setter-Methoden übergeben.
        Sollte die Datenbank anhand des Namens kein Objekt zurückliefern, wird ausgegeben was innerhalb des
        IndexErrors steht --> None. Das Ergebnis wir schließlich von der Mehtode zurückgegeben."""
        cursor = self._cnx.cursor()
        command = "SELECT id, name, erstellungs_zeitpunkt, email, google_id FROM benutzer WHERE name LIKE '{}' " \
                  "ORDER BY name".format(name)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, name, erstellungs_zeitpunkt, email, google_id) = tuples[0]
            benutzer = Benutzer()
            benutzer.set_id(id)
            benutzer.set_name(name)
            benutzer.set_erstellungs_zeitpunkt(erstellungs_zeitpunkt)
            benutzer.set_email(email)
            benutzer.set_google_id(google_id)
            result = benutzer
        except IndexError:
            result = []

        self._cnx.commit()
        cursor.close()

        return result