def find_by_current_semester(self, current_semester): """Suchen eines Semester anhand vom Current Semester.""" result = [] cursor = self._cnx.cursor() command = "SELECT * FROM semester WHERE current_semester like '{}'".format( current_semester) cursor.execute(command) tuples = cursor.fetchall() if len(tuples) != 0: for (id, name, current_semester, create_time) in tuples: semester = Semester() semester.set_id(id) semester.set_name(name) semester.set_current_semester(current_semester) semester.set_create_time(create_time) result.append(semester) else: result = None self._cnx.commit() cursor.close() return result
def find_by_key(self, id): """Suchen eines Semesters mit vorgegebener ID-Nummer.""" result = [] cursor = self._cnx.cursor() command = "SELECT * FROM semester WHERE id like '{}'".format(id) cursor.execute(command) tuples = cursor.fetchall() if len(tuples) != 0: for (id, name, current_semester, create_time) in tuples: semester = Semester() semester.set_id(id) semester.set_name(name) semester.set_current_semester(current_semester) semester.set_create_time(create_time) result.append(semester) result = semester else: result = None self._cnx.commit() cursor.close() return result
def create_semester(self, name, current_semester): """Ein Semester anlegen""" semester = Semester() semester.set_name(name) semester.set_current_semester(current_semester) semester.set_id(1) with SemesterMapper() as mapper: return mapper.insert(semester)
def post(self): """Semester erstellen""" adm = ProjectAdministration() proposal = Semester.from_dict(api.payload) if proposal is not None: c = adm.create_semester(proposal.get_name(), proposal.get_current_semester()) return c, 200 else: return '', 500
def find_all(self): """Auslesen aller Semesters.""" result = [] cursor = self._cnx.cursor() command = "SELECT * FROM semester" cursor.execute(command) tuples = cursor.fetchall() for (id, name, current_semester, create_time) in tuples: semester = Semester() semester.set_id(id) semester.set_name(name) semester.set_current_semester(current_semester) semester.set_create_time(create_time) result.append(semester) self._cnx.commit() cursor.close() return result
def find_by_name(self, name): result = [] cursor = self._cnx.cursor() command = "SELECT * FROM semester WHERE name like '{}'".format(name) cursor.execute(command) tuples = cursor.fetchall() for (id, name, current_semester, create_time) in tuples: semester = Semester() semester.set_id(id) semester.set_name(name) semester.set_current_semester(current_semester) semester.set_create_time(create_time) result.append(semester) self._cnx.commit() cursor.close() return result
def put(self, id): """Semester wird aktualisiert""" adm = ProjectAdministration() semester = Semester.from_dict(api.payload) if semester is None: return "Semester konnte nicht geändert werden", 500 else: semester.set_id(id) adm.save_semester(semester) return "Semester wurde erfolgreich geändert", 200
def find_semester_of_student(self, id): """ finde alle Semester eines Studenten, in welcher er eine Teilnahme hat in der Datenbank :param id """ result = [] cursor = self._connection.cursor() command = "SELECT semester.id, semester.name FROM teilnahmen INNER JOIN projekte on teilnahmen.lehrangebot = projekte.id \ INNER JOIN semester on projekte.halbjahr = semester.id WHERE teilnahmen.teilnehmer ='{}'".format( id) cursor.execute(command) tuples = cursor.fetchall() filtered_tuples = list(set(tuples)) #entfernt doppelte Semester for (id, name) in filtered_tuples: semester = Semester() semester.set_id(id) semester.set_name(name) result.append(semester) self._connection.commit() cursor.close() return result
def find_by_id(self, id): """Eindeutiges Auslesen eines Semesters durch ID :param id :return Semester-Objekt, das der übergebenen ID entspricht oder None wenn DB-Tupel nicht vorhanden ist """ result = None cursor = self._connection.cursor() command = "SELECT id, name FROM semester WHERE id ='{}'".format(id) cursor.execute(command) tuples = cursor.fetchall() try: (id, name) = tuples[0] semester = Semester() semester.set_id(id) semester.set_name(name) result = semester 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._connection.commit() cursor.close() return result
def put(self, id): """Update eines bestimmten Semester-Objekts. """ adm = ProjectAdministration() sem = Semester.from_dict(api.payload) if sem is not None: sem.set_id(id) adm.save_semester(sem) return '', 200 else: return '', 500
def post (self): """Anlegen eines neuen Semester-Objekts.""" adm = ProjektAdministration() semester = Semester.from_dict(api.payload) if semester is not None: """ Wir verwenden semester des Proposals für die Erzeugung eines Modul-Objekts. Das serverseitig erzeugte Objekt ist das maßgebliche und wird auch dem Client zurückgegeben. """ m = adm.create_semester(semester) return m, 200 else: """ Wenn irgendetwas schiefgeht, dann geben wir nichts zurück und werfen einen Server-Fehler. """ return '', 500
def post(self): """Anlegen eines neuen Semester-Objekts. **ACHTUNG:** Wir fassen die vom Client gesendeten Daten als Vorschlag auf. So ist zum Beispiel die Vergabe der ID nicht Aufgabe des Clients. Selbst wenn der Client eine ID in dem Proposal vergeben sollte, so liegt es an der BankAdministration (Businesslogik), eine korrekte ID zu vergeben. *Das korrigierte Objekt wird schließlich zurückgegeben.* """ adm = ProjectAdministration() se = Semester.from_dict(api.payload) """RATSCHLAG: Prüfen Sie stets die Referenzen auf valide Werte, bevor Sie diese verwenden!""" if se is not None: """ Wir verwenden id, evaluator, to_be_assessed, passed, grade des Proposals für die Erzeugung eines Customer-Objekts. Das serverseitig erzeugte Objekt ist das maßgebliche und wird auch dem Client zurückgegeben. """ s = adm.create_semester(se.get_creation_time(), se.get_name(), se.get_start(), se.get_end()) return s, 200 else: # Wenn irgendetwas schiefgeht, dann geben wir nichts zurück und werfen einen Server-Fehler. return '', 500
def find_all(self): """Auslesen aller vorhandenen Semester :return Eine Sammlung aller Semester-Objekten. """ result = [] cursor = self._connection.cursor() command = "SELECT id, name FROM semester" cursor.execute(command) tuples = cursor.fetchall() for (id, name) in tuples: semester = Semester() semester.set_id(id) semester.set_name(name) result.append(semester) self._connection.commit() cursor.close() return result
def find_by_id(self, id): #suche semester nach id result = None cursor = self._cnx.cursor() command = "SELECT id, creation_time, name, start, end FROM semester WHERE id={}".format(id) cursor.execute(command) tuples = cursor.fetchall() if tuples[0] is not None: (id, creation_time, name, start, end) = tuples[0] semester = Semester() semester.set_id(id) semester.set_creation_time(creation_time) semester.set_name(name) semester.set_start(start) semester.set_end(end) result = semester self._cnx.commit() cursor.close() return result
self._cnx.commit() cursor.close() """Zu Testzwecken können wir diese Datei bei Bedarf auch ausführen, um die grundsätzliche Funktion zu überprüfen. Anmerkung: Nicht professionell aber hilfreich...""" if (__name__ == "__main__"): with SemesterMapper() as mapper: result = mapper.delete(2020) for p in result: print(p) if (__name__ == "__main__"): s = Semester() s.set_id(2023) s.set_creation_time(2023-12-10) s.set_name("SSSasfsfaf") s.set_start(2023-10-10) s.set_end(2023-10-10) with SemesterMapper() as mapper: result = mapper.update(s)
def find_all(self): result = [] cursor = self._cnx.cursor() cursor.execute("SELECT id, creation_time, start, end, name FROM semester") tuples = cursor.fetchall() for (id, creation_time, start, end, name) in tuples: semester = Semester() semester.set_id(id) semester.set_creation_time(creation_time) semester.set_name(name) semester.set_start(start) semester.set_end(end) result.append(semester) self._cnx.commit() cursor.close() return result
def create_semester(self, creation_time, name, start, end): """Ein Semester anlegen""" semester = Semester() semester.set_creation_time(creation_time) semester.set_name(name) semester.set_start(start) semester.set_end(end) semester.set_id(1) with SemesterMapper() as mapper: return mapper.insert(semester)