示例#1
0
    def update(self, person: Person):
        """Aktualisieren eines Person-Objekts in der Datenbank anhand seiner ID

        :param person: Das Person-Objekt, das in der Datenbank übergeschrieben werden soll
        """
        cursor = self._cnx.cursor()

        command = (
            "UPDATE personen SET `name`=%s, email=%s, google_user_id=%s, `alter`=%s, wohnort=%s, studiengang=%s, "
            "semester=%s, profil_id=%s WHERE id=%s")
        data = (
            person.get_name(),
            person.get_email(),
            person.get_google_user_id(),
            person.get_alter(),
            person.get_wohnort(),
            person.get_studiengang(),
            person.get_semester(),
            person.get_profil_id(),
            person.get_id(),
        )

        cursor.execute(command, data)

        self._cnx.commit()
        cursor.close()
示例#2
0
    def delete(self, person: Person):
        """Löschen der Daten eines Person-Objekts aus der Datenbank.

        :param person: Das aus der Datenbank zu löschende Person-Objekt
        """
        cursor = self._cnx.cursor()

        command = "DELETE FROM personen WHERE id={}".format(person.get_id())
        cursor.execute(command)

        self._cnx.commit()
        cursor.close()
示例#3
0
    def put(self, id):
        """Update einer bestimmten Person.
        """
        adm = ProjectAdministration()
        p = Person.from_dict(api.payload)

        if p is not None:
            p.set_id(id)
            adm.save_person(p)
            return '', 200
        else:
            return '', 500
示例#4
0
    def put(self, id):
        """Update eines bestimmten Person-Objekts.

        Die über die URI übermittelte ID überschreibt das ID-Attribut des im Payload der Anfrage übermittelten
        Objekts.
        """
        adm = Admin()
        p = Person.from_dict(api.payload)

        if p is not None:
            p.set_id(id)
            adm.save_person(p)
            return "", 200
        else:
            return "", 500
示例#5
0
    def post(self):
        """Anlegen eines neuen Person-Objekts.
        """
        adm = ProjectAdministration()

        proposal = Person.from_dict(api.payload)

        if proposal is not None:
            pers = adm.create_person(proposal.get_creation_time(),
                                     proposal.get_name(), proposal.get_role(),
                                     proposal.get_email(),
                                     proposal.get_google_user_id())
            return pers, 200
        else:
            # Wenn irgendetwas schiefgeht, dann geben wir nichts zurück und werfen einen Server-Fehler.
            return '', 500
示例#6
0
 def post(self):
     """
     Anlegen eines neuen Person-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 = Person.from_dict(api.payload)
     if proposal is not None:
         p = adm.create_person(
             proposal.get_name(),
             proposal.get_email(),
             proposal.get_google_user_id(),
             proposal.get_alter(),
             proposal.get_studiengang(),
             proposal.get_wohnort(),
             proposal.get_semester(),
             proposal.get_profil_id(),
         )
         return p, 200
     else:
         return "", 500
示例#7
0
    def find_all(self):
        """Auslesen aller Person-Objekte

        :return: Sammlung mit Person-Objekten
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute("SELECT * from personen")
        tuples = cursor.fetchall()

        for (
                id,
                erstellungszeitpunkt,
                name,
                email,
                google_user_id,
                alter,
                wohnort,
                studiengang,
                semester,
                profil_id,
        ) in tuples:
            person = Person()
            person.set_id(id)
            person.set_erstellungszeitpunkt(erstellungszeitpunkt)
            person.set_name(name)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            person.set_alter(alter)
            person.set_studiengang(studiengang)
            person.set_wohnort(wohnort)
            person.set_semester(semester)
            person.set_profil_id(profil_id)
            result.append(person)

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

        return result
