コード例 #1
0
ファイル: Rennen.py プロジェクト: Heddy147/ias
	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!"
		})
コード例 #2
0
ファイル: Rennen.py プロジェクト: Heddy147/ias
	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!"
		})
コード例 #3
0
ファイル: Rennen.py プロジェクト: Heddy147/ias
	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!"
		})
コード例 #4
0
ファイル: anmeldungen.py プロジェクト: Heddy147/ias
    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!"
        })
コード例 #5
0
ファイル: anmeldungen.py プロジェクト: Heddy147/ias
	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!"
		})
コード例 #6
0
ファイル: Rennen.py プロジェクト: Heddy147/ias
	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!"
		})
コード例 #7
0
ファイル: qualiergebnisse.py プロジェクト: Heddy147/ias
	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!"
		})
コード例 #8
0
ファイル: qualiergebnisse.py プロジェクト: Heddy147/ias
    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!"
        })
コード例 #9
0
ファイル: rennergebnisse.py プロジェクト: Heddy147/ias
	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!"
		})