def DELETE(self, id): super(Rennen, self).check_login() if self.user_allowed: rennen = RennenModel.find({"id": id}) if rennen is None: return json.dumps({ "success": False, "messages": "Fahrzeugklasse nicht vorhanden!" }) anmeldungen = Anmeldung.find({"rennId": rennen.data["id"]}, 10000) for a in anmeldungen: a.delete() stationen = Station.find({"rennId": rennen.data["id"]}, 10000) for s in stationen: s.delete() rennen.delete() return json.dumps({ "success": True }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def POST( self, bezeichnung, beschreibung, datum ): super(Rennen, self).check_login() if self.user_allowed: rennen = RennenModel() rennen.data["leitungId"] = User.logged_in_user.data["id"] rennen.data["bezeichnung"] = bezeichnung rennen.data["beschreibung"] = beschreibung rennen.data["datum"] = datum rennen.data["beendet"] = False if rennen.save(): return json.dumps({ "success": True, "data": rennen.data }) else: return json.dumps({ "success": False, "messages": rennen.required_fields_empty }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def GET(self, id=None): super(Rennen, self).check_login() if self.user_allowed: if User.logged_in_user.data["rolle"] == "leiter": if id is None: rennen = RennenModel.find({"leitungId": User.logged_in_user.data["id"], "beendet": 0}) else: rennen = RennenModel.find({"id": id, "leitungId": User.logged_in_user.data["id"], "beendet": 0}) else: if id is None: rennen = RennenModel.find({"beendet": 0}, 100000) else: rennen = RennenModel.find({"id": id, "beendet": 0}) return json.dumps({ "success": True, "rennen": ModelAbstract.get_data_of_objects(rennen) }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def POST(self, rennId, fahrzeugId): super(Anmeldungen, self).check_login() if self.user_allowed: rennen = Rennen.find({"id": rennId}) if rennen is None: return json.dumps({ "success": False, "message": "Rennen nicht gefunden!" }) fahrzeug = Fahrzeug.find({"id": fahrzeugId}) if fahrzeug is None: return json.dumps({ "success": False, "message": "Fahrzeug nicht gefunden!" }) existingAnmeldung = Anmeldung.find({ "fahrzeugId": fahrzeug.data["id"], "rennId": rennen.data["id"] }) if existingAnmeldung is not None: return json.dumps({ "success": False, "message": "Sie haben sich mit diesem Fahrzeug schon an diesem Rennen angemeldet!" }) anmeldung = Anmeldung() anmeldung.data["rennId"] = rennId anmeldung.data["fahrzeugId"] = fahrzeugId anmeldung.data["benutzerId"] = User.logged_in_user.data["id"] if anmeldung.save(): return json.dumps({"success": True, "data": anmeldung.data}) else: return json.dumps({ "success": False, "messages": anmeldung.required_fields_empty }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def POST( self, rennId, fahrzeugId ): super(Anmeldungen, self).check_login() if self.user_allowed: rennen = Rennen.find({"id": rennId}) if rennen is None: return json.dumps({ "success": False, "message": "Rennen nicht gefunden!" }) fahrzeug = Fahrzeug.find({"id": fahrzeugId}) if fahrzeug is None: return json.dumps({ "success": False, "message": "Fahrzeug nicht gefunden!" }) existingAnmeldung = Anmeldung.find({"fahrzeugId": fahrzeug.data["id"], "rennId": rennen.data["id"]}) if existingAnmeldung is not None: return json.dumps({ "success": False, "message": "Sie haben sich mit diesem Fahrzeug schon an diesem Rennen angemeldet!" }) anmeldung = Anmeldung() anmeldung.data["rennId"] = rennId anmeldung.data["fahrzeugId"] = fahrzeugId anmeldung.data["benutzerId"] = User.logged_in_user.data["id"] if anmeldung.save(): return json.dumps({ "success": True, "data": anmeldung.data }) else: return json.dumps({ "success": False, "messages": anmeldung.required_fields_empty }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def PUT( self, id, bezeichnung, beschreibung, datum ): super(Rennen, self).check_login() if self.user_allowed: rennen = RennenModel.find({"id": id}) if rennen is None: return json.dumps({ "success": False, "messages": "Fahrzeugklasse nicht vorhanden!" }) rennen.data["bezeichnung"] = bezeichnung rennen.data["beschreibung"] = beschreibung rennen.data["datum"] = datum if rennen.save(): return json.dumps({ "success": True, "data": rennen.data }) else: return json.dumps({ "success": False, "messages": rennen.required_fields_empty }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def POST( self, **kw ): super(Qualiergebnisse, self).check_login() if self.user_allowed: if "rennId" not in kw: return json.dumps({ "success": False, "message": "Rennen nicht vorhanden!" }) rennId = kw["rennId"] rennen = Rennen.find({"id": rennId}) if rennen is None: return json.dumps({ "success": False, "message": "Rennen nicht vorhanden!" }) real_erg = [] not_qualified_erg = [] anmeldungen = Anmeldung.find({"rennId": rennId}, 100000) for anmeldung in anmeldungen: status_key = "ergebnisse[" + anmeldung.data["id"] + "][status]" zeit_in_string_key = "ergebnisse[" + anmeldung.data["id"] + "][zeit_in_string]" zeit_in_millisekunden_key = "ergebnisse[" + anmeldung.data["id"] + "][zeit_in_millisekunden]" if status_key not in kw or zeit_in_string_key not in kw or zeit_in_millisekunden_key not in kw: return json.dumps({ "success": False, "message": "Jedes Fahrzeug muss eine Zeit erhalten oder disqualifiziert werden!" }) fahrzeug = Fahrzeug.find({"id": anmeldung.data["fahrzeugId"]}) fahrzeugklasse = Fahrzeugklasse.find({"id": fahrzeug.data["typ"]}) if fahrzeugklasse is None: return json.dumps({ "success": False, "message": "Eines der Fahrzeuge ist keiner Klasse angehörig und kann somit nicht am Rennen teilnehmen!" }) status = kw[status_key] if int(status) is not 2: if int(kw[zeit_in_millisekunden_key]) <= int(fahrzeugklasse.data["zeit_in_millisekunden"]): status = 1 else: status = 0 if int(status) is not 1: not_qualified_erg.append({ "fahrzeugId": anmeldung.data["fahrzeugId"], "status": status }) else: real_erg.append({ "fahrzeugId": anmeldung.data["fahrzeugId"], "zeit_in_string": kw[zeit_in_string_key], "zeit_in_millisekunden": kw[zeit_in_millisekunden_key], "status": status, "anmeldeId": anmeldung.data["id"] }) sorted_erg = sorted(real_erg, key=self.sort_ergebnisse) platz = 1 for ergebnis in sorted_erg: anmeldung = Anmeldung.find({"id": ergebnis["anmeldeId"]}) anmeldung.data["quali_platzierung"] = platz anmeldung.save() qualiergebnis = Qualiergebnis() qualiergebnis.data["zeit"] = ergebnis["zeit_in_string"] qualiergebnis.data["status"] = 1 qualiergebnis.data["rennId"] = rennId qualiergebnis.data["fahrzeugId"] = ergebnis["fahrzeugId"] qualiergebnis.data["platzierung"] = platz qualiergebnis.save() platz += 1 for nq_ergebnis in not_qualified_erg: qualiergebnis = Qualiergebnis() qualiergebnis.data["zeit"] = "60:60:999" qualiergebnis.data["status"] = nq_ergebnis["status"] qualiergebnis.data["rennId"] = rennId qualiergebnis.data["fahrzeugId"] = nq_ergebnis["fahrzeugId"] qualiergebnis.data["platzierung"] = 999 qualiergebnis.save() return json.dumps({ "success": True }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def POST(self, **kw): super(Qualiergebnisse, self).check_login() if self.user_allowed: if "rennId" not in kw: return json.dumps({ "success": False, "message": "Rennen nicht vorhanden!" }) rennId = kw["rennId"] rennen = Rennen.find({"id": rennId}) if rennen is None: return json.dumps({ "success": False, "message": "Rennen nicht vorhanden!" }) real_erg = [] not_qualified_erg = [] anmeldungen = Anmeldung.find({"rennId": rennId}, 100000) for anmeldung in anmeldungen: status_key = "ergebnisse[" + anmeldung.data["id"] + "][status]" zeit_in_string_key = "ergebnisse[" + anmeldung.data[ "id"] + "][zeit_in_string]" zeit_in_millisekunden_key = "ergebnisse[" + anmeldung.data[ "id"] + "][zeit_in_millisekunden]" if status_key not in kw or zeit_in_string_key not in kw or zeit_in_millisekunden_key not in kw: return json.dumps({ "success": False, "message": "Jedes Fahrzeug muss eine Zeit erhalten oder disqualifiziert werden!" }) fahrzeug = Fahrzeug.find({"id": anmeldung.data["fahrzeugId"]}) fahrzeugklasse = Fahrzeugklasse.find( {"id": fahrzeug.data["typ"]}) if fahrzeugklasse is None: return json.dumps({ "success": False, "message": "Eines der Fahrzeuge ist keiner Klasse angehörig und kann somit nicht am Rennen teilnehmen!" }) status = kw[status_key] if int(status) is not 2: if int(kw[zeit_in_millisekunden_key]) <= int( fahrzeugklasse.data["zeit_in_millisekunden"]): status = 1 else: status = 0 if int(status) is not 1: not_qualified_erg.append({ "fahrzeugId": anmeldung.data["fahrzeugId"], "status": status }) else: real_erg.append({ "fahrzeugId": anmeldung.data["fahrzeugId"], "zeit_in_string": kw[zeit_in_string_key], "zeit_in_millisekunden": kw[zeit_in_millisekunden_key], "status": status, "anmeldeId": anmeldung.data["id"] }) sorted_erg = sorted(real_erg, key=self.sort_ergebnisse) platz = 1 for ergebnis in sorted_erg: anmeldung = Anmeldung.find({"id": ergebnis["anmeldeId"]}) anmeldung.data["quali_platzierung"] = platz anmeldung.save() qualiergebnis = Qualiergebnis() qualiergebnis.data["zeit"] = ergebnis["zeit_in_string"] qualiergebnis.data["status"] = 1 qualiergebnis.data["rennId"] = rennId qualiergebnis.data["fahrzeugId"] = ergebnis["fahrzeugId"] qualiergebnis.data["platzierung"] = platz qualiergebnis.save() platz += 1 for nq_ergebnis in not_qualified_erg: qualiergebnis = Qualiergebnis() qualiergebnis.data["zeit"] = "60:60:999" qualiergebnis.data["status"] = nq_ergebnis["status"] qualiergebnis.data["rennId"] = rennId qualiergebnis.data["fahrzeugId"] = nq_ergebnis["fahrzeugId"] qualiergebnis.data["platzierung"] = 999 qualiergebnis.save() return json.dumps({"success": True}) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })
def POST( self, **kw ): super(Rennergebnisse, self).check_login() if self.user_allowed: if "rennId" not in kw: return json.dumps({ "success": False, "message": "Rennen nicht vorhanden!" }) rennId = kw["rennId"] rennen = Rennen.find({"id": rennId}) if rennen is None: return json.dumps({ "success": False, "message": "Rennen nicht vorhanden!" }) if "ergebnisse" not in kw: return json.dumps({ "success": False, "message": "Irgendetwas ist schief gelaufen. Versuchen Sie es erneut." }) ergebnisse = kw["ergebnisse"] stationen = Station.find({"rennId": rennId}, 100000) anmeldungen = Anmeldung.find({"rennId": rennId}, 100000) ergebnisse_json = json.loads(ergebnisse) real_erg = [] renn_erg_asso = {} renn_erg = [] renn_erg_not_correct = [] disquali_erg = [] for anmeldung in anmeldungen: if anmeldung.data["id"] not in ergebnisse_json: return json.dumps({ "success": False, "message": "Jedes Fahrzeug muss Zeiten erhalten oder disqualifiziert werden! 1" }) fahrzeug = Fahrzeug.find({"id": anmeldung.data["fahrzeugId"]}) fahrzeugklasse = Fahrzeugklasse.find({"id": fahrzeug.data["typ"]}) if fahrzeugklasse is None: return json.dumps({ "success": False, "message": "Eines der Fahrzeuge ist keiner Klasse angehörig und kann somit nicht am Rennen teilnehmen!" }) if int(ergebnisse_json[anmeldung.data["id"]]["disquali"]) == 0: for station in stationen: if station.data["id"] not in ergebnisse_json[anmeldung.data["id"]]["stationsErgebnisse"]: return json.dumps({ "success": False, "message": "Jedes Fahrzeug muss Zeiten erhalten oder disqualifiziert werden! 2" }) real_erg.append({ "fahrzeugId": anmeldung.data["fahrzeugId"], "zeit_in_string": ergebnisse_json[anmeldung.data["id"]]["stationsErgebnisse"][station.data["id"]]["zeit_in_string"], "zeit_in_millisekunden": ergebnisse_json[anmeldung.data["id"]]["stationsErgebnisse"][station.data["id"]]["zeit_in_millisekunden"], "stationId": station.data["id"] }) if anmeldung.data["id"] not in renn_erg_asso: renn_erg_asso[anmeldung.data["id"]] = { "zeit_in_millisekunden": int(ergebnisse_json[anmeldung.data["id"]]["stationsErgebnisse"][station.data["id"]]["zeit_in_millisekunden"]), "fahrzeugId": anmeldung.data["fahrzeugId"] } else: renn_erg_asso[anmeldung.data["id"]]["zeit_in_millisekunden"] += int(ergebnisse_json[anmeldung.data["id"]]["stationsErgebnisse"][station.data["id"]]["zeit_in_millisekunden"]) renn_erg_asso[anmeldung.data["id"]]["stationen_ok"] = int(ergebnisse_json[anmeldung.data["id"]]["stationen_ok"]) else: disquali_erg.append({ "fahrzeugId": anmeldung.data["fahrzeugId"] }) break for fId in renn_erg_asso: if int(renn_erg_asso[fId]["stationen_ok"]) is 0: renn_erg_not_correct.append({ "fahrzeugId": renn_erg_asso[fId]["fahrzeugId"] }) else: minuten = int(renn_erg_asso[fId]["zeit_in_millisekunden"] / 60000) rest = renn_erg_asso[fId]["zeit_in_millisekunden"] - (minuten * 60000) if rest > 9999: sekunden = str(rest)[:2] else: sekunden = str(rest)[:1] millisekunden = str(rest)[-3:] minuten = str(minuten) if len(minuten) < 2: minuten = "0" + minuten if len(sekunden) < 2: sekunden = "0" + sekunden renn_erg.append({ "fahrzeugId": renn_erg_asso[fId]["fahrzeugId"], "zeit_in_string": str(minuten) + ":" + str(sekunden) + ":" + str(millisekunden), "zeit_in_millisekunden": renn_erg_asso[fId]["zeit_in_millisekunden"] }) sorted_erg = sorted(renn_erg, key=self.sort_ergebnisse) platz = 1 for ergebnis in sorted_erg: rennergebnis = Rennergebnis() rennergebnis.data["zeit"] = ergebnis["zeit_in_string"] rennergebnis.data["fahrzeugId"] = ergebnis["fahrzeugId"] rennergebnis.data["rennId"] = rennId rennergebnis.data["status"] = 1 rennergebnis.data["platzierung"] = platz rennergebnis.data["stationen_ok"] = 1 rennergebnis.save() platz += 1 for ergebnis in disquali_erg: rennergebnis = Rennergebnis() rennergebnis.data["zeit"] = "60:60:999" rennergebnis.data["fahrzeugId"] = ergebnis["fahrzeugId"] rennergebnis.data["rennId"] = rennId rennergebnis.data["status"] = 0 rennergebnis.data["platzierung"] = 999 rennergebnis.data["stationen_ok"] = 1 rennergebnis.save() for ergebnis in renn_erg_not_correct: rennergebnis = Rennergebnis() rennergebnis.data["zeit"] = "60:60:999" rennergebnis.data["fahrzeugId"] = ergebnis["fahrzeugId"] rennergebnis.data["rennId"] = rennId rennergebnis.data["status"] = 1 rennergebnis.data["platzierung"] = 999 rennergebnis.data["stationen_ok"] = 0 rennergebnis.save() rennen.data["beendet"] = 1 rennen.save() return json.dumps({ "success": True }) return json.dumps({ "success": False, "message": "Aktion nicht erlaubt!" })