示例#8
0
        """
        cursor = self._cnx.cursor()

        command = "DELETE FROM personen WHERE id={}".format(person.get_id())
        cursor.execute(command)

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


"""Testbereich, ob die Klasse funktioniert"""

if __name__ == "__main__":
    with PersonMapper() as mapper:

        neu = Person()
        neu.set_name("Moritz Mulser")
        neu.set_email("*****@*****.**")
        neu.set_google_user_id("ljknsdfjknbfdjkfsdjknfYO")
        neu.set_alter(23)
        neu.set_wohnort("Böblingen")
        neu.set_studiengang("WI7")
        neu.set_semester(4)
        neu.set_profil_id(5)
        mapper.insert(neu)

        print("Find all")
        result = mapper.find_all()
        for p in result:
            print(
                p.get_id(),
 def create_user(self, name, email, google_user_id):
     p = Person()
     p.set_id(1)
     p.set_role(1)
     p.set_name(name)
     p.set_email(email)
     p.set_google_user_id(google_user_id)
     with PersonMapper() as mapper:
         return mapper.insert_google_user(p)
示例#10
0
    def insert(self, person: Person):
        """Einfügen eines Person-Objekts in die Datenbank.

        Der Primärschlüssel wird dabei überprüft und ggf. berechtigt.

        :param: person: Das zu speichernde Person-Objekt
        :return: Das bereits übergebene Person-Objekt, jeodch mit ggf, korrigierter ID.
        """
        cursor = self._cnx.cursor()
        cursor.execute("SELECT MAX(id) AS maxid FROM personen")
        tuples = cursor.fetchall()

        for maxid in tuples:
            if maxid[0] is not None:
                person.set_id(maxid[0] + 1)
            else:
                person.set_id(1)

        command = (
            "INSERT INTO personen (id, erstellungszeitpunkt, name, email, google_user_id, `alter`, wohnort, "
            "studiengang, semester, profil_id) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
        )
        data = (
            person.get_id(),
            person.get_erstellungszeitpunkt(),
            person.get_name(),
            person.get_email(),
            person.get_google_user_id(),
            person.get_alter(),
            person.get_wohnort(),
            person.get_studiengang(),
            person.get_semester(),
            person.get_profil_id(),
        )
        cursor.execute(command, data)

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

        return person
示例#11
0
    def find_all(self):

        result = []
        cursor = self._cnx.cursor()
        cursor.execute("SELECT id, creation_time, name, role, email, google_user_id FROM person")
        tuples = cursor.fetchall()

        for (id, creation_time, name, role, email, google_user_id) in tuples:
            person = Person()
            person.set_id(id)
            person.set_creation_time(creation_time)
            person.set_name(name)
            person.set_role(role)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            result.append(person)

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

        return result
示例#12
0
    def find_by_id(self, id):

        """Suchen einer Person mit vorgegebener id. Da diese eindeutig ist,
        wird genau ein Objekt zurückgegeben.

        :param id Primärschlüsselattribut (->DB)
        :return Konto-Objekt, das dem übergebenen Schlüssel entspricht, None bei
            nicht vorhandenem DB-Tupel.
        """
        result = None

        cursor = self._cnx.cursor()
        command = "SELECT id, creation_time, name, role, email, google_user_id FROM person WHERE id={}".format(id)
        cursor.execute(command)
        tuples = cursor.fetchall()

        if tuples[0] is not None:
            (id, creation_time, name, role, email, google_user_id) = tuples[0]
            person = Person()
            person.set_id(id)
            person.set_creation_time(creation_time)
            person.set_name(name)
            person.set_role(role)
            person.set_email(email)
            person.set_google_user_id(google_user_id)

        result = person

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

        return result
示例#13
0
    def find_by_google_user_id(self, google_user_id):

        result = None


        cursor = self._cnx.cursor()
        command = "SELECT id, name, role, email, google_user_id FROM person WHERE google_user_id  = '{}'".format(
            google_user_id)

        cursor.execute(command)
        tuples = cursor.fetchall()
        try:
            (id, name, role, email, google_user_id) = tuples[0]
            person = Person()
            person.set_id(id)
            person.set_name(name)
            person.set_role(role)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            result = person
        except IndexError:
            result = None

        self._cnx.commit()
        cursor.close()
        return result
示例#14
0
    def find_person_by_role(self, role):

        result = []

        cursor = self._cnx.cursor()
        command = "SELECT id, creation_time, name, role, email, google_user_id FROM person WHERE role={}".format(role)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, creation_time, name, role, email, google_user_id) = tuples[0]
            person = Person()
            person.set_id(id)
            person.set_creation_time(creation_time)
            person.set_name(name)
            person.set_role(role)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            result = person

        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None

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

        return result
示例#15
0
    def find_by_konversation_id(self, konversation_id):
        """Auslesen eines Person-Objekts mit der gegebenen Konversation ID

        :param konversation_id: Konversation ID
        :return: Ein einzelnes Person-Objekt, welches an der gegebener Konversation teilnimmt
        """
        result = []
        cursor = self._cnx.cursor()
        command = ("SELECT L.* FROM personen AS L "
                   "LEFT OUTER JOIN chat_teilnahmen AS R ON R.person_id=L.id "
                   "WHERE R.konversation_id={}".format(konversation_id))
        cursor.execute(command)
        tuples = cursor.fetchall()

        for (
                id,
                erstellungszeitpunkt,
                name,
                email,
                google_user_id,
                alter,
                wohnort,
                studiengang,
                semester,
                profil_id,
        ) in tuples:
            person = Person()
            person.set_id(id)
            person.set_erstellungszeitpunkt(erstellungszeitpunkt)
            person.set_name(name)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            person.set_alter(alter)
            person.set_studiengang(studiengang)
            person.set_wohnort(wohnort)
            person.set_semester(semester)
            person.set_profil_id(profil_id)
            result.append(person)
        self._cnx.commit()
        cursor.close()

        return result
示例#16
0
    def find_by_profil_id(self, profil_id: int):
        """Auslesen eines Person-Objekts mit der gegebenen Profil ID

        :param profil_id: Profil ID
        :return: das gesuchte Person-Objekt
        """
        result = None
        cursor = self._cnx.cursor()
        command = (
            "SELECT id, erstellungszeitpunkt, `name`, email, google_user_id, `alter`, wohnort, studiengang, semester, "
            "profil_id FROM personen WHERE profil_id={}".format(profil_id))
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (
                id,
                erstellungszeitpunkt,
                name,
                email,
                google_user_id,
                alter,
                wohnort,
                studiengang,
                semester,
                profil_id,
            ) = tuples[0]
            person = Person()
            person.set_id(id)
            person.set_erstellungszeitpunkt(erstellungszeitpunkt)
            person.set_name(name)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            person.set_alter(alter)
            person.set_studiengang(studiengang)
            person.set_wohnort(wohnort)
            person.set_semester(semester)
            person.set_profil_id(profil_id)
            result = person
        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None

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

        return result
from server.bo.Person import Person
from server.bo.Student import Student

p = Person()
p.set_id(1)
p.set_rolle(Person.ROLLE_DOZENT)
p.set_name("Peter Thies")
print(p)

s = Student()
s.set_id(2)
s.set_name("Daria")
print(s)
    def find_all(self):
        """Auslesen aller Personen aus der Datenbank

        :return Alle Person-Objekte im System
        """
        result = []

        cursor = self._connection.cursor()

        command = "SELECT id, name, email, google_user_id, rolle FROM personen"

        cursor.execute(command)
        tuples = cursor.fetchall()

        for (id, name, email, google_user_id, rolle) in tuples:
            person = Person()
            person.set_id(id)
            person.set_name(name)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            if rolle == "Dozent":
                person.set_rolle(Person.ROLLE_DOZENT)
            elif rolle == "Admin":
                person.set_rolle(Person.ROLLE_ADMIN)

            result.append(person)

        self._connection.commit()
        cursor.close()

        return result
    def find_by_google_user_id(self, google_user_id):
        """Suchen einer Person nach der übergebenen Google User ID. 

        :param google_user_id Google User ID einer Person aus der Datenbank
        :return Person-Objekt, welche mit der Google User ID übereinstimmt,
                None wenn kein Eintrag gefunden wurde
        """
        result = None

        cursor = self._connection.cursor()
        command = "SELECT id, name, email, google_user_id, rolle FROM personen WHERE google_user_id='{}'".format(
            google_user_id)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, name, email, google_user_id, rolle) = tuples[0]
            person = Person()
            person.set_id(id)
            person.set_name(name)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            if rolle == "Dozent":
                person.set_rolle(Person.ROLLE_DOZENT)
            elif rolle == "Admin":
                person.set_rolle(Person.ROLLE_ADMIN)
            result = person
        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None
        return result
示例#20
0
    def find_by_key(self, key: int):
        """Suchen einer Person mit gegebener Person-ID

        :param: key: Person ID, Primärschlüsselattribut
        :return: Ein einzelnes Person-Objekt mit gegebender Person ID, None bei nicht vorhandenem DB-Tupel
        """
        result = None
        cursor = self._cnx.cursor()
        command = (
            "SELECT id, erstellungszeitpunkt, `name`, email, google_user_id, `alter`, wohnort, studiengang, semester, "
            "profil_id FROM personen WHERE id={}".format(key))
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (
                id,
                erstellungszeitpunkt,
                name,
                email,
                google_user_id,
                alter,
                wohnort,
                studiengang,
                semester,
                profil_id,
            ) = tuples[0]
            person = Person()
            person.set_id(id)
            person.set_erstellungszeitpunkt(erstellungszeitpunkt)
            person.set_name(name)
            person.set_email(email)
            person.set_google_user_id(google_user_id)
            person.set_alter(alter)
            person.set_studiengang(studiengang)
            person.set_wohnort(wohnort)
            person.set_semester(semester)
            person.set_profil_id(profil_id)
            result = person
        except IndexError:
            """Der IndexError wird oben beim Zugriff auf tuples[0] auftreten, wenn der vorherige SELECT-Aufruf
            keine Tupel liefert, sondern tuples = cursor.fetchall() eine leere Sequenz zurück gibt."""
            result = None

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

        return result
    def create_person(self, creation_time, name, role, email, google_user_id):
        """Eine Person anlegen"""
        p = Person()
        p.set_id(1)
        p.set_creation_time(creation_time)
        p.set_name(name)
        p.set_role(role)
        p.set_email(email)
        p.set_google_user_id(google_user_id)

        with PersonMapper() as mapper:
            return mapper.insert(p)